Unfreiwillig zwei Datensätze angelet

  • Access

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von DoSchwob.

    Unfreiwillig zwei Datensätze angelet

    Hallo,
    ich schaffe es mit einem Klick auf einen Button zwei Datensätze anzulegen.
    Will ich natürlich nicht!!!
    Bislang passiert dies nur bei, in diesem Fall, Kunden, die bislang noch keine Rechnung erhalten haben.
    Hat jemand eine Erklärung dafür?

    Visual Basic-Quellcode

    1. Private Sub cmdNeueRechnung_Click()
    2. On Error GoTo Err_cmdNeueRechnung_Click
    3. 'Neue Rechnung anlegen
    4. DoCmd.GoToRecord , , acNewRec
    5. With Me
    6. !Datum = Date
    7. !Rechnungsnummer = Me!Zaehler & Format(Date, "yyyy")
    8. End With
    9. 'Aktualisieren der Listbox
    10. Me!lstRechnungsnummern.Requery
    11. 'Fokus auf's UF setzen
    12. Forms("frmKundenRechnungen").Controls("frmRechnung").Controls("frmRechnungsposten")!Geliefert.SetFocus
    13. Exit_cmdNeueRechnung_Click:
    14. Exit Sub
    15. Err_cmdNeueRechnung_Click:
    16. MsgBox "Fehlermeldung: " & Err.Description & vbCr & _
    17. "Fehlernummer: " & Err.Number
    18. Resume Exit_cmdNeueRechnung_Click
    19. End Sub


    Ich habe auch bereits alles, bis auf : DoCmd.GoToRecord , , acNewRec, weggelassen.
    Auch dann erfolgt ein zweiter Datensatz.
    In der Tabelle werden diese Daten wie folgt gespeichert. die ID 148 wäre der von mir gewollte DS.
    Id_______l_kunde________Zaehler______RechnungsNr_____Datum
    147_______122___________191
    148_______122___________192________1482011_____21.12.2011

    Für einen guten tipp wäre ich sehr Dankbar.
    Gruß
    Holger
    Das goto zum neuen Datensatz ist das Problem. Wenn Rechnungen vorhanden sind wechselt er den Datensatz. Wenn keine vorhanden sind ist in der Anzeige ein leerer Datensatz, der beim Wechseln auf den neuen (wahrscheinlich wird der me.dirty aus irgendeinem grund) Datensatz angelegt wird. Verhinderst du, in dem du nur auf den neuen wechselst, wenn es auch nötig ist:

    Visual Basic-Quellcode

    1. If Not Me.NewRecord Then Call DoCmd.GoToRecord(AcRecord:=acNewRec)


    würde zusätzlich empfehlen, dass du nach der Vergabe der Nummer im with Block noch me.dirty = false zum speichern veranlasst.