webForumDet fria alternativet

Loop +tabell

9 svar · 389 visningar · startad av fredrik99

fredrik99Medlem sedan maj 2000426 inlägg
#1

Hur loopar man ut alla tabeller ur en databas?

/F

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Du kan använda ADOX t.ex. det finns ett färdigt skript om du tittar i skriptarkivet för ASP. EN del databaser har också kommandon eller vyer som man kan slå i. I det fallet är det alltså olika mellan DBMS.

Normalt sett så behöver man aldrig göra sådana saker i en vanlig applikation, så jag undrar bara varför du behöver det.

fredrik99Medlem sedan maj 2000426 inlägg
#3

http://webforum.aleborg.com/forum/showthread.php?s=&threadid=37445

Inte så lätt att ladda hem scriptet nu när wF ligger på en annan server :h

RinaldoMedlem sedan mars 20014 214 inlägg
#4

ahh... är inte säker men...

<%
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("din_db.mdb")
Set RS = Conn.OpenSchema(28)

Do Until RS.EOF
	If RS("Table_Name") = Request.QueryString("Tabell") Then
		PrimaryColumn = RS("Column_Name")
	End If
	RS.MoveNext
Loop

If Len(Request.QueryString("Tabell")) > 0 Then
	Set RSTyp = Conn.Execute("Select " & PrimaryColumn &" From " & Request.QueryString("Tabell"))
	PrimaryColumnDataType = RSTyp(PrimaryColumn).Type	
End If
%>
Tabeller

<%
'Set objADOXDatabase = Server.CreateObject("ADOX.Catalog") 
'objADOXDatabase.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../data/db.mdb")

'For Each objTable in objADOXDatabase.Tables
'  Response.Write objTable.Name & "<br>"
'Next
%>

				<% 
				Set Connect = Server.CreateObject("ADODB.Connection")
				MdbFilePath = Server.MapPath("din_db.mdb")
				Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
				
				Set RecSet = Connect.OpenSchema(20)

				Do while Not RecSet.EOF 
					If Trim(RecSet("TABLE_TYPE")) = "TABLE" Then
						If Request.QueryString("Tabell") = RecSet("Table_Name") Then
							Selected = "Selected"
						Else
							Selected = ""
						End If
						
						Response.Write " " & RecSet.Fields("TABLE_NAME") & " " & VbCrLf
					End If

RecSet.MoveNext
Loop 
set conn = nothing
close.conn

				%>
fredrik99Medlem sedan maj 2000426 inlägg
#5

Så mycket kod för att loopa ut tabellerna i en databas? Du skojar :e

RinaldoMedlem sedan mars 20014 214 inlägg
#6

hmm... ja... kanske det. Har inte testar :)

PatrikBMedlem sedan mars 20002 836 inlägg
#7

Denna kod räcker för att endast lista tabellerna i databasen:

<%
Set objADOXDatabase = Server.CreateObject("ADOX.Catalog") 
	objADOXDatabase.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../data/db.mdb")

	For Each objTable in objADOXDatabase.Tables
		Response.Write objTable.Name & "<br>"
	Next

Set objADOXDatabase = Nothing
%>

cya,
PatrikB

fredrik99Medlem sedan maj 2000426 inlägg
#8

Tack :e

Jag fick upp tabellerna PLUS dessa:

MSysAccessObjects
MSysACEs
MSysObjects
MSysQueries
MSysRelationships

Finns det inte något sätt att ta bort dem?

PatrikBMedlem sedan mars 20002 836 inlägg
#9
<%
Set objADOXDatabase = Server.CreateObject("ADOX.Catalog") 
	objADOXDatabase.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../data/db.mdb")

	For Each objTable in objADOXDatabase.Tables
		strTableName = objTable.Name
		If Left(strTableName,4) <> "MSys" Then
			Response.Write objTable.Name & "<br>"
		End If
	Next

Set objADOXDatabase = Nothing
%>

cya,
PatrikB

fredrik99Medlem sedan maj 2000426 inlägg
#10

Tackar :e :e :e

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