Laufzeitfehler 91 (sehr dringend)
Hallo liebe Leut.
Ich muss morgen ein Access 2000 Projekt abgeben und sitz in der klemme.und zwar habe ich ein Bestell Formular erstellt bei dem man einen Kunden auswählt und durch einen btn Artikeldaten in das Listfeld WarenKorb übergibt.(Warenkorb eird nicht gespeichert).danach kann man durch btn speichern die Bestellung abschließen und der Auftrag wird gespeichert.
Funktioniert soweit auch wunderbar.Um fehler abzufangen hab ich einige einige prozeduren eingebaut: z.B wenn man keinen KUnden ausgewählt hat,die Menge>Bestand...etc.
Private Sub btnKorb_Click()
Dim a, b, c, n, i As Single
txtMenge.SetFocus
If Nz(txtKDNR) < 1 Then '
MsgBox "Bitte wählen sie einen Kunden aus"
End
End If
If txtMenge.Text <= "" Then
MsgBox "Bitte geben Sie eine Menge ein, die Sie in den Warenkorb legen möchten"
End
Else
txtbestand = DLookup("Bestand", "Artikelstamm", "Artikelnummer = " & LstArtikel) '
a = txtbestand.Value
b = txtMenge.Value
a = a - b
If a < 0 Or a > txtbestand.Value Then
MsgBox "Soviel ist zur Zeit nicht auf Lager,bitte weniger
txtMenge = "" '
End
Else
txtbestand.Value = a
End If
End If
wenn der "Füllvorgang "des Korbs unterbrochen wird,korrigiert man die Eingabe und dann nimmt er den Datensatz.Sobald ich jedoch den btn Speichern drücke erscheint der Laufzeitfehler 91:objektvariable oder With-Blockvariable nicht festgelegt und zwar an der mit ** makierten stelle
Private Sub BestSave_Click()
Dim bestandalt, bestellmenge, bestandneu As Integer
Dim i, n As Single
Dim x, y, a As Variant
If lstKorb.ListCount = 0 Then '
MsgBox "Es sind keine Artikel im Warenkorb"
Else
If MsgBox("Wollen Sie Speichern?", vbYesNo) = vbYes Then
n = lstKorb.ListCount
With Artikelstamm '
For i = 0 To n - 1
*** .FindFirst "Artikelnummer = " & Me!lstKorb.Column(0, i) '
bestandalt = .Fields("Bestand").Value
bestellmenge = lstKorb.Column(3, i)
bestandneu = bestandalt - bestellmenge
.Edit '
.Fields("Bestand").Value = bestandneu
.Update
Next i
End With
LstArtikel.Requery
y = lstKorb.ListCount
With Verkauf
.AddNew '
!Kundennummer = txtKDNR
!Datum = txtDatum
.Update '
End With
With Verkaufpos
For x = 0 To y - 1
.AddNew
!Auftragsnummer=DMax("[Auftragsnummer]","[Verkauf]")
!Artikelnummer = Me.lstKorb.Column(0, x)
!Menge = Me.lstKorb.Column(3, x)
!Betrag = Me.lstKorb.Column(5, x)
!Gewinn = Me.lstKorb.Column(6, x)
.Update
Next x
End With
End If
End If
txtMenge = ""
txtMenge.SetFocus
Me.lstKorb.RowSource = vbNullChar 'wert füe konstante 0
i = 0
txtZwsumme = ""
Kundenname.SetFocus
lstKunde.Enabled = True
lstKorb.Requery
Ich bin für alle Antworten sehr dankbar
Antwort schreiben
Antwort 1 von Marie vom 21.01.2020, 15:44 Options
Zitat:
Sobald ich jedoch den btn Speichern drücke erscheint der Laufzeitfehler 91:objektvariable oder With-Blockvariable nicht festgelegt und zwar an der mit ** makierten stelle
vermutlich ist es jetzt eh zu spät, weil schon 'morgen' ist. Aber das nächste Mal nimmst Du bitte den Button 'Code' und kopierst Deinen Code dann da hinein, damit man sieht, wo Du eingerückt hast und wo ein If anfängt und endet und das nicht selbst erstmal sich irgendwo einrücken muss.
Ich habe nun Deinen Code mal überall eingerückt, es fehlt in Private Sub BestSave_Click() kein End If, was häufig der Grund für diese Fehlermeldung ist.
Zitat:
Um fehler abzufangen hab ich einige einige prozeduren eingebaut: z.B wenn man keinen KUnden ausgewählt hat,die Menge>Bestand...etc.
Allerdings finde ich keine Fehlerroutinen. Bitte schreib mal überall on error goto und such dann mal deinen Fehler mit Einzelschritt, dann findest Du die Stelle.
Gruß marie