Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Aktualisierungsabfrage komplex

Begonnen von derilzemer, Mai 11, 2017, 18:06:26

⏪ vorheriges - nächstes ⏩

el_gomero

Moin Andreas,

der Code von gestern durchläuft alle IDs aus der tblSpiele. Innerhalb dieser Schleife schaut er für jede ID wie oft es diese im Fremdschlüsselfeld der tblZusatzKartenArtZuSpiel gibt (DCount). Wenn weniger als einmal vorhanden, dann wird diese ID eingefügt und im Fremdschlüssel für die Zusatzkarte der Wert 39. Die Anweisung steht zuerst in einer Stringvariablen, da kann sie bei auftretendem Fehler besser ausgewertet werden. Ausgeführt wird sie dann mit dem Execute-Befehl, die 128 dahinter steht für dbfailonerror, was bedeutet, dass eine "sprechende" Fehlermeldung ausgegeben wird, falls sie nicht ausführbar ist.

Gestern abend war ich schon müde und hab noch einiges parallel gemacht. Der gepostete Code liese sich noch vereinfachen.


Public Sub Update_Zusatzkarte()
Dim strSQL as string, db as dao.Database, rs as DAO.Recordset

Set db = currentdb

   ' nur SpieleID ohne korrespondierenden Fremdschlüssel übernehmen
   strSQL = "SELECT tblSpiele.SpielID " & _
             "FROM   tblSpiele " & _
             "   LEFT JOIN tblZusatzKartenArtZuSpiel ON tblSpiele.SpielID = tblZusatzKartenArtZuSpiel.SpielID_F " & _
             "WHERE  tblZusatzKartenArtZuSpiel.SpielID_F IS NULL"

   Set rs = db.OpenRecordset(strSQL)
Do until rs.eof
           ' Prüfung mit Dcount kann entfallen
           strSQL = "INSERT INTO tblZusatzKartenArtZuSpiel " & _
            " ( SpielID_F, ZusatzKartenArtID_F ) " & _
            " SELECT " & rs!SpielID & ", 39"
   db.execute strsql, 128
           rs.movenext
Loop
rs.close: set rs = nothing

Set db = nothing

End Sub


Eberhard packt das sicher noch einfacher, aber für einen Anfänger dürfte diese Lösung leichter zu überblicken sein.

Achja - und an dem Datenmodell gibt es nix auszusetzen ;)

Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

derilzemer

Hallo Jürgen,
danke für die Erklärungen. Noch einfacher kann man alles machen, ob es dann aber wirklich noch human readable bleibt ist wie du schon sagst oft unklar :). Danke fürs nachdenken und die Lösung. Das mit dem Datenmodell passt wirklich ziemlich gut, da die Forumsmitglieder (insbesondere Klaus und MaggieMay) sich hier beim entwerfen stark involviert hatten und somit auf das machbare und wesentliche geschaut haben.

Gruß Andreas

PS: Ich glaube, dass du mir bei dem hier auch den fehlenden Tip geben könntest, ist im Ansatz dem Thema hier ähnlich, nur dass es um eine Standardvorgabe geht (für das gleiche Feld übrigens)! http://www.access-o-mania.de/forum/index.php?topic=22413.0
Grüße und Dank im voraus
Andreas