Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Datensätze in anderer Tabelle hinzufügen

Begonnen von Paule, Oktober 20, 2016, 18:55:09

⏪ vorheriges - nächstes ⏩

Paule

Hallo,
ich habe ein Formular, in dem die Daten eines Verkaufsvorgangs gespeichert werden.
Manche Verkäufe finden auf Ratenbasis statt. Die einzelnen Raten werden in einer anderen Tabelle "CF_InstallmentsT" gespeichert.
Mit Klick auf dem Button in meinem Verkaufs-Formular werden - sofern als Zahlungsart "Ratenzahlung" angegeben ist - dann die Raten in der Tabelle Cf_InstallmentsT angelegt.

Nun kommt es von Zeit zu Zeit vor, dass wir die Datensätze bearbeiten müssen, weil wir z.B. eine Batterie ausgetauscht haben und die Seriennummer verändern müssen.
In dem Verkaufsformular springe ich dann zu dem Datensatz und ändere das entsprechende Feld.

Wenn ich dann aber wieder auf den Button gehe, wo auf Klick der aktuelle Datensatz gespeichert wird, dann fügt er erneut die Raten in der Tabelle "CF_InstallmentsT" hinzu. Ich habe jetzt also zum selben Verkaufsvorgang dieselben Raten zweimal.

Gibt es eine Möglichkeit, dies zu verhindern. Also zu sagen, dass er nur Raten in CF_Installments hinzufügen soll, sofern noch keine Raten mit der gleichen SalesID gespeichert in der Tabelle gespeichert sind? In der Tabelle CF_Installments haben wir einen FK zur SalesID (AutoWert).

Hier ist ein Ausschnitt aus dem bisherigen Code:

ZitatPrivate Sub AddNewSale_Click()
    DoCmd.RunCommand acCmdSaveRecord
   
    Dim strSQL As String
    Dim i As Integer
    If Liste80 = "SET_CAMP" And lstInstallmentPlans = "1" Then
    For i = 0 To 8
    strSQL = "INSERT INTO CF_InstallmentsT (ReferingSale, InstallmentDate, InstallmentSum, Notes) " & " Values(" & Me!SalesID & ", " & Format(DateAdd("m", i, Me!txtInstallmentStart), "\#yyyy\/mm\/dd\#") & ", 40000, " & i & ")"
    CurrentDb.Execute strSQL, 128
    Next i


Ich hätte auch diverse Möglichkeiten, es anders zu gestalten, aber ich würde gerne mit einem Button arbeiten. Daher die Frage, ob es da nicht eine elegante Lösung gibt.

Wäre über eure Hilfe sehr dankbar! :)

Viele Grüße

Beaker s.a.

Hallo Paul,
Ob es schon eingetragene Raten gibt kannst du über ein einfaches DCount auf
die Tabelle herausfinden; - wenn 0 -> anlegen sonst nicht.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Paule

Hi Ekkehard,
habe es jetzt so:


Dim strSQL As String
Dim i As Integer
If Liste80 = "SET_CAMP"
And lstInstallmentPlans = "1"
And DCount("[ReferingSale]", "CF_InstallmentsT", "[ReferingSale] = SalesID") = 0
Then
For i = 0 To 8
strSQL = "INSERT INTO CF_InstallmentsT (ReferingSale, InstallmentDate, InstallmentSum, Notes) " & " Values(" & Me!SalesID & ", " & Format(DateAdd("m", i, Me!txtInstallmentStart), "\#yyyy\/mm\/dd\#") & ", 40000, " & i + 1 & ")"

CurrentDb.Execute strSQL, 128
Next i
End If


Und scheint zu klappen. Vielen Dank! :)