Hallo Zusammen,
ich erhalte einen Fehler beim Schliessen des Formulars.
Ausgangssituation :
Ich öffne das Formular wie folgt :
Private Sub BT_FORM_ÖFFNEN_Click()
docmd.openform "FORM1",,,,,acDialog
call Brechnung
End sub
Schliesse ich das FORM1 nun über einen Button der folgenden Code ausführt ist alles in Ordnung.
docmd.close acform, me.name"Call Berechnung" wird im Anschluss korrekt ausgeführt.
Schliesse ich aber das FORM1 über eine Tastenbelegung ESC wirft mir die Call Berechnung einen Fehler der nicht schlüssig ist. ( Geht ja zuvor auch )
Habs auch mit anderen Calls und auch mit anderem Code im Anschluss versucht.. Es kommt ein Fehler.
Daher vermute ich, dass es mit der Tastenbelegung zusammenhängt. K.A..
Im FORM1 sieht der Code mit der Tastenbelegung so aus :
If Keycode = 27 then
docmd.close acform, me.name
keycode = 0
end if
Bei FORM1 handelt es sich immer um ein ungebundenes Forumlar.
Jemand ne Idee an was es liegen könnte ?
Vorab herzlichen Dank für euere Antworten
Lg Bernie
Ok hat sich erledigt.
Es lag am CALL zur Prozedur.
Irgendwie seltsam.
Man ruft das Formular im acDialog Modus auf und trotzdem schiesst diese Prozedur quer..
Zitat von: Bernie110 am November 29, 2023, 14:02:53Man ruft das Formular im acDialog Modus auf und trotzdem schiesst diese Prozedur quer..
Vermutlich hast du beim Verlassen mit ESC nicht die Daten eingegeben, die deine Brechnung (e verzweifelt gesucht) benötigt.
Hi Phil,
dann wäre das ja ziemlich plausible,
Aber so ist das leider nicht, da ja nichts passiert wenn ich über die Schaltfläche das Formular schliesse.
Es passierte ja nur beim ESC exit.
Bei der CallProzedur ging es lediglich darum aus einer Abfrage eine aktuelle Summe auszulesen.
Das habe ich über einen Recordset gemacht.
Jetzt mache ich das gleiche über eine Formalbasiertabfrage mit Dlookup und der Fehler kommt nicht mehr..
Vermutlich ist es besser, die Summe nicht in ein Feld einzulesen, sondern Sie eher mit einem UFO darzustellen.
Aber das will ich eigentlich nicht.
Keine Ahnung...
Lg Bernie
Hallo!
Auf welches Ereignis reagierst du, wenn du über Esc schließen willst?
Übrigens:
Du kannst bei einem Button auch einstellen, dass auf Esc reagiert wird.
Eigenschaft: Cancel
Gruß
Josef
Zitat von: Bernie110 am November 30, 2023, 15:24:08Aber so ist das leider nicht, da ja nichts passiert wenn ich über die Schaltfläche das Formular schliesse.
Es passierte ja nur beim ESC exit.
Bei der CallProzedur ging es lediglich darum aus einer Abfrage eine aktuelle Summe auszulesen.
Summen aus Feldern, die evtl. leer sind, wenn du den Dialog mit ESC abgebrochen hast? - Dann wäre das sehr plausibel.
Darüber hinaus macht es wenig Sinn hier weiter zu spekulieren, ohne deinen Code und den Ablauf zu kennen.
Zitat von: PhilS am Dezember 01, 2023, 17:34:07Summen aus Feldern, die evtl. leer sind, wenn du den Dialog mit ESC abgebrochen hast? - Dann wäre das sehr plausibel.
Hi Phil,
ich öffne ein Formular1 aus einem Formular0 mit acDialog. Wie kann dann eine Procedur im Formular0 unterbrochen werden, wenn ich das Forumlar1 mit Ecs schliesse ? Verstehe ich nicht. Unterbricht er da tatsächlich die im Anschluss folgende Procedur ab ?
Und wenn er es macht, warum bricht er die Procedur nicht ab, wenn ich docmd.close acform, me.name über einen Schalter betätige ?
Der Code war eigentlich ganz einfach.
aus Formular 0
Private Sub BT_FORM_ÖFFNEN_Click()
docmd.openform "FORM1",,,,,acDialog
call berechnung
End sub
Public Sub Berechnung ()
Dim dbA as Database
Dim rsA as Recordset
Set dbA = CurrentDB()
Set rsA = dbA.openRecordset("Select * From qyr_Sendung_summe_auslesen where SNDG_ID = me.sndg_ID, dbOpebndynaset, DBSeeChanges)
with rsA
Me.Summe_Kg = .fields("KG")
.close
end with
dbA.Close
end Sub(so ungefähr war der Code)
Es gibt 2 Methoden das Formular1 zu schliessen.
Per button oder per ESC
Beide haben den selben Code.
Docmd.close acform, me.name
Der Fehler trat wie folgt auf :
Formular wird geöffnet und gleich wieder geschlossen. Eben via ESC
Dann kam debuggen und er markierte die Stelle : mit Set rsA .. .das er da nichts findet.
Habs aber mehrmals geprüft.. auch wenn Daten in der Abfrage qyr_Sendung_summe_auslesen bereits vorhanden waren, gabs den selben fehler.
Allerdings wenn ich das Form2 via Button geschlossen habe gabs keinen Fehler.
Mittlerweile habe ich den ganzen Code mit eine rDlookupVariante ersetzt.
Nicht schön, aber es kommt zu keinem Fehler mehr.
Lg Bernie
Zitat von: Bernie110 am Dezember 05, 2023, 14:02:16Der Fehler trat wie folgt auf :
Formular wird geöffnet und gleich wieder geschlossen. Eben via ESC
Dann kam debuggen und er markierte die Stelle : mit Set rsA .. .das er da nichts findet.
Ich vermute, der Fehler kam eher bei
Me.Summe_Kg = .fields("KG") und lautete "Unzulässige Verwendung von Null".
ESC schließt ja nicht nur das Formular (das passiert sowieso nur, wenn man das so konfiguriert/programmiert), sondern in allererster Linie
macht ESC die Eingabe in gebundenen Formularen rückgängig.
Ob deine Anfrage generell Daten enthält ist nur ein wichtiger Aspekt. Genauso wichtig ist u.U., ob das Feld KG in einem Recordset einen echten Wert oder NULL enthält.
Ich glaube es macht keinen Sinn hier weiter über eine rekonstruierte Vergangenheit zu diskutieren. Generell ist es möglich dass das Abbrechen einer Formulareingabe mit ESC dazu führen kann, dass nachfolgende Prozesse wegen fehlender Daten in Fehler laufen. Das genaue wieso/weshalb/warum und wie man es vermeiden kann, können wir gern an einem konkreten Beispiel diskutieren, wenn es aktuell relevant ist.
Hallo Phil, herzlichen Dank.
Ok so machen wir das !
Schönen Tag noch !
Lg Bernie