Avatar billede steen_e Nybegynder
18. januar 2002 - 10:01 Der er 9 kommentarer og
1 løsning

Trække kolonnenavne ud vha. SQL?

Jeg mangler et SQL-statement, som returnerer navnene på de forskellige kolonner i en database - anyone?
Avatar billede steen_e Nybegynder
18. januar 2002 - 10:03 #1
...ja, og for den sags skyld også noget, der kan trække navnene på de forskellige tabeller i en database ud...
Avatar billede marit Nybegynder
18. januar 2002 - 10:12 #2
lister navnene på kolonnerne ud.
SELECT * FROM tabelnavn

do until rs.eof
  rs(0).name
  rs(1).name
  rs(2).name
loop

Avatar billede steen_e Nybegynder
18. januar 2002 - 10:23 #3
Nu skriver jeg:
-----------------------------------------------
sql    = \"SELECT * FROM tabel\"
set rs = conn.execute(sql)

i=0
do until rs.eof
  response.write rs(i).name & \"<br>\"
  i=i+1
loop

conn.close
set conn=nothing
-----------------------------------------------
...og så får jeg en \"Item cannot be found in the collection corresponding to the requested name or ordinal\" i den linje, hvor jeg response.writer rs(i).name...?
Avatar billede marit Nybegynder
18. januar 2002 - 10:29 #4
Hvis tabellen indeholder Navn, adresse og email
så betyder det at rs(0) = rs(\"Name\"),rs(1) = rs(\"adresse \") og rs(2) = rs(\"email\").
Så du skal ikke tælle op med i, blot skrive tal, da du ikke kender navnene.
Men du skal vide hvor mange kolonner der er, ved du det?
Avatar billede steen_e Nybegynder
18. januar 2002 - 10:37 #5
Egentlig skulle det vil principielt være muligt fra en *ukendt* database at få at vide, dels hvilke tabeller, databasen indeholder (og dermed hvor mange), samt hvilke kolonner en given tabel indeholder (og dermed hvor mange.)
Avatar billede -mundi- Nybegynder
18. januar 2002 - 12:49 #6
Det har intet ed SQL at gøre, du skal bruge dit recordsets egenskaber istedet..


    SQL = \"Select top 1 * From TableName\"

Set RSViewTable = Server.CreateObject(\"ADODB.Recordset\")

RSViewTable.Open SQL, Conn, 2, 3, 1
%>



<TABLE Border=\"0\" align=\"center\">
<TR>
<% \'Set up the table headings%>
    <% For Each columnname in RSViewTable.Fields %>
    <TD>
        <%= columnname.TYPE %>
    </TD>
    <% Next %>
</TR>
<%\' Write out the data %>
    <% Do While Not RSViewTable.EOF%>
    <TR>
        <% For Each columnname in RSViewTable.Fields%>
        <TD>
           
            <A HREF=\"#\"><%= RSViewTable(columnname.name)%></A>
        </TD>
        <% Next %>
        <TD>
    </TR>
    <% RSViewTable.MoveNext
    Loop%>
</Table>
<BR>
<%
RSViewTable.Close
Set RSViewTable = Nothing
%>
Avatar billede zeptic Nybegynder
18. januar 2002 - 14:42 #7
Hvis du vil vide hvilke tabeller der ligger i din database skal du gøre brug af OpenSchema. Følgende kode kan hjælpe dig på vej (de udmarkede linier får det til at fejle på db2 v7.1):

const adSchemaTables=20
set conn=Server.CreateObject(\"ADODB.Connection\")
conn.open(\"DSN=INDSAML\")

set rs=Server.CreateObject(\"ADODB.Recordset\")
set rs=conn.OpenSchema(adSchemaTables)

Response.Write(\"<table border=1>\")

while NOT(rs.EOF)
    out=\"<tr><td>\"&rs(\"TABLE_CATALOG\")&\"</td>\"
    out=out&\"<td>\"&rs(\"TABLE_SCHEMA\")&\"</td>\"
    out=out&\"<td>\"&rs(\"TABLE_NAME\")&\"</td>\"
    out=out&\"<td>\"&rs(\"TABLE_TYPE\")&\"</td>\"
    out=out&\"<td>\"&rs(\"TABLE_GUID\")&\"</td>\"
    out=out&\"<td>\"&rs(\"DESCRIPTION\")&\"</td>\"
    \'out=out&\"<td>\"&rs(\"TABLE_PROPID\")&\"</td>\"
    \'out=out&\"<td>\"&rs(\"DATE_CREATED\")&\"</td>\"
    \'out=out&\"<td>\"&rs(\"DATE_MODIFIED\")&\"</td>\"
    Response.Write(out)
    Response.Write(\"</tr>\")
    rs.MoveNext
wend
Response.Write(\"</table>\")
Avatar billede zeptic Nybegynder
18. januar 2002 - 14:44 #8
Derefter kan du gøre lave en \"SELECT * FROM Tabel1\" (udtag kun een record -- det er hurtigere) og så gøre som -mundi- foreslår.

Håber det hjælper dig lidt.
Avatar billede steen_e Nybegynder
28. januar 2002 - 13:56 #9
OK. Fint. Nu bruger jeg ovenstående kode fra zeptic, og så får jeg navnene på de forskellige tabeller i databasen ud. Så vidt, så godt.

Men når jeg så kører videre med mundis rutine, får jeg ikke navnene på kolonnerne i tabellen, jeg får den første række data fra tabellen. Hvad gør jeg galt?
Avatar billede steen_e Nybegynder
28. august 2002 - 21:43 #10
Jeg lukker lige spm, jeg har ikke rigtig fået tid til at kigge på det.
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