Avatar billede Slettet bruger
17. december 2003 - 22:50 Der er 17 kommentarer og
1 løsning

Liste over tabeller i en access

Hej jeg har mig denne her database, så vil jeg gerne lave en asp side der laver en liste over hvilke tabeller der er i, er det muligt, hvis ja hvordan?
Avatar billede eagleeye Praktikant
17. december 2003 - 23:08 #1
Ja du kan download ASPADMIN v.2 herfra:
http://www.netsrac.dk/netsrac-dk/
Avatar billede netro Nybegynder
17. december 2003 - 23:08 #2
Hentet et andet sted. Har ikke afprøvet det.

<%
Dim rs, Conn, DSN, strTables, arTables

Const adSchemaTables = 20

Set rs = Server.CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("database.mdb")
Conn.Open DSN

Set rs = Conn.OpenSchema(adSchemaTables)

Do Until rs.EOF
    If rs("TABLE_TYPE") = "TABLE" Then
        strTables = strTables & rs("TABLE_NAME") & ","
    End If
rs.MoveNext
Loop

If Len(strTables) >= 1 Then
    strTables = Left(strTables, Len(strTables)-1)
End If

arTables = Split(strTables, ",")

For t = 0 To UBound(arTables)
    Response.Write arTables(t) & "<br>"
Next

%>
Avatar billede mm12010 Nybegynder
18. december 2003 - 15:48 #3
http://activedeveloper.dk/aspdigital/debugging/adodbstatus.asp

<%
//DB connect;

adSchemaTables=20;
rs=Server.CreateObject("ADODB.Recordset");
rs=conn.OpenSchema(adSchemaTables);
while(!rs.EOF){
    if(rs.Fields("TABLE_TYPE")=="TABLE"){
        Response.Write("<option value=\""+rs.Fields("TABLE_NAME")+"\">"+rs.Fields("TABLE_NAME")+"</option>");
        }
    rs.MoveNext();
    }
%>
Avatar billede Slettet bruger
18. december 2003 - 16:42 #4
netro det virker, ved du så hvordan man henter Feltnavn og felttype frem fra en tabel?
Avatar billede netro Nybegynder
18. december 2003 - 17:09 #5
Prøv følgende:

<%
Dim rs, Conn, DSN, strTables, arTables

Const adSchemaTables = 20

Set rs = Server.CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("database.mdb")
Conn.Open DSN

Set rs = Conn.OpenSchema(adSchemaTables)

Do Until rs.EOF
    If rs("TABLE_TYPE") = "TABLE" Then
        strTables = strTables & rs("TABLE_NAME") & ","
    End If
rs.MoveNext
Loop

If Len(strTables) >= 1 Then
    strTables = Left(strTables, Len(strTables)-1)
End If

arTables = Split(strTables, ",")

For t = 0 To UBound(arTables)
    Response.Write arTables(t) & "<br>"
    Set rs = Conn.Execute("Select * From " & arTables(t))
    For Each Felt In rs.Fields
      Response.Write "&nbsp;&nbsp;- " & Felt.Name & "<br>"
    Next   
Next
%>
Avatar billede netro Nybegynder
18. december 2003 - 17:12 #6
Jeg er lidt usikker mht. kolonnetype, men det skader jo aldrig at prøve med:

Response.Write "&nbsp;&nbsp;- " & Felt.Name & " (" & Felt.Type & ")<br>"
Avatar billede Slettet bruger
18. december 2003 - 17:51 #7
id(3)det siger den med (" & Felt.Type & ") og det der (3) giver ingen mening, så vil ikke ikke være mega flink at finde en der udsriver felttype så er du kanon og så får du pointene :)
Avatar billede netro Nybegynder
18. december 2003 - 18:16 #8
Efter hvad jeg umiddelbart kan se, repræsenterer talværdierne følgende:

1) TEXTYPETEXT
2) TEXTYPEINTEGER
3) TEXTYPEFLOAT

Får du noget ud af at skrive Felt.Description i øvrigt?
Avatar billede eagleeye Praktikant
18. december 2003 - 19:03 #9
I kan se typerne her:
http://www.w3schools.com/ado/prop_type.asp


Eller bruge denne funktion til at konvertere tallet til noget tekst.
    Function datatyper(dtype, charmax, nummax, numscale)
        If dtype = 0 Then tmp = "Empty"
        If dtype = 16 Then tmp = "TinyInt(" & nummax & ")"
        If dtype = 2 Then tmp = "SmallInt(" & nummax & ")"
        If dtype = 3 Then tmp = "Integer(" & nummax & ")"
        If dtype = 20 Then tmp = "BigInt(" & nummax & ")"
        If dtype = 17 Then tmp = "UnsignedTinyInt(" & nummax & ")"
        If dtype = 18 Then tmp = "UnsignedSmallInt(" & nummax & ")"
        If dtype = 19 Then tmp = "UnsignedInt(" & nummax & ")"
        If dtype = 21 Then tmp = "UnsignedBigInt(" & nummax & ")"
        If dtype = 4 Then tmp = "Single"
        If dtype = 5 Then tmp = "Double(" & nummax & "," & numscale & ")"
        If dtype = 6 Then tmp = "Currency(" & nummax & "," & numscale & ")"
        If dtype = 14 Then tmp = "Decimal(" & nummax & "," & numscale & ")"
        If dtype = 131 Then tmp = "Numeric(" & nummax & "," & numscale & ")"
        If dtype = 11 Then tmp = "Boolean"
        If dtype = 132 Then tmp = "UserDefined"
        If dtype = 12 Then tmp = "Variant"
        If dtype = 9 Then tmp = "Dispatch"
        If dtype = 13 Then tmp = "Unknown"
        If dtype = 72 Then tmp = "Guid"
        If dtype = 7 Then tmp = "Date"
        If dtype = 133 Then tmp = "DBDate"
        If dtype = 134 Then tmp = "DBTime"
        If dtype = 135 Then tmp = "Timestamp"
        If dtype = 8 Then tmp = "BSTR"
        If dtype = 129 Then tmp = "Char(" & charmax & ")"
        If dtype = 200 Then tmp = "VarChar(" & charmax & ")"
        If dtype = 201 Then tmp = "LongVarChar(" & charmax & ")"
        If dtype = 130 Then
            If int(charmax) <= 255 Then
                tmp = "VarChar(" & charmax & ")"
            Else
                tmp = "Longtext"           
            End if
        End if
        If dtype = 202 Then
            If int(charmax) <= 255 Then
                tmp = "VarChar(" & charmax & ")"
            Else
                tmp = "Longtext"           
            End if
        End if
        If dtype = 203 Then
            If int(charmax) <= 255 Then
                tmp = "LongVarChar(" & charmax & ")"
            Else
                tmp = "Longtext"           
            End if
        End if
        If dtype = 128 Then tmp = "Binary"
        If dtype = 204 Then tmp = "VarBinary"
        If dtype = 205 Then tmp = "LongVarBinary"
        datatyper = tmp
    End Function
Avatar billede netro Nybegynder
18. december 2003 - 19:09 #10
Ja, de skal jo bare læres udenad ;o)

Men nu har du så fået svar på spørgsmålet om typerne.
Avatar billede Slettet bruger
18. december 2003 - 20:59 #11
jeg har lagt den inde i For t =
men så kommer denne fejl Der er en syntaksfejl
/aspmyadmin/Felt.asp, line 36
Function datatyper(dtype, charmax, nummax, numscale)


Browsertype:
Avatar billede eagleeye Praktikant
18. december 2003 - 21:06 #12
Du skal kalde den med det rigtige antal parameter som er:

datatyper(Felt.Type, Felt.DefinedSize, Felt.Precision, Felt.NumericScale)
Avatar billede Slettet bruger
18. december 2003 - 21:10 #13
det hjælper jo ikke her for det er syntaks fejl i kan lige få hele kode:

<%
Dim rs, Conn, DSN, strTables, arTables

Const adSchemaTables = 20

Set rs = Server.CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("database.mdb")
Conn.Open DSN

Set rs = Conn.OpenSchema(adSchemaTables)

Do Until rs.EOF
    If rs("TABLE_TYPE") = "TABLE" Then
        strTables = strTables & rs("TABLE_NAME") & ","
    End If
rs.MoveNext
Loop

If Len(strTables) >= 1 Then
    strTables = Left(strTables, Len(strTables)-1)
End If

arTables = Split(strTables, ",")



For t = 0 To UBound(arTables)
    Response.Write arTables(t) & "<br>"
    Set rs = Conn.Execute("Select * From " & arTables(t))
    For Each Felt In rs.Fields

dtype =  Felt.Type

    Function datatyper(Felt.Type, Felt.DefinedSize, Felt.Precision, Felt.NumericScale)
        If dtype = 0 Then tmp = "Empty"
        If dtype = 16 Then tmp = "TinyInt(" & nummax & ")"
        If dtype = 2 Then tmp = "SmallInt(" & nummax & ")"
        If dtype = 3 Then tmp = "Integer(" & nummax & ")"
        If dtype = 20 Then tmp = "BigInt(" & nummax & ")"
        If dtype = 17 Then tmp = "UnsignedTinyInt(" & nummax & ")"
        If dtype = 18 Then tmp = "UnsignedSmallInt(" & nummax & ")"
        If dtype = 19 Then tmp = "UnsignedInt(" & nummax & ")"
        If dtype = 21 Then tmp = "UnsignedBigInt(" & nummax & ")"
        If dtype = 4 Then tmp = "Single"
        If dtype = 5 Then tmp = "Double(" & nummax & "," & numscale & ")"
        If dtype = 6 Then tmp = "Currency(" & nummax & "," & numscale & ")"
        If dtype = 14 Then tmp = "Decimal(" & nummax & "," & numscale & ")"
        If dtype = 131 Then tmp = "Numeric(" & nummax & "," & numscale & ")"
        If dtype = 11 Then tmp = "Boolean"
        If dtype = 132 Then tmp = "UserDefined"
        If dtype = 12 Then tmp = "Variant"
        If dtype = 9 Then tmp = "Dispatch"
        If dtype = 13 Then tmp = "Unknown"
        If dtype = 72 Then tmp = "Guid"
        If dtype = 7 Then tmp = "Date"
        If dtype = 133 Then tmp = "DBDate"
        If dtype = 134 Then tmp = "DBTime"
        If dtype = 135 Then tmp = "Timestamp"
        If dtype = 8 Then tmp = "BSTR"
        If dtype = 129 Then tmp = "Char(" & charmax & ")"
        If dtype = 200 Then tmp = "VarChar(" & charmax & ")"
        If dtype = 201 Then tmp = "LongVarChar(" & charmax & ")"
        If dtype = 130 Then
            If int(charmax) <= 255 Then
                tmp = "VarChar(" & charmax & ")"
            Else
                tmp = "Longtext"           
            End if
        End if
        If dtype = 202 Then
            If int(charmax) <= 255 Then
                tmp = "VarChar(" & charmax & ")"
            Else
                tmp = "Longtext"           
            End if
        End if
        If dtype = 203 Then
            If int(charmax) <= 255 Then
                tmp = "LongVarChar(" & charmax & ")"
            Else
                tmp = "Longtext"           
            End if
        End if
        If dtype = 128 Then tmp = "Binary"
        If dtype = 204 Then tmp = "VarBinary"
        If dtype = 205 Then tmp = "LongVarBinary"
        datatyper = tmp

    End Function

    Response.Write "&nbsp;&nbsp;- " & Felt.Name & "(" & tmp & ")<br>"
    Next 
Next

%>
Avatar billede eagleeye Praktikant
18. december 2003 - 21:23 #14
ok det ikke helt sådan det hænger sammen. Du skal ligge fnuntionen ind i eksvis bunden af din fil osså lave dit loop som deette


For t = 0 To UBound(arTables)
    Response.Write arTables(t) & "<br>"
    Set rs = Conn.Execute("Select * From " & arTables(t))
    For Each Felt In rs.Fields

      dtype =  Felt.Type
      tmp = datatyper(Felt.Type, Felt.DefinedSize, Felt.Precision, Felt.NumericScale)
      Response.Write "&nbsp;&nbsp;- " & Felt.Name & "(" & tmp & ")<br>"
    Next 




Efter dit </html> tag kan du ligge selv funktionen:
</html>
<%
    Function datatyper(dtype, charmax, nummax, numscale)
        If dtype = 0 Then tmp = "Empty"
        If dtype = 16 Then tmp = "TinyInt(" & nummax & ")"
        If dtype = 2 Then tmp = "SmallInt(" & nummax & ")"
..
..
..
        If dtype = 205 Then tmp = "LongVarBinary"
        datatyper = tmp
    End Function
Avatar billede Slettet bruger
18. december 2003 - 22:37 #15
Tegnet ')' var ventet
/aspmyadmin/Felt.asp, line 40, column 23
Function datatyper(Felt.Type, Felt.DefinedSize, Felt.Precision, Felt.NumericScale)
----------------------^
Avatar billede eagleeye Praktikant
18. december 2003 - 22:47 #16
Hvis det er nede i selv fuktion skal det være den linje være sådan her:

Function datatyper(dtype, charmax, nummax, numscale)
Avatar billede Slettet bruger
19. december 2003 - 19:30 #17
TUSINDE tak det virker :D
Avatar billede netro Nybegynder
19. december 2003 - 19:43 #18
Det er godt :)

Sig til hvis du vil have en bid af kagen, eagleeye, for dit bidrag til typerne.
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