Ich habe unter Formulare, ein frmBestellungen, in den eine Schaltfläche "Korrektur BestNrPopUp" ist. Wenn ich dieses Betätige macht es mir ein Fenster auf zur Eingabe der Bestellnummer. Bis hierhin funktioniert alles. Wenn ich aber eine Bestellnummer eingebe die es schon bereits gibt (2000), soll eine MsgBox sich öffnen mit der Aussage: das es die BesNr bereits vorhanden ist, zur Information das es die Bestellnummer bereits gibt und wenn es die Bestellnummer noch nicht vorhanden ist soll eine MsgBox sich öffnen wo drin steht Okay! die ich mit den Button OK wieder schließe.
Im Anhang habe ich die Datei. Ich komme auf den fehler nicht. Ich bin gerade dabei das alles zu lernen, und dieses ist eine Aufgabe aus mein Heft.
ich habe gerade kein Access zur Hand, aber der Laufzeitfehler 91 bedeutet, dass dein Code auf eine Objektvariable zugreifen will, die zum Zeitpunkt der Laufzeit kein Objekt zugewiesen hat (den Text der Fehlermeldung solltest du künftig mit angeben). Vielleicht stellst du den fehlerhaften Code jetzt und künftig nochmal als Text in CodeTags zur Verfügung, dann könnte dir vermutlich auch ohne Access geholfen werden.
Viele Grüße derHöpp
Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:1 Nutzer sagt Danke an derHoepp für diesen Beitrag 28 • JuergenRa
13.06.2024, 07:08 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2024, 07:13 von JuergenRa.)
Moin,
hier der Code. Private Sub Form_Load() DoCmd.MoveSize 6500, 9000 Me!KorrBestNr = Forms!frmBestellungen!Artikelbestellungen!BestNr End Sub 'Mit der Prozedur Form_Load() wird mit DoCmd und der Methode MoveSize das Pop-upFormular auf dem Bildschirm positioniert.
Private Sub cmdOkay_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim IntBestOK As Integer
On Error GoTo Mldg
Set db = CurrentDb() strSQL = "SELECT * FROM tblBestellungen WHERE tblBestellungen.BestNr = " & Me.KorrBestNr & "'" Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
If rs.RecordCount = 0 Then Exit Sub End If
IntBestOK = MsgBox("Leider existiert die Nummer " & rs("BestNr") & "bereits: " & vbCr & vbCr & "Für die KdNr: " & rs.Fields("KdNr") & "", vbOKOnly)
Forms!frmBestellungen!BestNr = Me!KorrBestNr DoCmd.Close Forms!frmBestellungen!Artikelbestellungen.SetFocus Forms!frmBestellungen!KdNr.SetFocus Exit Sub
rs.Close End Sub 'In der Prozedur cmdOkay_Click() wird in der ersten Zeile der Inhalt des Textfeldes des Pop-up-Formulars an das Steuerelement BestNr des Hauptformulars übergeben. 'Danach wird das Pop-up geschlossen, der Fokus wird auf das Unterformular Artikelbestellungen gesetzt, um eine Aktualisierung zu erzwingen. 'Zum Abschluss wird der Fokus wieder auf die KdNr des Hauptformulars gesetzt. Der Fehler Code:
Syntaxfehler in Zeichenfolge in Abfrageausdruckt tblBestellungen.BestNr = 1000 Fehlernummer 3075 danach Debugger: Laufzeitfehler 91, Qbjektvariable oder-Blockvariable nicht festgelegt.
13.06.2024, 23:15 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2024, 23:16 von derHoepp.)
Moin,
du solltest immer auf On Error verzichten, bis du alle möglichen Fehler kennst und sie umgehen kannst.
Der Fehler 91 kommt, weil die OpenRecordset-Methode kein RecordSet-Objekt zurückgegeben hat. Das liegt daran, dass du keinen gültigen SQL-String übergeben hast.
Versuch es zunächst einmal mit einem händischen SQl-String, ohne Where-Clause. Dann schaust du, ob du eventuell die Quotes doppeln musst, damit der Feldinhalt des Where-Teils eingeschlossen ist.
Viele Grüße derHöpp
Alternativ kannst du mal den Tabellennamen und den Punkt vor dem Feldnamen weglassen. Bei einer Einzeltabelle ist der nicht nötig.
Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:1 Nutzer sagt Danke an derHoepp für diesen Beitrag 28 • JuergenRa