darxor
Goto Top

Access Datenbankanalyse Feldname, Beschreibung etc.

Hallo mal wieder an alle die Helfer,

Ich würde gern eine Access 2002 Datei, (mdb) mit sehr vielen Tabellen analysieren. Ergebniss sollte sehr einfach sein.
So für Excel untereinander gedacht. Spalte 1: "Tabellenname"; Spalte 2: "Feldname" Spalte 3: "Felddatentyp" Spalte 4: "Feldgrösse". Wäre gut wenn man die ausführliche Analyse weglassen könnte, zu viel Daten die nicht von Bedeutung sind.

Gruß Darxor

Content-ID: 103780

Url: https://administrator.de/contentid/103780

Ausgedruckt am: 15.11.2024 um 01:11 Uhr

Logan000
Logan000 11.12.2008 um 09:34:55 Uhr
Goto Top
Moin Moin

Das solte in etwa das sein was du suchst:
Const connectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB1.mdb;Persist Security Info=False;"  
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3

Set objConnection = CreateObject("ADODB.Connection")  
Set objRecordset = CreateObject("ADODB.Recordset")  
Set objCat =CreateObject("ADOX.Catalog")  

' Datenbank öffnen  
objConnection.Open connectString	
Set objCat.ActiveConnection = objConnection
lngTabCount = objCat.Tables.Count          
'msgbox "Anz. Tabellen: " & lngTabCount	   

Set objExcel = CreateObject("Excel.Application")	' Excel Starten  
Set objWorkbook = objExcel.Workbooks.Add			' Neue Arbeitsmappe  
Set objWorkSheet = objWorkbook.Worksheets(1)		' Neue Tabelle  
objWorkSheet.Range("A1").Value = "Tabellenname"    
objWorkSheet.Range("B1").Value = "Feldname"    
objWorkSheet.Range("C1").Value = "Felddatentyp"    
objWorkSheet.Range("D1").Value = "Feldgrösse"    
y = 1 
For i = 0 to lngTabCount -1
	AktTab = objCat.Tables(i).Name
	msgbox "Tabelle: " & AktTab  
	lngColCount = objCat.Tables(AktTab).Columns.Count
	For x = 0 to lngColCount -1
		y = y + 1
		AktCol = objCat.Tables(AktTab).Columns(x).Name
		AktType = objCat.Tables(AktTab).Columns(x).Type 
		Select Case AktType
		Case 3
			AktTypeText = "Zahl"  
		case 202
			AktTypeText = "Text"  
		case 7
			AktTypeText = "Datum/Uhrzeit"  
		case 205
			AktTypeText = "OLE-Objekt"			  
		case else
		end select
		AktSize = objCat.Tables(AktTab).Columns(x).DefinedSize 
		objWorkSheet.Range("A" & y).Value = AktTab  
		objWorkSheet.Range("B" & y).Value = AktCol  
		if AktTypeText<>"" Then  
			objWorkSheet.Range("C" & y).Value = AktTypeText  
		else
			objWorkSheet.Range("C" & y).Value = "Typenumber: " & AktType  
		end if
		objWorkSheet.Range("D" & y).Value = AktSize  
		AktTypeText=""  
	next 
next 
objWorkbook.SaveAs "C:\TabellenStruktur.xls"  
objExcel.Visible = True 

Gruß L.
DarXoR
DarXoR 11.12.2008 um 11:10:20 Uhr
Goto Top
Ups... Guten Morgen L.,

Dank Dir schon mal Vorab für die schnelle Reaktion.
mmhh, den Code wo rein kopieren? Hab ihn in ein Macro kopiert ausgeführt, DAteiname angepasst.... Fehler. Welche Methode ist die Richtige?

Gruß Darxor
Logan000
Logan000 11.12.2008 um 11:33:21 Uhr
Goto Top
Moin

Ups. Sorry. Hab ich vergessen.
Das ist als VBS Skript gedacht.
Textdatei erstellen. Code reinkopieren und in MeinSkript.vbs umbenennen.

Gruß L.
DarXoR
DarXoR 11.12.2008 um 13:50:06 Uhr
Goto Top
Überwältigend..... Dank Dir
Hat hervorragend geklappt.

Gruß Darxor
Logan000
Logan000 11.12.2008 um 13:53:16 Uhr
Goto Top
Moin

Gern geschehen.
Sei doch so gut und setze den Beitrag auf erledigt.
Danke.

Gruß L.
Xenome
Xenome 09.02.2010 um 10:17:24 Uhr
Goto Top
Was wäre denn der unterschied zwischen VBS und VBA?
Biber
Biber 09.02.2010 um 10:47:15 Uhr
Goto Top
Moin Xenome,

Zitat von @Xenome:
Was wäre denn der unterschied zwischen VBS und VBA?

VBS läuft "standalone"... es gibt nur das Skript und alle Zeilen, Anweisungen und Variablen, die dort definiert sind.
Im Gegensatz dazu wird VBA ("Visual Basic for Applications") aus dem Kontext einer laufenden Office-Appz wie Excel, Word oder Access aufgerufen.
Und dann kann über "Verweise" auf Zusatzbibliotheken auf Referenzen, Objektstrukturen und Konstanten zugegriffen werden.
Ist allerdings aber auch primär dafür gedacht, dass es IMMER aus der jeweiligen Office-Appz aufgerufen wird (Office-Appz läuft).
Ein VBS-Schnipselchen kann aber auch laufen, wenn nicht mal Excel/Access etc installiert ist, geschweige denn läuft.

Logans Schnipsel hätte also den Vorteil, dass auch jemand, der noch nie ein Access in Farbe gesehen hat dennoch die Struktur einer Access-Mdb-Datei auslesen kann.

Grüße
Biber