Feldgröße Abfrage Access
Guten Tag,
ich möchte via SQL eine Abfrage erstellen, die mir die Feld Länge einer Spalte zurückgibt.
Auf einem SQL Server funktioniert das so
Wie kann ich dasselbe Ergebnis bei einer Access Datei erziehen?
Grüße,
AMStyles
ich möchte via SQL eine Abfrage erstellen, die mir die Feld Länge einer Spalte zurückgibt.
Auf einem SQL Server funktioniert das so
SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.columns where TABLE_NAME = 'TabellenName' AND COLUMN_NAME ='SpaltenName'
Wie kann ich dasselbe Ergebnis bei einer Access Datei erziehen?
Grüße,
AMStyles
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 183955
Url: https://administrator.de/contentid/183955
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
Moin AMStyles,
ich postuliere mal, dass Du den Zugriff per internem Access-VBA meinst, wenn, dann innerhalb eines Recordsets mit:
In Zeiten von UTF8/16 ist es aber besser, die Bytegröße eines Feldes abzufragen:
Falls es von außerhalb auf eine Access-DB sein soll (i.e. per VB):
Freundliche Grüße von der Insel - Mario
ich postuliere mal, dass Du den Zugriff per internem Access-VBA meinst, wenn, dann innerhalb eines Recordsets mit:
...
retVal = Len(strField)
...
In Zeiten von UTF8/16 ist es aber besser, die Bytegröße eines Feldes abzufragen:
...
Set db = DBEngine(0)(0)
Set td = db.TableDefs(strTable)
Set fd = td.Fields(strField)
retVal = fd.FieldSize [.Size]
...
Falls es von außerhalb auf eine Access-DB sein soll (i.e. per VB):
...
Set DB = DBEngine.OpenDataBase(strDBName), False, False)
retVal = DB.TableDefs(strTable).Fields(strField).Size
...
Freundliche Grüße von der Insel - Mario
Moin AMStyles,
Und Code dazu hast Du doch bereits notiert ...
Da ich aber oben schon raten musste - was möchtest Du eigentlich wissen?
Wie man extern auf eine Access-DB zugreift (ohne SQL, aber mit VB), ist oben skizziert - und gibt die Länge eines Feldes zurück. Das Ganze geht auch aus Office-VBA heraus etc. pp. Und nur(?) SQL - irgendwas anderes geht immer ...
PS: Falls noch ein anderes SQL-Statement als Anregung dienen soll:
Freundliche Grüße von der Insel - Mario
Und Code dazu hast Du doch bereits notiert ...
Da ich aber oben schon raten musste - was möchtest Du eigentlich wissen?
Wie man extern auf eine Access-DB zugreift (ohne SQL, aber mit VB), ist oben skizziert - und gibt die Länge eines Feldes zurück. Das Ganze geht auch aus Office-VBA heraus etc. pp. Und nur(?) SQL - irgendwas anderes geht immer ...
PS: Falls noch ein anderes SQL-Statement als Anregung dienen soll:
SELECT Max(Len(strFieldName)) FROM strTableName
Freundliche Grüße von der Insel - Mario
Moin AMStyles,
ergänzend zu mak-xxls SELECT-Ansatz noch der Hinweis auf die (evtl abweichende) Byte-Länge
Wobei ich nicht abschätzen kann, ob du die "Feldlänge" eher zum Grid-auf-den-Schirm-malen brauchst oder für eine Import/Exportschnittstelle.
Zum Malen reicht natürlich der Stringlängenwert der Len()-Funktion.
Grüße
Biber
ergänzend zu mak-xxls SELECT-Ansatz noch der Hinweis auf die (evtl abweichende) Byte-Länge
SELECT Max(Len([deinFeldName)) AS Maxlen, Max(LenB([deinFeldName])) as MaxLenB
FROM [deineTabelle];
Wobei ich nicht abschätzen kann, ob du die "Feldlänge" eher zum Grid-auf-den-Schirm-malen brauchst oder für eine Import/Exportschnittstelle.
Zum Malen reicht natürlich der Stringlängenwert der Len()-Funktion.
Grüße
Biber
Moin AMStyles,
deinen Wunsch haben mak-xxl und ich schon verstanden.
Wir wollten es dir nur schonend beibringen.
Also, mal ganz ungeschminkt:
MS-Access hat und hatte in keiner Version Metadaten/Katologdaten, die
a) als Bonus-Giveaway für den zahlenden Kunden mit ausgeliefert wurden
b) via SQL abgefragt werden können. Wozu auch? SQL verwenden eigentlich nur Datenbanken...
c) und dokumentiert sind die MSysObject-Tabellen von den PraktikantInnen selbst schon gar nicht.
Speziell eine Tabelle, die vom Sinn her einer information_schema.columns oder einer sys.user_tab_columns oder einer syscat.syscolumns-Tabelle bei richtigen Datenbanken entspricht, gibt es bei MSAccess nicht.
Daher: keine Abfrage der Feldlänge eines String-Feldes per Jet-SQL oder ACE möglich.
Grüße
Biber
deinen Wunsch haben mak-xxl und ich schon verstanden.
Wir wollten es dir nur schonend beibringen.
Also, mal ganz ungeschminkt:
MS-Access hat und hatte in keiner Version Metadaten/Katologdaten, die
a) als Bonus-Giveaway für den zahlenden Kunden mit ausgeliefert wurden
b) via SQL abgefragt werden können. Wozu auch? SQL verwenden eigentlich nur Datenbanken...
c) und dokumentiert sind die MSysObject-Tabellen von den PraktikantInnen selbst schon gar nicht.
Speziell eine Tabelle, die vom Sinn her einer information_schema.columns oder einer sys.user_tab_columns oder einer syscat.syscolumns-Tabelle bei richtigen Datenbanken entspricht, gibt es bei MSAccess nicht.
Daher: keine Abfrage der Feldlänge eines String-Feldes per Jet-SQL oder ACE möglich.
Grüße
Biber