Set rs mit WHERE + AND
PeterDoering
Gesendet: 03.03.22 10:18
Betreff: RE: Set rs mit WHERE + AND



Extreme Veteran

Beiträge: 563
5002525
Hallo,

Umbauwfb - 03.03.22 08:59
vID_von = Me.txtFirmenID_von.Value 'braucht man das .Value? Brauche ich die Variable oder kann ich direkt den Wert des Textfelds einsetzen?
vID_zu = Me.txtFirmenID_zu.Value 'braucht man das .Value? Brauche ich die Variable oder kann ich direkt den Wert des Textfelds einsetzen?

Deklarationen passen. .Value ist die Default-Eigenschaft, d.h. man könnte sie auch weglassen. Aber ich schreibe auch die Default-Eigenschaft grundsätzlich aus, da andere Objekttypen andere Standard-Eigenschaften haben können, also um keine Verwirrung zu stiften.


Set rs_von = dB.OpenRecordset("SELECT" _
& " * FROM TeilnehmerAdressdatenT" _
& " WHERE AdressdatenID = " & vID_von, dbOpenSnapshot)

An der Syntax ist an sich nichts auszusetzen, aber ... (Rest siehe unten).


Do Until rs_von.EOF

Set rs_zu = dB.OpenRecordset("SELECT" _
& " Count (*) As Anz FROM TeilnehmerAdressdatenT" _
& " WHERE AdressdatenID = " & rs_von!TeilnehmerID, dbOpenDynaset) 'dieser Block läuft...
'warum läuft der Block mit AND nicht?
' Set rs_zu = dB.OpenRecordset("SELECT" _
' & " Count (*) As Anz FROM TeilnehmerAdressdatenT" _
' & " WHERE AdressdatenID = " & rs_von!TeilnehmerID" _
' & " AND TeilnehmerID = " & vID_zu, dbOpenDynaset) 'wie muss ich die Stelle mit dem AND schreiben?

Wie drückt sich denn das "läuft nicht" aus? Fehlermeldung? An der Syntax liegt es jedenfalls nicht.

Den Rest hab ich mal nicht kommentiert, weil ich gerade die Aufgabenstellung gelesen habe. ;-)

Du musst einfach nur folgendes machen:

sSQL = "UPDATE TeilnehmerAdressdatenT SET ID = " & vID_zu & " WHERE ID = " & vID_von & ";"
dB.Execute sSQL, dbFailOnError

Du brauchst weder Recordsets noch Schleifen.

Wenn du danach die rot-markierte Firma löschen willst, kannst du das über folgende Zeilen erledigen.

sSQL = "DELETE FROM NameDerFirmenTabelle WHERE ID = " & vID_von
dB.Execute sSQL, dbFailOnError

Also, ...
- das doppelte Hochkomma kommt nach dem =, nicht am Ende.
- die Löschung findet nicht in der Teilnehmer-Tabelle statt, sondern in der Firmentabelle, deren Namen du hier nicht erwähnt hast.
- AdressdatenID heißt in der Firmentabelle vermutlich ID und falls nicht, setze den richtigen Feldnamen ein.
- vID_von ist eine Variable, kein Objekt, daher hat sie keine Eigenschaften, d.h. .Value führt zu Syntaxfehlern.

Grundsätzlich könntest du alle Parameter direkt aus den Steuerelementen auslesen, aber wenn deren Namen recht lang sind und sie öfters gebraucht werden, empfiehlt es sich, kurze prägnante Variablennamen zu verwenden, um die Lesbarkeit des Codes zu erhöhen.

-----
Gruss - Peter
Top of the page Bottom of the page