Discussion:
Beschreibung wo / wie auslesen?
(zu alt für eine Antwort)
Stefan Theobald
2007-07-04 12:44:01 UTC
Permalink
Hallo,

ich kann zu einem Object (Abfrage, Macro usw.) im ACCESS 2000 / 2003 doch
eine Beschreibung eintragen. Wie kann ich diesen Wert auslesen?
In der Systemtabelle MsysObjects finde ich zwar den Namen und das Anlage-
bzw. Änderungsdatum aber nicht die Beschreibung.

Wo versteckt sich die? Wie komme ich an diese Beschreibung.

Gruß
Stefan
Gunter Avenius
2007-07-04 12:53:29 UTC
Permalink
Hallo Stefan,
Post by Stefan Theobald
ich kann zu einem Object (Abfrage, Macro usw.) im ACCESS 2000 /
2003 doch eine Beschreibung eintragen. Wie kann ich diesen Wert
auslesen?
In der Systemtabelle MsysObjects finde ich zwar den Namen und das
Anlage- bzw. Änderungsdatum aber nicht die Beschreibung.
Wo versteckt sich die? Wie komme ich an diese Beschreibung.
http://groups.google.de/group/microsoft.public.de.access/browse_thread/thread/3c880ed2a375187a

http://groups.google.com/group/microsoft.public.de.access/browse_frm/thread/15e34f2c874d4e52/1a7086ca7b701ac2
--
Gruß
Gunter
_________________________________________________
10. Access-Entwickler-Konferenz (AEK)
Nürnberg 6./7.10.2007 und 20./21.10.2007
http://www.donkarl.com/?AEK
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de
Stefan Theobald
2007-07-04 13:40:03 UTC
Permalink
Hallo Gunter,

gibt es keine Möglichkeit es direkt aus einer Tabelle (mittels SELECT)
auszulesen wie bei den Namen, die ich mir auch mit einem Select aus den
MSysObjects holen kann?


Gruß
Stefan
Post by Gunter Avenius
Hallo Stefan,
Post by Stefan Theobald
ich kann zu einem Object (Abfrage, Macro usw.) im ACCESS 2000 /
2003 doch eine Beschreibung eintragen. Wie kann ich diesen Wert
auslesen?
In der Systemtabelle MsysObjects finde ich zwar den Namen und das
Anlage- bzw. Änderungsdatum aber nicht die Beschreibung.
Wo versteckt sich die? Wie komme ich an diese Beschreibung.
http://groups.google.de/group/microsoft.public.de.access/browse_thread/thread/3c880ed2a375187a
http://groups.google.com/group/microsoft.public.de.access/browse_frm/thread/15e34f2c874d4e52/1a7086ca7b701ac2
--
Gruß
Gunter
_________________________________________________
10. Access-Entwickler-Konferenz (AEK)
Nürnberg 6./7.10.2007 und 20./21.10.2007
http://www.donkarl.com/?AEK
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de
Karl Donaubauer
2007-07-04 14:10:41 UTC
Permalink
Post by Stefan Theobald
Post by Gunter Avenius
Post by Stefan Theobald
ich kann zu einem Object (Abfrage, Macro usw.) im ACCESS 2000 /
2003 doch eine Beschreibung eintragen. Wie kann ich diesen Wert
auslesen?
In der Systemtabelle MsysObjects finde ich zwar den Namen und das
Anlage- bzw. Änderungsdatum aber nicht die Beschreibung.
Wo versteckt sich die? Wie komme ich an diese Beschreibung.
http://groups.google.de/group/microsoft.public.de.access/browse_thread/thread/3c880ed2a375187a
http://groups.google.com/group/microsoft.public.de.access/browse_frm/thread/15e34f2c874d4e52/1a7086ca7b701ac2
...
gibt es keine Möglichkeit es direkt aus einer Tabelle (mittels SELECT)
auszulesen wie bei den Namen, die ich mir auch mit einem Select aus
den MSysObjects holen kann?
Naa.
--
cu
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com + Info zur
Access-Entwickler-Konferenz (AEK10) im Oktober in Nürnberg
Gunter Avenius
2007-07-04 14:22:10 UTC
Permalink
Hallo Stefan,
Post by Stefan Theobald
gibt es keine Möglichkeit es direkt aus einer Tabelle (mittels
SELECT) auszulesen wie bei den Namen, die ich mir auch mit einem
Select aus den MSysObjects holen kann?
Nein
--
Gruß
Gunter
_________________________________________________
10. Access-Entwickler-Konferenz (AEK)
Nürnberg 6./7.10.2007 und 20./21.10.2007
http://www.donkarl.com/?AEK
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de
Stefan Theobald
2007-07-04 15:57:57 UTC
Permalink
schade! - Ist etwas unlogisch, da es doch sonst die Systemtabelle mit Infos
gibt!


Gruß
Stefan
Post by Gunter Avenius
Hallo Stefan,
Post by Stefan Theobald
gibt es keine Möglichkeit es direkt aus einer Tabelle (mittels
SELECT) auszulesen wie bei den Namen, die ich mir auch mit einem
Select aus den MSysObjects holen kann?
Nein
--
Gruß
Gunter
_________________________________________________
10. Access-Entwickler-Konferenz (AEK)
Nürnberg 6./7.10.2007 und 20./21.10.2007
http://www.donkarl.com/?AEK
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de
Mark Doerbandt
2007-07-04 16:05:49 UTC
Permalink
Hallo, Stefan,
Post by Stefan Theobald
Ist etwas unlogisch, da es doch sonst
die Systemtabelle mit Infos gibt!
nein, die Systemtabelle ist nur eine interne, /undokumentierte/
Struktur, von deren Verwendung ich grundsaetzlich abrate. Es gibt doch
eine definierte API, was spricht gegen deren Nutzung?

Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.
Thomas Möller
2007-07-04 16:14:06 UTC
Permalink
Hallo Stefan,
Post by Stefan Theobald
Post by Stefan Theobald
gibt es keine Möglichkeit es direkt aus einer Tabelle (mittels
SELECT) auszulesen wie bei den Namen, die ich mir auch mit einem
Select aus den MSysObjects holen kann?
Nein
schade! - Ist etwas unlogisch, da es doch sonst die Systemtabelle mit
Infos gibt!
die Properties werden nicht in den Systemtabellen gespeichert. Das
kannst Du selber testen:

Am besten nimmst Du für diesen Test eine neue, leere Datenbank. Dort
legst Du eine neue Tabelle an. In diese fügst Du ein Feld ein. Dann
fügst Du die Beschreibung ein und speicherst das ganze.

Jetzt blendest Du Dir alle Systemtabellen ein (Extras / Optionen /
Ansicht / Anzeigen / Systemobjekte).
Die jetzt eingeblendeten Systemtabellen erkennst Du am Präfix "MSys".

Nun kannst Du alle Felder in allen Systemtabellen nach der von Dir
eingegebenen Beschreibung durchsuchen. Keine Angst, so viele sind das
nicht. ;-)

CU
--
Thomas

Homepage: www.Team-Moeller.de
Mark Doerbandt
2007-07-04 16:49:55 UTC
Permalink
Hallo, Thomas,
Post by Thomas Möller
die Properties werden nicht in den Systemtabellen gespeichert.
das ist falsch. LvProp enthaelt die Beschreibung.

Sub DebugPrintLvProp()
Dim rs As Object
Set rs = CurrentDb.OpenRecordset( _
"SELECT * FROM MSysObjects WHERE ID=24", 4)
Debug.Print Nz(rs("LvProp"), "")
rs.Close
Set rs = Nothing
End Sub

(24 ist die ID meiner Tabelle).

Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.
Thomas Möller
2007-07-04 17:32:07 UTC
Permalink
Hallo Mark,
Post by Mark Doerbandt
Post by Thomas Möller
die Properties werden nicht in den Systemtabellen gespeichert.
das ist falsch. LvProp enthaelt die Beschreibung.
Sub DebugPrintLvProp()
Dim rs As Object
Set rs = CurrentDb.OpenRecordset( _
"SELECT * FROM MSysObjects WHERE ID=24", 4)
Debug.Print Nz(rs("LvProp"), "")
rs.Close
Set rs = Nothing
End Sub
(24 ist die ID meiner Tabelle).
Bei mir scheint das nicht zu funktionieren. Ich habe es gerade
ausprobiert.

Meine Beschreibung lautet:

XXX Beschreibung YYY


Deine Funktion liefert folgendes Ergebnis:

?2?
?ValidationRuleValidationTextOrientation FilterOrderByOrderByOnDefaultViewColumnWidthColumnOrderColumnHiddenDescription FormatInputMaskCaptionDefaultValueRequiredAllowZeroLengthDisplayControlIMEModeIMESentenceMode$UnicodeCompressionSmartTagsW
 ?? ?A ??A????? ???????????? ???? A? ??????? ????? ?? ? ?A
a?A?AA
´m ??A?A` a

Bei mir Läuft Access 2003. Die Datenbank ist im Dateiformat Access 2000
gespeichert.

CU
--
Thomas

Homepage: www.Team-Moeller.de
Karl Donaubauer
2007-07-04 17:57:56 UTC
Permalink
Hallo, Thomas!
Post by Thomas Möller
Post by Mark Doerbandt
Post by Thomas Möller
die Properties werden nicht in den Systemtabellen gespeichert.
das ist falsch. LvProp enthaelt die Beschreibung.
Sub DebugPrintLvProp()
Dim rs As Object
Set rs = CurrentDb.OpenRecordset( _
"SELECT * FROM MSysObjects WHERE ID=24", 4)
Debug.Print Nz(rs("LvProp"), "")
rs.Close
Set rs = Nothing
End Sub
(24 ist die ID meiner Tabelle).
Bei mir scheint das nicht zu funktionieren. Ich habe es gerade
ausprobiert.
XXX Beschreibung YYY
?2?
?ValidationRuleValidationTextOrientation
FilterOrderByOrderByOnDefaultViewColumnWidthColumnOrderColumnHiddenDescription
FormatInputMaskCaptionDefaultValueRequiredAllowZeroLengthDisplayControlIMEModeIMESentenceMode$UnicodeCompressionSmartTagsW
 ?? ?A ??A????? ???????????? ???? A? ??????? ????? ?? ? ?A
a?A?AA
´m ??A?A` a
Bei mir Läuft Access 2003. Die Datenbank ist im Dateiformat Access 2000
gespeichert.
Naja "Description" hast du da ja drin. Von lesbar war keine Rede.
--
;-)
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com + Info zur
Access-Entwickler-Konferenz (AEK10) im Oktober in Nürnberg
Mark Doerbandt
2007-07-04 19:06:12 UTC
Permalink
Hallo, Thomas,
Post by Thomas Möller
Bei mir scheint das nicht zu funktionieren.
Ich habe es gerade ausprobiert.
wie gut, denn es ist ja undokumentiert! ;-)

Man muesste wahrscheinlich die Sonderzeichen auslassen, aber am Ende
der Zeichenkette stand bei mir tatsaechlich im Klartext:

Das ist eine Beschreibung...

Maile mir doch mal Deine DB.

Gruss - Mark
Thomas Möller
2007-07-04 20:10:38 UTC
Permalink
Hallo Mark,
Post by Mark Doerbandt
Man muesste wahrscheinlich die Sonderzeichen auslassen, aber am Ende
Das ist eine Beschreibung...
Maile mir doch mal Deine DB.
Du hast Post.


;-)
--
Thomas

Homepage: www.Team-Moeller.de
Mark Doerbandt
2007-07-04 21:11:55 UTC
Permalink
Hallo, Thomas,
Post by Thomas Möller
Du hast Post.
jo, aber wo ist Deine Beschreibung? Also ich trage meine im
Tabellenentwurf hinten beim Feld ein. ;-) Und Du?

Gruss - Mark
Karl Donaubauer
2007-07-04 22:34:07 UTC
Permalink
Hallo, Mark!
Post by Mark Doerbandt
Post by Thomas Möller
Du hast Post.
jo, aber wo ist Deine Beschreibung? Also ich trage meine im
Tabellenentwurf hinten beim Feld ein. ;-) Und Du?
Dann hast du eine Tabellenfeld-Beschreibung eingetragen,
keine Access-Objekt-Beschreibung.

Zu der kommt man im DB-Fenster per rechtem Mausklick auf
das Objekt und dann Kontextmenüpunkt "Eigenschaften".
--
cu
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com + Info zur
Access-Entwickler-Konferenz (AEK10) im Oktober in Nürnberg
Mark Doerbandt
2007-07-04 22:46:54 UTC
Permalink
Hallo, Karl,
Post by Karl Donaubauer
Dann hast du eine Tabellenfeld-Beschreibung eingetragen,
keine Access-Objekt-Beschreibung.
jo, das meinte ich ja auch! ;-)

Nein, ich habe mich von Thomas

TM> Am besten nimmst Du für diesen Test eine neue,
TM> leere Datenbank. Dort legst Du eine neue Tabelle an.
TM> In diese fügst Du ein Feld ein. Dann fügst Du die
TM> Beschreibung ein und speicherst das ganze.

verleiten lassen. Genau das habe ich doch gemacht...

Gruss - Mark
Karl Donaubauer
2007-07-04 23:03:05 UTC
Permalink
Hallo, Mark!
Post by Mark Doerbandt
Post by Karl Donaubauer
Dann hast du eine Tabellenfeld-Beschreibung eingetragen,
keine Access-Objekt-Beschreibung.
jo, das meinte ich ja auch! ;-)
Nein, ich habe mich von Thomas
Post by Karl Donaubauer
Am besten nimmst Du für diesen Test eine neue,
leere Datenbank. Dort legst Du eine neue Tabelle an.
In diese fügst Du ein Feld ein. Dann fügst Du die
Beschreibung ein und speicherst das ganze.
verleiten lassen. Genau das habe ich doch gemacht...
Dann seid ihr wohl beide bei einem leicht anderen Thema als
Post by Mark Doerbandt
...ich kann zu einem Object (Abfrage, Macro usw.) ...
...eine Beschreibung eintragen...
--
cu
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com + Info zur
Access-Entwickler-Konferenz (AEK10) im Oktober in Nürnberg
Mark Doerbandt
2007-07-04 23:04:47 UTC
Permalink
Hallo, Karl,
Post by Karl Donaubauer
Dann seid ihr wohl beide bei einem leicht anderen Thema als
Post by Mark Doerbandt
...ich kann zu einem Object (Abfrage, Macro usw.) ...
...eine Beschreibung eintragen...
jo, ich weiss - aber nicht wirklich, denn auch das steht in LvProp.
Ich krieg's schon noch raus!

Gruss - Mark
Mark Doerbandt
2007-07-05 00:37:53 UTC
Permalink
Hallo, Karl,
Post by Mark Doerbandt
...ich kann zu einem Object (Abfrage, Macro usw.) ...
...eine Beschreibung eintragen...
man muss nur richtig lesen... Der Kniff ist das Byte-Array, da Access
bei jeglicher Stringzuweisung durcheinander kommt.

Sub DebugLvProp()
Const cstrFilename As String = "C:\Temp\LvProp.txt"
Dim rsMSysObjects As Object
Dim bytBuffer() As Byte
Dim lngSize As Long
Dim intFile As Integer
Set rsMSysObjects = CurrentDb.OpenRecordset( _
"SELECT * FROM MSysObjects WHERE Name='Table1'", 4)
lngSize = rsMSysObjects("LvProp").FieldSize
ReDim bytBuffer(lngSize)
bytBuffer = rsMSysObjects("LvProp").GetChunk(0, lngSize)
rsMSysObjects.Close: Set rsMSysObjects = Nothing
intFile = FreeFile
Open cstrFilename For Binary As #intFile
Put #intFile, , bytBuffer
Close #intFile
FollowHyperlink cstrFilename
End Sub

Gruss - Mark
Thomas Möller
2007-07-05 05:48:38 UTC
Permalink
Hallo Mark,
Post by Mark Doerbandt
man muss nur richtig lesen... Der Kniff ist das Byte-Array, da Access
bei jeglicher Stringzuweisung durcheinander kommt.
Sub DebugLvProp()
Const cstrFilename As String = "C:\Temp\LvProp.txt"
Dim rsMSysObjects As Object
Dim bytBuffer() As Byte
Dim lngSize As Long
Dim intFile As Integer
Set rsMSysObjects = CurrentDb.OpenRecordset( _
"SELECT * FROM MSysObjects WHERE Name='Table1'", 4)
lngSize = rsMSysObjects("LvProp").FieldSize
ReDim bytBuffer(lngSize)
bytBuffer = rsMSysObjects("LvProp").GetChunk(0, lngSize)
rsMSysObjects.Close: Set rsMSysObjects = Nothing
intFile = FreeFile
Open cstrFilename For Binary As #intFile
Put #intFile, , bytBuffer
Close #intFile
FollowHyperlink cstrFilename
End Sub
Respekt! Das funktioniert wirklich prima. Meine Beschreibung wird
sichtbar.

Aber ich glaube, es lohnt nicht sich die Mühe zu machen, den Code so zu
erweitern, dass am Ende nur die Beschreibung übergeben wird. Dazu gibt
es ja schließlich schon den Zugriff über

CurrentDb.TableDefs(tbl.name).Properties("Description")


CU
--
Thomas

Homepage: www.Team-Moeller.de
Mark Doerbandt
2007-07-05 07:25:00 UTC
Permalink
Hallo, Thomas,
Post by Thomas Möller
Aber ich glaube, es lohnt nicht sich die Mühe zu machen, den Code so zu
erweitern, dass am Ende nur die Beschreibung übergeben wird. Dazu gibt
es ja schließlich schon den Zugriff über
CurrentDb.TableDefs(tbl.name).Properties("Description")
jo, mein Reden!

Gruss - Mark
Karl Donaubauer
2007-07-05 08:50:07 UTC
Permalink
Hallo, Mark!
Post by Mark Doerbandt
...
Der Kniff ist das Byte-Array, da Access
bei jeglicher Stringzuweisung durcheinander kommt.
Sub DebugLvProp()
...
Naja, VBA-Gewurschtel. Angefragt war an sich ein
SELECT-String wie bei den Objektnamen. Würdest du
das also bitte noch ein bissel umwandeln in reines SQL?
--
;-)
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com + Info zur
Access-Entwickler-Konferenz (AEK10) im Oktober in Nürnberg
Henry Habermacher
2007-07-05 11:28:11 UTC
Permalink
Hallo Karl
Post by Karl Donaubauer
Naja, VBA-Gewurschtel. Angefragt war an sich ein
SELECT-String wie bei den Objektnamen. Würdest du
das also bitte noch ein bissel umwandeln in reines SQL?
Das würde wohl noch in ein argeres gewurstel ausarten, den Long Binary in
Bytes zu zerlegen und dann als Buchstaben wieder zusammenzufügen ;-)

Gruss
Henry

Thomas Möller
2007-07-05 05:43:04 UTC
Permalink
Hallo Mark,
Post by Mark Doerbandt
Post by Karl Donaubauer
Dann hast du eine Tabellenfeld-Beschreibung eingetragen,
keine Access-Objekt-Beschreibung.
jo, das meinte ich ja auch! ;-)
Nein, ich habe mich von Thomas
Post by Karl Donaubauer
Am besten nimmst Du für diesen Test eine neue,
leere Datenbank. Dort legst Du eine neue Tabelle an.
In diese fügst Du ein Feld ein. Dann fügst Du die
Beschreibung ein und speicherst das ganze.
verleiten lassen. Genau das habe ich doch gemacht...
ich meinte auch, eine Access-Objekt-Beschreibung. Eine solche ist auch
in der Testdatenbank vorhanden.

Ich gebe zu, dass man meine Anleitung noch präziser hätte formulieren
können. ;-)
Ich denke aber, dass die Anleitung für den OP zielführend war.


CU
--
Thomas

Homepage: www.Team-Moeller.de
Henry Habermacher
2007-07-05 01:30:54 UTC
Permalink
Hallo Stefan
Post by Stefan Theobald
schade! - Ist etwas unlogisch, da es doch sonst die Systemtabelle mit
Infos gibt!
Diese Info steht vermutlich schon in den Systemtabellen drin, nur für dich
nicht so einfach erreichbar. Ich vermute das Feld lvprop beinhaltet die
Properties der Objekte, aber eben in einem unbekannten binären Format.

Du könntest Dir eine Funktion schreiben, welche das Description Property des
Objektes versucht auszulesen und dann diese zurückgibt. Dann kannst Du diese
in einer Query aufrufen.

Gruss
Henry
--
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com
Thomas Möller
2007-07-05 05:50:25 UTC
Permalink
Hallo Henry,
Post by Henry Habermacher
Post by Stefan Theobald
schade! - Ist etwas unlogisch, da es doch sonst die Systemtabelle mit
Infos gibt!
Diese Info steht vermutlich schon in den Systemtabellen drin, nur für
dich nicht so einfach erreichbar. Ich vermute das Feld lvprop
beinhaltet die Properties der Objekte, aber eben in einem unbekannten
binären Format.
Mark hat heute Nacht eine Funktion gepostet, die den Beweis für Deine
Vermutung antritt und die Beschreibung sichtbar macht.

CU
--
Thomas

Homepage: www.Team-Moeller.de
Loading...