Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: zorlayan am Juli 26, 2019, 16:17:25

Titel: Form_ID Zahl
Beitrag von: zorlayan am Juli 26, 2019, 16:17:25
Hallo Freunde,

ich habe folgendes Problem  ::)

ich habe ein Formular (FrmKasse), sein PriSchlüssel (Buchungen_ID) ist keine AutoWert sondern eine Zahl, fängt mit 0 an und  als fortlaufende Nr weitergehen soll.


in einem anderen Formular habe ich die Datensätze zum per Klick in das (FrmKasse) zum kopieren.

Problem: Wenn ich mit foldengen Code das Formular (FrmKasse) öffne und bestehende Datensätze in das kopieren möchte kopiert ersten Datensatz immer in Form_ID (0).

Code:

DoCmd.OpenForm "FrmKasse"

  Dim BuchID As Integer
  BuchID = Forms.FrmKasse!Buchungen_ID

    If BuchID = 0 Then
BuchID = Nz(DMax("Buchungen_ID", "TblBuchungen"), 0) + 1
    Else
    DoCmd.GoToRecord , , acNewRec 'Neuer Datensatz
    End If


wie kann ich das Problem beseitigen?

Vielen Dank im Voraus an allen zur Lösung beteiligt werden.

VG
Zorlayan
Titel: Re: Form_ID Zahl
Beitrag von: DF6GL am Juli 26, 2019, 16:49:05
Hallo,

kannst Du erklären, was Du überhaupt erreichen willst?


Irgendwie kopierst Du nichts, Du setzt lediglich "BuchID" auf 1, wenn es 0 ist.


btw: Warum nimmst Du keinen Autowert als Primärschlüssel?

Titel: Re: Form_ID Zahl
Beitrag von: zorlayan am Juli 26, 2019, 17:19:16
wenn es dein Wunsch ist, hier ist der Code.  ;)
Ich will keinen AutoWert weil die Buchungen ich nur ein mal hinzufügen möchte.

Public Sub KaufBuchungen()

'On Error Resume Next

'kontrolle ab hier
'Buchungen hinzufügen
Dim VerTitel As String, VerName As String, VerNachname As String
VerTitel = Forms.ZwiForm2!VTitel
VerName = Forms.ZwiForm2!VName
VerNachname = Forms.ZwiForm2!VNach

DoCmd.OpenForm "FrmKasse"
    'Nur für dne ersten Eintrag
  Dim BuchID As Integer
  BuchID = Forms.FrmKasse!Buchungen_ID
    If BuchID = 0 Then
BuchID = Nz(DMax("Buchungen_ID", "FrmKasse"), 0) + 1
    Else
    DoCmd.GoToRecord , , acNewRec 'Neuer Datensatz
    End If

Forms.FrmKasse!Konto_ID = Forms.ZwiForm2!Konto_ID
Forms.FrmKasse!Kategorie_ID = 3
Forms.FrmKasse!Ausgabe = Forms.ZwiForm2!EK_Preis
Dim KString As String
KString = (VerTitel & Space(1) & VerName & Space(2) & VerNachname)
Forms.FrmKasse!Begünstigter_Einzahler = KString
Forms.FrmKasse!Datum = Forms.ZwiForm2!KDatum
Forms.FrmKasse!Verwendungszweck = Forms.ZwiForm2!VerZweck



DoCmd.Save
'On Error GoTo 0


DoCmd.OpenForm ("Drucken")


End Sub
Titel: Re: Form_ID Zahl
Beitrag von: MzKlMu am Juli 26, 2019, 18:19:04
Hallo,
ZitatIch will keinen AutoWert weil die Buchungen ich nur ein mal hinzufügen möchte.
verstehe ich nicht, gerade dann kannst Du doch einen Autowert verwenden. Der zählt ja auch nur automatisch hoch, wie das DMax auch.
Titel: Re: Form_ID Zahl
Beitrag von: DF6GL am Juli 26, 2019, 20:50:59
Hallo,


Du öffnest ein Formular, das den "ersten" DS anzeigt, das ist (vermutlich) der mit BuchID =0.

Sodann berechnest Du die max. BuchID +1 , aber ohne diesen Wert weiter zu verwenden.

Gotorecord wird vermutlich nie ausgeführt und somit wird der "erste" Ds (mit BuchID =0) durch die anschliessenden Zuweisungen überschrieben.

Wahrscheinlich willst Du aber dies erreichen:


Zitat.
.
.
DoCmd.OpenForm "FrmKasse", , , , acFormAdd

Forms.FrmKasse!BuchID = Nz(DMax("Buchungen_ID", "FrmKasse"), 0) + 1 

'<Edit>: Forms.FrmKasse!BuchID = Nz(DMax("Buchungen_ID", "FrmKasse"), -1) + 1    Wenn bei 0 begonnen werden soll </Edit>

Forms.FrmKasse!Konto_ID = Forms.ZwiForm2!Konto_ID
.
.
.