webForumDet fria alternativet
Logga in / Bli medlem

Tabeller?

ASP

16 svar · 477 visningar · startad av tomas21

Medlem sedan feb. 2003130 inlägg
Trådstart#1

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.

Medlem sedan juni 20019 519 inlägg
#2

du menar själva "ID" etc etc eller värderna i alla tabeller?

Medlem sedan feb. 2003130 inlägg
#3

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.

Medlem sedan mars 20015 287 inlägg
#4
	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.

Medlem sedan mars 20025 907 inlägg
Medlem sedan feb. 2003130 inlägg
#6

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.

Medlem sedan juni 200032 967 inlägg
#7

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

Medlem sedan feb. 2003130 inlägg
#8

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?

Medlem sedan juni 200032 967 inlägg
#9

Stäng av friendly error messages / egna http-felmeddelanden i IE och försök igen. Då får du ett ordentligt felmeddelande.

Medlem sedan feb. 2003130 inlägg
#10

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")

Medlem sedan juni 200032 967 inlägg
#11

Kontrollera så sökvägen till databasfilen stämmer.

Medlem sedan feb. 2003130 inlägg
#12

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.

Medlem sedan feb. 2003130 inlägg
#13

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
%>
Medlem sedan juni 200032 967 inlägg
#14

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

Medlem sedan feb. 2003130 inlägg
#15

@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å.

Medlem sedan jan. 20032 285 inlägg
#16

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")
Medlem sedan mars 20015 287 inlägg
#17

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.

383 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
119 ms — deklarationer (db)
121 ms — hämta statistik (db)
136 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)