Hej!
Jag behöver en liten kodsnutt som skriver ut alla tabellers namn
från en access databas i asp sidan.
Alltså det jag vill göra är att jag tar alla tabeller i databasen och loopar igenom dom och sen skriver ut deras namn i asp sidan.
16 svar · 475 visningar · startad av tomas21
Hej!
Jag behöver en liten kodsnutt som skriver ut alla tabellers namn
från en access databas i asp sidan.
Alltså det jag vill göra är att jag tar alla tabeller i databasen och loopar igenom dom och sen skriver ut deras namn i asp sidan.
du menar själva "ID" etc etc eller värderna i alla tabeller?
Det jag menar är att jag vill skriva ut alla tabellers namn. Inte ID, Namn osv.
Ex) Tabell1, innehåller id, namn osv.
Tabell2, innehåller id, efternamn osv.
Tabell3, innehåller id, tel osv.
Jag vill då på den kompilerade asp sidan se:
Tabellerna som finns i databasen heter Tabell1, Tabell2, Tabell3.
Hoppas du förstår vad jag menar.
Set objADOX = Server.CreateObject("ADOX.Catalog")
objADOX.ActiveConnection = objConn
response.write "Tabellerna som finns i databasen heter "
For Each table in objADOX.Tables
If table.Type = "TABLE" Then
response.write table.Name & ", "
End If
Next
R/ samt innan den vanliga öppningen av db.
Men hur ser databaskopplingen ut för koden nedan:
Set objADOX = Server.CreateObject("ADOX.Catalog")
objADOX.ActiveConnection = objConn
response.write "Tabellerna som finns i databasen heter "
For Each table in objADOX.Tables
If table.Type = "TABLE" Then
response.write table.Name & ", "
End If
Next
Man brukar använda typ:
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("/secret/secret.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Alltså man måste komplettera koden ovan med Connect.Open koden. Jag har försökt på flera olika sätt men jag lyckas inte få det att fungera.
Det här borde funka:
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("/secret/secret.mdb")
Set objADOX = Server.CreateObject("ADOX.Catalog")
objADOX.ActiveConnection = [b]Connect[/b]
response.write "Tabellerna som finns i databasen heter "
For Each table in objADOX.Tables
If table.Type = "TABLE" Then
response.write table.Name & ", "
End If
Next
Mvh
Hej @nders jag har testat koden som du föreslog men det fungerar inte. Jag använder för tillfället brinkster eftersom min bärbara inte är hemma för tillfället. Det enda felmedelande jag får upp är: Sidan Kan Inte Visas samt HTTP 500 Internt serverfel
Kan det hända att det är brinkster som inte har stöd för ADOX eller?
Stäng av friendly error messages / egna http-felmeddelanden i IE och försök igen. Då får du ett ordentligt felmeddelande.
Ok då ser man mera av felmedelandet som är:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver]General error Unable to
open registry key 'Temporary (volatile) Jet DSN for process 0x81c
Thread 0x2e4 DBC 0xf1d3fd4 Jet'.
Error line 6
Line 6 är:
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &
Server.MapPath("/db/db1.mdb")
Kontrollera så sökvägen till databasfilen stämmer.
Databasen ligger i en mapp som heter db.
Eftersom asp filen ligger i rooten då borde man skriva /db/db1.mdb på mappath eller ska man skriva db/db1.mdb.
Tack så mycket för hjälpen grabbar det fungerar om man skriver koden så här:
<!-- #include file="adovbs.inc" -->
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &
Server.MapPath("db/db1.mdb")
Set objADOX = Server.CreateObject("ADOX.Catalog")
objADOX.ActiveConnection = Connect
response.write "Tabellerna som finns i databasen heter "
For Each table in objADOX.Tables
If table.Type = "TABLE" Then
response.write table.Name & ", "
End If
Next
%>
tomas21 skrev:
Databasen ligger i en mapp som heter db.
Eftersom asp filen ligger i rooten då borde man skriva /db/db1.mdb på mappath eller ska man skriva db/db1.mdb.
Det borde gå bra vilket som, men du kan ju prova utan slash också. :)
Är det samma rader för databaskopplingen som du använder på dina andra sidor som ligger i roten så bör det helt klart fungera.
mvh
@ander det fungerade inte med /db/db1.mdb MEN det gick bra med db/db1.mdb
Varför vet jag inte, jag ser det konstigt varför det inte skulle gå med /db/db1.mdb, det kan vara brinkster som har valt att det ska vara så.
Ja, på Brinkster ligger din mapp på webbhotellet i rooten. Så om du vill köra med slash i början skriver du:
Server.MapPath("/[medlemsnamn]/db/db1.mdb")
Fotnot: Använder du "alla" variablerna i denna:
<!-- #include file="adovbs.inc" -->
Annars tycker jag du ska ta bort den, eller deklarera just de variabler du använder direkt i skriptet.