Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Feldgröße Abfrage Access

Frage Entwicklung Datenbanken

Mitglied: AMStyles

AMStyles (Level 1) - Jetzt verbinden

23.04.2012 um 11:50 Uhr, 6772 Aufrufe, 6 Kommentare

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

01.
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
Mitglied: mak-xxl
24.04.2012 um 08:18 Uhr
Moin AMStyles,

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
Bitte warten ..
Mitglied: AMStyles
24.04.2012 um 08:55 Uhr
Hallo mak-xxl ,

vielen Dank für deine Antwort.
Ich habe leider nur über SQL Zugriff auf diese Datei, so interne Sachen wie VBA o. ä. sind leider nicht möglich.

Grüße,
AMStyles
Bitte warten ..
Mitglied: mak-xxl
24.04.2012 um 09:12 Uhr
Moin AMStyles,

Zitat von AMStyles:
... Ich habe leider nur über SQL Zugriff auf diese Datei ...

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
Bitte warten ..
Mitglied: Biber
24.04.2012 um 09:29 Uhr
Moin AMStyles,

ergänzend zu mak-xxls SELECT-Ansatz noch der Hinweis auf die (evtl abweichende) Byte-Länge
01.
SELECT Max(Len([deinFeldName)) AS Maxlen, Max(LenB([deinFeldName])) as MaxLenB 
02.
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
Bitte warten ..
Mitglied: AMStyles
24.04.2012 um 11:29 Uhr
Hi Bibel,

man kann unter Access beispielsweise bei einem Text die Feldgröße angeben.
Diese möchte ich via SQL Skript auslesen.

Also ich möchte NICHT wissen dass der Inhalt des Datenfelds eine Textlänge von x Zeichen hat, sondern die allgemeine Feldgröße der Spalte.

Grüße,
AMStyles
Bitte warten ..
Mitglied: Biber
25.04.2012 um 10:32 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Datenbanken
gelöst Access 2010 Abfrage erster Werktag (10)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst Access 2010 komplizierte Abfrage (3)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Microsoft Office
Access Abfrage Sotieren (2)

Frage von charmeur zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (22)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...