SQL-Abfrage mittels VBScript

Torgath

Mitglied
Hab ein kleines Problem...
Ich will mittels VBScript eine kleine SQL-Abfrage machen, was eigentlich nicht weiter schwierig wäre, wenn nicht drei Frage-Felder zur Verfügung stehen würden...

Hier mein Code:

Code:
<%@ Language=VBScript %>
<%
dim vname
dim vfirstname
dim vplz
vname = Request("fname")
vfirstname = Request("ffirstname")
vstreet = Request("fplz")
set ors = CreateObject("ADODB.RECORDSET") 'ors = objetrecordset
set Ocn = CreateObject("ADODB.Connection") 'ocn = objectconnect
ocn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ad.mdb;"'Verbindung zur Datenbank wird erstellt
ors.Open "Select * from adressbook where name = " & chr(34) & vname & chr(34) " and firstname = " & chr(34) & vfirstname & chr(34) " and plz = " & chr(34) & vplz & chr(34),ocn,1,1
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<table border=1>
<tr>
<th bgcolor="#b9b9b9" colspan="9">Adressliste</th>
</tr>
<tr>
    <td>Vorname</td>
    <td>Name</td>
    <td>Strasse</td>
    <td>Nummer</td>
    <td>PLZ</td>
    <td>Ort</td>
    <td>Telefon</td>
    <td>Fax</td>
    <td>E-Mail</td>
</tr>
<%
while not ors.EOF
Response.Write("<tr>")
Response.Write("<td>")
Response.Write ors("firstname")
Response.Write("</td>")
Response.Write("<td>")
Response.Write ors("name")
Response.Write("</td>")
Response.Write("<td>")
Response.Write ors("street")
Response.Write("</td>")
Response.Write("<td>")
Response.Write ors("number")
Response.Write("</td>")
Response.Write("<td>")
Response.Write ors("plz")
Response.Write("</td>")
Response.Write("<td>")
Response.Write ors("location")
Response.Write("</td>")
Response.Write("<td>")
Response.Write ors("phone")
Response.Write("</td>")
Response.Write("<td>")
Response.Write ors("fax")
Response.Write("</td>")
Response.Write("<td>")
Response.Write ors("e-mail")
Response.Write("</td>")
Response.Write("</tr>")
ors.MoveNext
wend
%>
</table>
</BODY>
</HTML>

Mein Problem ist nun diese Fehlermeldung:
Fehlertyp:
Kompilierungsfehler in Microsoft VBScript (0x800A0401)
Anweisungsende erwartet
/Project1/list.asp, Zeile 12, Spalte 78
ors.Open "Select * from adressbook where name = " & chr(34) & vname & chr(34) " and firstname = " & chr(34) & vfirstname & chr(34) " and plz = " & chr(34) & vplz & chr(34),ocn,1,1
-----------------------------------------------------------------------------^


Was genau ist falsch?

Danke für eine baldige Antwort...

MfG Torgath
 

Luzie

Erfahrenes Mitglied
Hi

hier fehlt noch ein Anführungszeichen

and plz = " & chr(34) & vplz & chr(34) & ",ocn,1,1

würd ich jetzt mal sagen :)
Alles hat ein Ende nur die ....
 

Torgath

Mitglied
Danke, hat geholfen, und hab unterdessen auch weiter daran gearbeitet:

Code:
<%@ Language=VBScript %>
<%
dim vname
dim vfirstname
dim vplz
vname = Request("fname")
if vname <> "" Then 
    strCond = "and  name = " & chr(34) & vname & chr(34) 
End if
vfirstname = Request("ffirstname")
if vfirstname <> "" Then 
    strCond = strCond & " and  firstname = " & chr(34) & vfirstname & chr(34) 
End if
vplz = Request("fplz")
if vplz <> "" Then 
    strCond = strCond & " and  plz = " & chr(34) & vplz & chr(34) 
End if
set ors = CreateObject("ADODB.RECORDSET") 'ors = objetrecordset
set Ocn = CreateObject("ADODB.Connection") 'ocn = objectconnect
ocn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ad.mdb;"'Verbindung zur Datenbank wird erstellt
ors.Open "Select * from adressbook where 1=1 " & strCond ,ocn,1,1
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<table border=1>
<tr>
<th bgcolor="#b9b9b9" colspan="9">Adressliste</th>
</tr>
<tr>
    <td>Vorname</td>
    <td>Name</td>
    <td>Strasse</td>
    <td>Nummer</td>
    <td>PLZ</td>
    <td>Ort</td>
    <td>Telefon</td>
    <td>Fax</td>
    <td>E-Mail</td>
</tr>
<%
while not ors.EOF%>
    <tr>
        <td>
        <%=ors("firstname")%>
        </td>
        <td>
        <%=ors("name")%>
        </td>
        <td>
         <%=ors("street")%>
        </td>
        <td>
         <%=ors("number")%>
        </td>
        <td>
         <%=ors("plz")%>
        </td>
        <td>
         <%=ors("location")%>
        </td>
        <td>
         <%=ors("phone")%>
        </td>
        <td>
         <%=ors("fax")%>
        </td>
        <td>
         <%=ors("e-mail")%>
        </td>
    </tr>
    <%ors.MoveNext
wend
%>
</table>
</BODY>
</HTML>

Nun habe ich ein weiteres anliegen... wie kriege ich es hin, dass nach dem ich 10 Datensätze ausgegeben habe (nehmen wir an es sind 35 Datensätze ingesammt) dass ganze unterbrochen wird und man unten weiter klicken muss, damit die nächsten 10 Datensätze kommen?
 

Torgath

Mitglied
Ziemlich gut, was da steht, und ich kanns zum Teil sogar nachvollziehen, aber ich kriegs nicht auf meinen Code zugeschnitten...
 

Torgath

Mitglied
Jetzt weiss ich, wie ichs haben muss... es sollte quasi so aussehen, wie wenn man bei Google was sucht und dann auf die zweite Seite geht...

Sprich, man soll vor und zurück gehen können, und dazwischen sollen zahlen sein, wieviele Seiten es gibt, also bei 35 z.B. 4...

Ich weiss nicht, wie ich dass machen soll...
 

Torgath

Mitglied
Bin jetzt schon einiges weiter, aber hab immer noch ein Problem! Hier mein Code:

Code:
<%@ Language=VBScript %>
<%
dim vname ' ---
dim vfirstname ' ---
dim vplz ' ---
dim count ' ---
count = 1
dim count1 ' ---
dim c ' ---
dim pagesize ' --- Definieren der Seitengröße (Anzahl Datensätze pro Seite)
pagesize = 10
dim absolutepage
absolutepage = Request("PN")
vname = Request("fname")
if vname <> "" Then 
    strCond = "and  name = " & chr(34) & vname & chr(34) 
End if
vfirstname = Request("ffirstname")
if vfirstname <> "" Then 
    strCond = strCond & " and  firstname = " & chr(34) & vfirstname & chr(34) 
End if
vplz = Request("fplz")
if vplz <> "" Then 
    strCond = strCond & " and  plz = " & chr(34) & vplz & chr(34) 
End if
set ors = CreateObject("ADODB.RECORDSET") 'ors = objetrecordset
set Ocn = CreateObject("ADODB.Connection") 'ocn = objectconnect
ors.PageSize = pagesize
ors.CacheSize = pagesize
ocn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\adb.mdb;"'Verbindung zur Datenbank wird erstellt
ors.Open "Select * from adressbook where 1=1 " & strCond & " order by ID ",ocn,1,1
if absolutepage = "" or not isnumeric(absolutepage) or cint(absolutepage) > cint(ors.PageCount) then
absolutepage = 1
end if
ors.AbsolutePage = absolutepage%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<table border=1 align=center>
<tr>
<th bgcolor="#b9b9b9" colspan="9">Adressliste</th>
</tr>
<tr>
    <td>Vorname</td>
    <td>Name</td>
    <td>Strasse</td>
    <td>Nummer</td>
    <td>PLZ</td>
    <td>Ort</td>
    <td>Telefon</td>
    <td>Fax</td>
    <td>E-Mail</td>
</tr>
<%
do while not ors.EOF and intcounter <= pagesize%>
    <tr>
        <td>
        <%=ors("firstname")%>
        </td>
        <td>
        <%=ors("name")%>
        </td>
        <td>
        <%=ors("street")%>
        </td>
        <td>
        <%=ors("number")%>
        </td>
        <td>
        <%=ors("plz")%>
        </td>
        <td>
        <%=ors("location")%>
        </td>
        <td>
        <%=ors("phone")%>
        </td>
        <td>
        <%=ors("fax")%>
        </td>
        <td>
        <%=ors("e-mail")%>
        </td>
    </tr>
</table>
<%
count = count + 1
ors.MoveNext
loop
for intpagecounter = 1 to ors.PageCount
if cint(intpagecounter) = cint(absolutpage) then
Response.Write intpagecounter & ""
else
Response.Write "<a href=""list.asp?PN=" & intpagecounter & """>" & intpagecounter & "</a> "
end if
next

%>

<table align=center>
<tr>
<td>
<a href="list.asp"><<</a>
</td>
<%for c=1 to count1%>
<td>
<a href="list.asp"><%=c%></a>
</td>
<%next%>
<td>
<a href="list.asp">>></a>
</td>
</tr>
</table>
<%ors.Close
set ors = nothing
ocn.Close
set ocn = nothing
%>
 
</BODY>
</HTML>

Wenn ichs ausführen will, kommt diese Meldung:

Fehlertyp:
ADODB.Recordset (0x800A0CC1)
Ein Objekt, das dem angeforderten Namen oder dem Ordinalverweis entspricht, kann nicht gefunden werden.
/Project2/list.asp, line 72

Irgendwie scheint er nur name und plz rauslesen zu können. Warum? Ich verstehs einfach nicht und finde dazu im Moment auch gar nichts...
 

Torgath

Mitglied
Der Fehler wurde gefunden! Hab die falsche DB gekriegt... :rolleyes:

Dafür hab ich ein 'neues' Problem mit dem selben Code...

Wenn ich die Seite aufrufe, kommen auf der 'ersten' Seite statt 10 alle 12 Datensätze die ich habe heraus und es gibt eine zweite Seite mit den letzten beiden Datensätze nochmals...