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-Key: 103780

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

Printed on: April 19, 2024 at 15:04 o'clock

Member: Logan000
Logan000 Dec 11, 2008 at 08:34:55 (UTC)
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.
Member: DarXoR
DarXoR Dec 11, 2008 at 10:10:20 (UTC)
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
Member: Logan000
Logan000 Dec 11, 2008 at 10:33:21 (UTC)
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.
Member: DarXoR
DarXoR Dec 11, 2008 at 12:50:06 (UTC)
Goto Top
Überwältigend..... Dank Dir
Hat hervorragend geklappt.

Gruß Darxor
Member: Logan000
Logan000 Dec 11, 2008 at 12:53:16 (UTC)
Goto Top
Moin

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

Gruß L.
Member: Xenome
Xenome Feb 09, 2010 at 09:17:24 (UTC)
Goto Top
Was wäre denn der unterschied zwischen VBS und VBA?
Member: Biber
Biber Feb 09, 2010 at 09:47:15 (UTC)
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