Problem mit VBA unter Access

alteDL ist der Wert sofern vorher schon mal was in Durchläufer drinnen gestanden ist.

Also wenn vorher Ja drinnen war, steht bei Position 2, 3,4,.... auch noch Ja drinnen.

DLookup? Noch nie gehört, muss ich mal durchlesen. Das Programm ist einfach von ganz klein auf sehr gross gewachsen mittlerweile mit AS400 anbindung Mailfunktion usw. und da ist es halt als VBA Noob nicht so leicht, etwas nachträglich einzubauen.
 
Diese alteDL ist heikel.

Du hast geschrieben, dass ersetzt werden soll, wenn das Feld leer ist, Jetzt überschreibst du es vorher mit alteDL, die zu irgendeinem Zeitpunkt irgendwo abgefüllt ist. Prüf die Variable doch mal auf Inhalt. Lass sie dir mit debug.print ausgeben.
Denn der If, der sollte jetzt wirklich funktionieren. Ich mache den zu tausenden so in meinen Programmen....
 
Was für eine Wiederholung? Ich sehe nicht, was die alteDL bewirken soll.
Erklär mal genauer was du da machen willst.
 
In alteDL wird der letzte Wert von Durchläufer gespeichert und wenn ich eine neue Position anlege, wird der Wert in Durchläufer geschrieben.

Hier der Code

Code:
Private Sub Form_BeforeInsert(Cancel As Integer)
  Me.Position = holeNaechstePos
  Me.PartieNr = holeNaechstePartieNR
  Me.Holzart = alteHolzart
  Me.Durchläufer = alteDl
  Me.Klasse = alteKlasse
  Me.nummer = holeNaechstenummer
End Sub

Private Sub Form_AfterUpdate()
On Error Resume Next
  alteHolzart = Me.Holzart
  alteKlasse = Me.Klasse
  alteDl = Me.Durchläufer
  ersterDSPos = True
End Sub

Private Sub Durchläufer_AfterUpdate()
  'If Not IsEmpty(alteDl) Then  Auskommentiert
  ' Me.Durchläufer = alteDl Auskommentiert
  ' Else Auskommentiert
  Set rs = CurrentDb.OpenRecordset("SELECT Durchläufer FROM artikel WHERE Artikel = '" & Me.Holzart & "'")
  If Not rs.EOF Then
  If Trim(Nz(Me.Durchläufer)) = "" Then Me.Durchläufer = rs("Durchläufer")
  End If
  rs.Close
  Set rs = Nothing
  'End If Auskommentiert
End Sub

Wenn also bei Position 1 einmal Ja drinnen war, wird bei Position 2 auch wieder Ja eingebaut. Soll aber Artikel unabhängig funktionieren.

Bei den anderen Feldern funktioniert es ohne Probleme mit demselben Code.
 
alteDl ist im "Formularheader" definiert, zusammen mit allen anderen Sich wiederholenden Variablen:

Code:
Option Compare Database
Dim alteHolzart As String, ersterDSPos As Boolean
Dim alteDl As String
Dim alteKlasse As String
 
Zurück