Avatar billede chrisrj Forsker
01. august 2003 - 12:02 Der er 11 kommentarer og
2 løsninger

Hvordan udskriver jeg et dynamisk sql kald?

Jeg ved at lave en side, hvor jeg kan lave select-kald til db'en.

Det forgår på denne måde:
1. der indtastes på formen f.eks. "select * from tabel1"
2. der trykkes på submit-knappen og sql kaldet udføres.
3. Resultatet udskrives til skærmen.

Mit problem er punkt 3.

Hvordan udskriver jeg tabellen/tabellerne, når jeg ikke ved hvad den/de hedder?
Avatar billede medions Nybegynder
01. august 2003 - 12:04 #1
objRs(1)

obRs(2)

//>Rune
Avatar billede chrisrj Forsker
01. august 2003 - 12:04 #2
Og hvad betyder det?
Avatar billede medions Nybegynder
01. august 2003 - 12:06 #3
Altså at du kan istedet for at skrive objRs("kolonnenavn") behandle data'erne som i et Array!

Første kolonne i række i din tabel vil ha' ID nr. 0 så du henter den fx. sådan her:

Response.Write(objRs(0))

//>Rune
Avatar billede squashguy Nybegynder
01. august 2003 - 12:06 #4
nu ved jeg ikke hvad du skal bruge det til. men du har vel overvejet at nogle kunne finde på at skrive dumme ting?
Avatar billede chrisrj Forsker
01. august 2003 - 12:12 #5
rune -> hvordan finder jeg så ud af når jeg er nået til den sidste?

Skal jeg bare skrive:

do while objRs(i)
...
...
i = i + 1
loop

eller hvad?

Og når jeg så skal skrive indholdet af rækken ud, hvordan så?

Jeg skal jo både have kolonnenavne og data ud.


squashguy -> det har jeg tænkt på, men i og med det kun er mig(admin) der kan se siden og at ordet "select" ikke kan fjernes, regner jeg med at det er sikkert nok. :)
Avatar billede chrisrj Forsker
01. august 2003 - 12:15 #6
Hvis det har noget at sige, vil det også være rart, hvis jeg kunne f.eks. skrive "select tabel1.id, tabel2.id from tabel1, tabel2".

Ville det være svært at lave?
Avatar billede c Nybegynder
01. august 2003 - 12:22 #7
Når du har et array kan du bruge ubound(objRS) ville jeg mene...

så kan du skrive for
for i=1 to ubound(objRS)
...
next
Avatar billede chrisrj Forsker
01. august 2003 - 12:29 #8
Her er mit forsøg(virker ikke):

<% 
saetning = request("saetning")
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Conne = Server.CreateObject("ADODB.Connection")
Conne.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../database/database.mdb") & ";UID=admin;PWD=;"
    if not saetning="" then
        Set rse = Server.CreateObject("ADODB.RecordSet")
        strSQLe = "Select " & saetning
        rse.Open strSQLe, Conne, adOpenKeyset, adLockOptimistic
    end if
%>
                 
<p><b>Vedligehold hjemmesiden</b></p>

<FORM METHOD="POST" ACTION="portal.asp?page=sqltest.asp">
<table cellpadding=4 cellspacing=1 border=0>
<tr>
  <td colspan=2><font face="arial,helvetica" size="1" color="#FFFFFF"><b>Lav sætning</b></font></td>
</tr>
<tr>
  <td><font face="arial,helvetica" size="2">Sætning</font></td>
  <td width=350><input type="text" name="saetning" size=40></td>
</tr>
<tr>
  <td colspan=2 align="center">
    <input type="submit" value="Udfør sætning" size=20>
    <input type="Reset" value="Slet Alt" name="Reset">
  </td>

</tr>
</table>
</form>

<%
if not saetning="" then
    response.write strSQLe
%>
<table>
<%
    for i=1 to ubound(objRS)
        response.write "<tr><td>" & objRS(i) & "</td></tr>" & vbcrlf
    next
%>

</table>
<% end if %>

Der kommer denne fejl:

Microsoft VBScript runtime error '800a000d'
Type mismatch: 'ubound'

/admin/sqltest.asp, line 48

linie 48:
for i=1 to ubound(objRS)
Avatar billede Slettet bruger
01. august 2003 - 12:35 #9
Prøv noget ala:
<% If Not Objrs.EOF Then %>
    <TABLE BORDER="1" HEIGHT="100%">
        <TR BGCOLOR="#CCCCCC">
    <% For Each Item in Objrs.Fields %>
            <TD>
                <% = Item.Name %>
            </TD>           
<%
        ATmp = ATmp + 1
    Next
    Objrs.MoveFirst
%>
    <% Do While Not Objrs.EOF %>
        </TR>
            <% For a = 0 To ATmp - 1 %>
            <TD VALIGN="TOP">
            <% = Replace(Objrs(A) &" ",VbCrLf,"<BR>") %>&nbsp;
            </TD>
            <% Next %>
        <TR>
<%
        Objrs.MoveNext
    Loop
Else
%>
    <STRONG><% = err.Description %></STRONG>
<% End If %>
Avatar billede chrisrj Forsker
01. august 2003 - 12:40 #10
Så kommer denne fejl:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/admin/sqltest.asp, line 42


linie 42:
<% If Not Objrs.EOF Then %>
Avatar billede Slettet bruger
01. august 2003 - 12:48 #11
Du kan vel skifte et objekt variabelnavn ud med det du bruger.
Du bruger rse og eksemplet bruger Objrs

Bare ret objrs til rse igennem hele mit eksempel, så er der måske bonus. Hvis du vil have kodet hele siden, kan jeg da godt gøre det for dig, men det er ikke gratis *S
Avatar billede chrisrj Forsker
01. august 2003 - 12:53 #12
Heheh, det bliver ikke nødvendigt.

Jeg er bare lidt søvning idag. ;)

Jeg prøver!
Avatar billede chrisrj Forsker
01. august 2003 - 12:58 #13
Stort!! Det virker!!

Tak!!!! :D
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