Stefan Falz: keine Fehlermeldungen - trotzdem klappt es nicht

Beitrag lesen

Hallo,

da muß man ja erst mal die Glaskugel wieder aus dem Schrank holen ;)

<%
DIM mKNR
DIM objCon, strDB, strCon, ObjRs

strDB="Data Source"= & Server.MapPath("/Auftrag.mdb")
strCon="Provider=Microsoft.Jet.OLEDB.4.0;" & strDB
mKNR=request.form("Kunde")

Ok, da hatten wir zumindest mal die Kundennummer. Allerdings
solltest du bedenken, dass dir jemand auch einen "falschen"
Wert (Stichwort: SQL Injection, Google hilft dir da weiter)
unterjubelt. Aber das ist hier zumindest nicht dein Problem.

mSQL="Select KunID, KunFirma, KunOrt, KunTelefon FROM TabKunden WHERE KunID=mKNR;"

So, da versucht Access jetzt, die Spalte mKNR in der Tabelle TabKunden
zu finden. Das schlägt natürlich fehl. Der SQL String sollte so aussehen:

mSQL="Select KunID, KunFirma, KunOrt, KunTelefon FROM TabKunden WHERE KunID = " & mKNR

objRS.open mSql, objCon
objRS.MoveFirst

Das hier ist unnötigt, da sich das Recordset nach dem Öffnen immer
auf dem ersten Datensatz befindet (wenn einer vorhanden ist).
Du solltest eher prüfen, ob ein Datensatz gefunden wurde:

If Not objRS.EOF Then
    ...
End if

mSQL="Select AufID, PosID, LeiID FROM TabAuftraege INNERJOIN TabPositionen on TabAuftraege.AufID=TabPositionen.AUFID WHERE KunID=mKNR;"

Vor dem Öffnen des Recordsets mit neuem SQL Statement solltest du
es zuerst einmal schließen.

objRS.Close

Und hier nochmal das mit der Variablen mKNR:

mSQL="Select AufID, PosID, LeiID FROM TabAuftraege INNERJOIN TabPositionen on TabAuftraege.AufID=TabPositionen.AUFID WHERE KunID = " & mKNR

Und auch wieder auf objRS.EOF prüfen.

objCon.Close

Am Schluß sollte noch: Set objRS = Nothing stehen.

Tschau, Stefan