Avatar billede soes Nybegynder
11. juni 2002 - 21:01 Der er 24 kommentarer og
1 løsning

Database sjov...

Er der nogle som kan komme med nogle gode links til hvor man kan læse/lære noget om at hente oplysninger ud om selve databasen. Det som jeg er på jagt efter er f.eks. oplysninger om hvilke tabeller der er, de forskellige felter i den, og de egenskaber de nu har. Hvis det kræver mere uddybende beskrivelse så bare sig til :o)

/Søren Søndergård
Avatar billede levels Nybegynder
11. juni 2002 - 22:24 #1
Avatar billede soes Nybegynder
11. juni 2002 - 22:33 #2
det var ikke helt det jeg var på jagt efter, jeg mangler en artikel som beskriver hvordan man henter de forskellige oplysninger. så vidt jeg hurtigt kunne læse drejede dette sig om et færdigt script :-( jeg skriver i øvrigt VbScript kan ikke helt overkomme at skulle til at læse JS udgaven :-)

/Søren Søndergård
Avatar billede doc404 Novice
11. juni 2002 - 22:43 #3
Avatar billede doc404 Novice
11. juni 2002 - 22:46 #4
øehmm...er du ude efter lidt mere avancered ting så som et kig ind i system tabellerne på en SQL f.eks.?
Avatar billede soes Nybegynder
11. juni 2002 - 22:53 #5
Jeg ved det egenlig ikke for at være ærlig. Det jeg skal bruge det til er at jeg kan få listet alle de tabeller der f.eks. er i en database, uden at jeg kender dem på forhånd, håber at du forstår mig. Jeg kan sagten gå ind og finde sådan nogle scripts, men det jeg er på jagt efter er en side som beskriver hvordan, i stedet for copy/paste teknologien.

/Søren Søndergård
Avatar billede punnishment Nybegynder
11. juni 2002 - 22:56 #6
der er åbenbart ikke nogle der rigtig har fået fat i det :)

Function datatyper(dtype,dattributes)
    If dtype = 0 Then tmp = "Empty"
    If dtype = 16 Then tmp = "TinyInt - Tal"
    If dtype = 2 Then tmp = "SmallInt - Tal"
    If dtype = 3 Then tmp = "Integer - Tal"
    If dtype = 16 Then tmp = "TinyInt - Tal" 
    If dtype = 20 Then tmp = "BigInt - Tal"
    If dtype = 17 Then tmp = "UnsignedTinyInt - Tal"
    If dtype = 18 Then tmp = "UnsignedSmallInt - Tal"
    If dtype = 19 Then tmp = "UnsignedInt - Tal"
    If dtype = 21 Then tmp = "UnsignedBigInt - Tal"
    If dtype = 4 Then tmp = "Single"
    If dtype = 5 Then tmp = "Double - Kommatal"
    If dtype = 6 Then tmp = "Currency - Valuta"
    If dtype = 14 Then tmp = "Decimal - Kommatal"
    If dtype = 131 Then tmp = "Numeric - Nummerisk"
    If dtype = 11 Then tmp = "Boolean - Sand/Falsk"
'    If dtype = 11 Then tmp = "Error"
    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 - Dato"
    If dtype = 133 Then tmp = "DBDate - Database Dato"
    If dtype = 134 Then tmp = "DBTime - Database Tid"
    If dtype = 135 Then tmp = "Timestamp - Dato og tid"
    If dtype = 8 Then tmp = "BSTR"
    If dtype = 129 Then tmp = "Char - Tekst"
    If dtype = 200 Then tmp = "VarChar - Tekst"
    If dtype = 201 Then tmp = "LongVarChar - Tekst"
    If dtype = 130 Then tmp = "WChar - Tekst"
    If dtype = 202 Then tmp = "VarWChar - Tekst"
    If dtype = 203 Then tmp = "LongVarWChar - Tekst"
    If dtype = 128 Then tmp = "Binary - Binær"
    If dtype = 204 Then tmp = "VarBinary - Binær"
    If dtype = 205 Then tmp = "LongVarBinary - Binær"
    if tmp = "" then
    tmp = "Ukendt"
    end if
    datatyper = tmp
End Function


set rs = Conn.Execute("Select * from " & tabel)
For each head IN rs.Fields
response.write "feltnavn:" & head.name & "Type" & datatyper(head.type,head.attributes)
Next
Avatar billede fet321 Nybegynder
11. juni 2002 - 22:56 #7
just a moment...
Avatar billede levels Nybegynder
11. juni 2002 - 22:56 #8
Der er en artikel på asptoday, som kommer ind op det, men det er et pay site.
Avatar billede levels Nybegynder
11. juni 2002 - 22:57 #9
hehe.. "kommer ind [på] det" :)
Avatar billede punnishment Nybegynder
11. juni 2002 - 22:58 #10
finder alle tabellerne i din database


set rs = conn.openschema(20) ' husk ingen SQL sætninger!!!
Do while not rs.eof
response.write rs("table_name") & "<br>"
rs.movenext
loop
Avatar billede punnishment Nybegynder
11. juni 2002 - 23:01 #11
slet en kolone:
conn.execute("ALTER TABLE tabelnavn DROP kolonenavn;")
Avatar billede soes Nybegynder
11. juni 2002 - 23:01 #12
nu vil jeg lige have det helt på plds :o)

Det som denne funktion gør er at bestemme hvilken felt type vi har med at gøre i databasen, er det korrekt?

For at jeg kan bruge scriptet, så skal jeg også kende de forskellige tabeller som db'en indeholder, er det også korrekt?

/Søren Søndergård
Avatar billede punnishment Nybegynder
11. juni 2002 - 23:01 #13
slet en tabel:
conn.execute("DROP TABLE tabelnavn")
Avatar billede soes Nybegynder
11. juni 2002 - 23:02 #14
se nu begynder det at lige noget, jeg trot vi er begyndt at nærme os en vinder...
Avatar billede levels Nybegynder
11. juni 2002 - 23:03 #15
punnishment, send ham dog din sql manual :)
Avatar billede punnishment Nybegynder
11. juni 2002 - 23:03 #16
sig til hvis du mangler noget - så kan jeg os hurtigt finde det..!
Avatar billede punnishment Nybegynder
11. juni 2002 - 23:04 #17
min manual er en script
Avatar billede punnishment Nybegynder
11. juni 2002 - 23:04 #18
eller rettere sagt: system
Avatar billede soes Nybegynder
11. juni 2002 - 23:04 #19
har du en komplet manual til Sql (læses: et sted hvor man kan hente den) ?
Avatar billede levels Nybegynder
11. juni 2002 - 23:05 #20
søg evt, på "ADOX", du kan bruge det til at tilgå og manipulerere dine tabeller.
Avatar billede soes Nybegynder
11. juni 2002 - 23:05 #21
jeg tror jeg kan klare mig det næste stykke tid. du får mange tak for hjælpen punnishment, og point får du selvfølgelig også :o)

/Søren Søndergård
Avatar billede punnishment Nybegynder
11. juni 2002 - 23:12 #22
her kommer et mindre system:

<table width="100%">
<tr>
<%
set rs = Conn.Execute("Select * from tabel")
For each head IN rs.Fields
response.write "<td>" & head.name & "</td>"
next
%>
</tr>
<% Do until rs.eof %>
<tr>
<%
For each head in rs.Fields
a = head.value
response.write "<td>"
If len(a) >= 1 then response.write server.htmlencode(a) end if
response.write "&nbsp;</td>"
Next
%>
</tr>
<%
rs.movenext   
loop
%>
</table>
Avatar billede fet321 Nybegynder
11. juni 2002 - 23:14 #23
Har lige rodet med lidt kode jeg havde liggende. Der er lidt af mig eget og noget jeg har ranet et eller andet sted.
Er testet på Access og MSSQL


<% Option Explicit %>
<html>
<head>
<title>db get</title>
</head>
<body STYLE="font: 11px Verdana, Geneva, Arial, Helvetica, sans-serif;">
<%

' Henter navn og type på alle tabeller i DB
function funcGetAllTableNamesAndType(ShowWhat,ColNum,Criteria)
    dim objConn
    dim objRS
    dim whatever
    dim strTekst
    dim TestArray
   
    Const adUseClient = 3
    Const adSchemaTables = 20

    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath("db.mdb"))
    objConn.CursorLocation = adUseClient
    set objRS = objConn.OpenSchema(adSchemaTables)
   
    strTekst = strTekst & "<TABLE BORDER=""0"" cellspacing=""1"" cellpadding=""3"" STYLE=""font: 10px Verdana, Geneva, Arial, Helvetica, sans-serif;""><TR>" & vbcrlf
    ' Lav header ud fra Field Names
    for each whatever in objRS.fields
      strTekst = strTekst & "<TD ALIGN=""left"" NOWRAP BGCOLOR=""#C0C0C0"">" & whatever.name & "</TD>" & vbcrlf
    next
    strTekst = strTekst & "</tr>" & vbCrLf
   
    ' Hent lortet ind i array
    TestArray=objRS.getrows
    Set objRS = Nothing
    ' Udskriv alle rows i arrayet
    strTekst = strTekst & fWriteArray(TestArray,ShowWhat,ColNum,Criteria)

    strTekst = strTekst & "</TABLE><BR>"
    funcGetAllTableNamesAndType = strTekst

End function

Function fWriteArray(TestArray,ShowWhat,ColNum,Criteria)
    dim numcols
    dim numrows
    dim rowcounter
    dim colcounter
    dim thisfield
    dim shownull
    dim showblank
    dim strTmp

    showblank="&nbsp;"
    shownull="-null-"

    numcols=ubound(TestArray,1)
    numrows=ubound(TestArray,2)
    FOR rowcounter= 0 TO numrows
   
        ' Udskriv alle tabeltyper eller kun type "TABLE"
        If ShowWhat = "all" Then
            strTmp = strTmp & "<TR>" & vbcrlf
            FOR colcounter=0 to numcols
                thisfield=TestArray(colcounter,rowcounter)
                if isnull(thisfield) then
                    thisfield=shownull
                end if
                if trim(thisfield)="" then
                    thisfield=showblank
                end if
                strTmp = strTmp & "<TD ALIGN=""left"" NOWRAP BGCOLOR=""#DDDDDD"">"
                strTmp = strTmp & thisfield
                strTmp = strTmp & "</TD>" & vbcrlf
            NEXT
            strTmp = strTmp & "</TR>" & vbcrlf
        Else
            If TestArray(ColNum,rowcounter) = Criteria Then
                strTmp = strTmp & "<TR>" & vbcrlf
                FOR colcounter=0 to numcols
                    thisfield=TestArray(colcounter,rowcounter)
                    if isnull(thisfield) then
                        thisfield=shownull
                    end if
                    if trim(thisfield)="" then
                        thisfield=showblank
                    end if
                    strTmp = strTmp & "<TD ALIGN=""left"" NOWRAP BGCOLOR=""#DDDDDD"">"
                    strTmp = strTmp & thisfield
                    strTmp = strTmp & "</TD>" & vbcrlf
                NEXT
                strTmp = strTmp & "</TR>" & vbcrlf
            End If
        End If
       
    NEXT

    fWriteArray = strTmp
End Function

Response.Write funcGetAllTableNamesAndType("all",,"")

%>
</body>
</html>
Avatar billede fet321 Nybegynder
11. juni 2002 - 23:16 #24
og så kunne man jo lige kombinere den med en lille funktion som henter indholdet af en tabel.
Avatar billede soes Nybegynder
11. juni 2002 - 23:20 #25
jeg siger rigtig mange tak, nu har jeg igen noget at lave når den sidste eksamen samt studenter runden er færdig.

/Søren Søndergård
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