Avatar billede tgl Nybegynder
27. februar 2004 - 15:41 Der er 9 kommentarer og
1 løsning

hente database, tabeller og felttyper

Jeg har en asp-side hvor der skal være en selectboks indholdende navnene på de databaser jeg har på mit webhotel.

Når jeg væælger en db skal der følgende komme en oversigt med de tabller der er i db'en.

Ved klik på en af tabellerne skal jeg så kunne hente bl.a. antalfelter og felternes type for at kunne skrive dem ud i en tabel som input, textarea, checkbox o.s.v.

Jeg skal bruge et VB-script som kan dette ovenstående så jeg håber nogen har eller kender et sted hvor jeg kan finde et brugbart VB-script.
Avatar billede nute Nybegynder
27. februar 2004 - 15:59 #1
hvilken db er det ? access ? mySQL ? SQL-server ?
Avatar billede medions Nybegynder
27. februar 2004 - 16:04 #2
Dette er et ASP spørgsmål, så venligst luk det og opret det under ASP kategorien!

//>Rune
Avatar billede tgl Nybegynder
27. februar 2004 - 16:14 #3
medions >> jeg vil gerne have det i VB-script så derfor denne kategori.

nute >> access 2000
Avatar billede nute Nybegynder
27. februar 2004 - 17:14 #4
der er 2 ting du skal gøre inden dette kører:

1) denne setting skal være "checked"

Tools>Options>View>Show>System object

2) Tools>Security>User and Group Permissions
vælg MSysObjects fra listen og marker "Read data rights"

Derefter kan du køre scriptet:

<%@ language="vbscript" %>
<html><body>
<%
Dim ObjConn : Set objConn = Server.CreateObject( "ADODB.Connection" )
Dim strMode : strMode = Request.QueryString( "mode" )
Dim strDSN : strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="

' hent alle databaser
if( strMode = "" ) then
    Call listAllDB( Server.MapPath( "." ) )
Else
    Call openConn( Server.MapPath( Request.QueryString("db") ) )
    ' Hent alle tabeller
    if( strMode = "tables" ) Then
        if( Request("db") <> "" ) Then
            Call listAllTables( Request("db") )
        End if
    End if
    ' Hent alle felt i en tabel
    if( strMode = "fields" ) then
        if( Request( "table" ) <> "" ) Then
            Call listAllFields(Request("table"))
        End If
    End if
    Call closeConn()
end if

Sub openConn( strDB )
    strDSN = strDSN & strDB & ";"
    objConn.Open strDSN
End Sub

Sub CloseConn()
    objConn.Close
    Set objConn = Nothing
End Sub

Sub listAllDB( strFolder )
    Dim objFSO : Set objFSO = Server.CreateObject( "Scripting.FileSystemObject" )
    Dim objFolder
    Set objFolder = objFSO.GetFolder( strFolder )
   
    For each objFile in objFolder.Files
        If( Instr( objFile, ".mdb" ) = ( LEN( objFile ) - 3 ) ) Then
            Response.Write( "<a href=""?mode=tables&db=" & objFile.Name & """>" & objFile.Name & "</a><br>" )
        End If
    Next
End Sub

Sub listAllTables( strDBName )
    Dim strTablesSQL : strTablesSQL = "select Name from MSysObjects where type = 1 and left( Name, 4 ) <> ""MSys"""
   
    Set objTablesRS = objConn.Execute( strTablesSQL )
   
    while Not objTablesRS.EOF
        Response.Write( "<a href=""?mode=fields&db=" & strDBName & "&table=" & objTablesRS( "Name" ) & """>" & objTablesRS( "Name" ) & "</a><br>" )
        objTablesRS.MoveNext
    wend
    objTablesRS.Close
    Set objTablesRS = Nothing
End Sub

Sub listAllFields( strTableName )
    Dim strFieldsSQL : strFieldsSQL = "select * from " & strTableName
    Set objFieldsRS = objConn.Execute( strFieldsSQL )
   
    For each objField in objFieldsRS.Fields
        Response.write( objField.Name & " " & objField.Type & "<br>" )
    Next
    objFieldsRS.Close
    Set objFieldsRS = Nothing
End Sub
%>
</body>
</html>

for at finde ud af hvad du kan skrive ud i 'listAllFields' Sub'en, så kan du tage en kigger her:

http://msdn.microsoft.com/library/en-us/ado270/htm/mdmscadoproperties.asp?frame=true
Avatar billede tgl Nybegynder
27. februar 2004 - 20:06 #5
nute>> det ser fornuftigt ud, jeg vil se nærmere på det, men min hjerne er åbenbart ved at stå af for idag da jeg ikke lige kan gennemskue hvad du mener med de to punkter.

1) denne setting skal være "checked"

Tools>Options>View>Show>System object

2) Tools>Security>User and Group Permissions
vælg MSysObjects fra listen og marker "Read data rights"

Det ska lige nævnes at webhotellet ikke er mit, men et jeg har lejet mig ind på.
Avatar billede nute Nybegynder
27. februar 2004 - 20:12 #6
hehe... det er også ok ... jeg har hørt det er weekend, så det er vel en god grund til at du/din hjerne har stået af ;o]

det jeg mener, er at dine databaser skal "forberedes" på dette script. det gør du ved at åbne alle dine databaser (én efter én) og udføre de step som jeg har angivet.

når du har åbnet én database, så skal du finde Tools menuen, vælge Options, View, Show osv ... jeg aner desværre ikke hvad de hedder på dansk, da jeg altid bruger engelsk version selv. hvis du ikke finder ud af det, så kan jeg lave en lille serie med screendumps til dig :-]

/nute
Avatar billede tgl Nybegynder
02. marts 2004 - 10:42 #7
nute >> takker for hjælpen. Det var lige det jeg skulle bruge.

Hvordan tildeler jeg dig point?
Du har kun afgivet en kommentar...
---------------------------------------------------
NB! Har du også noget lignende kode til mySQL?
---------------------------------------------------
Avatar billede nute Nybegynder
02. marts 2004 - 10:53 #8
jeg kender desværre ikke mySQL ... :-(

/nute
Avatar billede tgl Nybegynder
02. marts 2004 - 12:10 #9
Ok, du får hermed dine velfortjente point.
Avatar billede nute Nybegynder
02. marts 2004 - 12:33 #10
takker :o]
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester