webForumDet fria alternativet

Tabeller?

16 svar · 475 visningar · startad av tomas21

tomas21Medlem sedan feb. 2003130 inlägg
#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.

voigtann1Medlem sedan juni 20019 519 inlägg
#2

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

tomas21Medlem 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.

solbulleMedlem 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.

PeeerMedlem sedan mars 20025 907 inlägg
tomas21Medlem 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.

@ndersMedlem sedan juni 200032 969 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

tomas21Medlem 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?

@ndersMedlem sedan juni 200032 969 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.

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

@ndersMedlem sedan juni 200032 969 inlägg
#11

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

tomas21Medlem 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.

tomas21Medlem 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
%>
@ndersMedlem sedan juni 200032 969 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

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

SebbeMedlem 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")
solbulleMedlem 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.

135 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)