PDA

Vollständige Version anzeigen : Fehler beim Öffnen eines Formular ohne Daten


Marcys
21.01.2008, 14:51
Hallo,

beim Öffnen eines Formular stelle ich mittels Form_Open das Datum in einem ActiveSteuerelment 2 Tage zurück.

Das Formular bezieht sich auf eine Abfrage die DS nach bestimmten Kriterien auflistet.

Nun Kommt es vor, dass alle Kriterien erfüllt sind und somit keine Daten (DS) angezeigt werden, d. h., das Formular bleibt leer. Dies ist auch alles richtig so

Beim Öffnen des Formulars ohne Daten bekomme ich jedoch einen Laufzeitfehler in Bezug auf mein Activesteuerelement. Ist ja auch klar und verständlich. Ich kann entweder auf Beenden oder Debuggen klicken.

Da mit dem Formular meine Kollegen arbeiten solle, die wahrscheinlich bei jeder Fehlermeldung mich anrufen und fragen was das ist, möchte ich dies irgendwie umgehen.
Das Formular befindet sich in einer Registerkarte eines Formulars.
Ich könnte z. B. Prüfen ob in der Abfrage DS vorhanden sind oder nicht.

Wie könnte ich sowas machen?

FW
21.01.2008, 15:02
... vielleicht hilft Dir DCOUNT weiter...

Marcys
21.01.2008, 15:07
.. vielleicht hilft Dir DCOUNT weiter...

wie müsste ich das denn angehen?

FW
21.01.2008, 15:13
... Du könntest in dem Open-Ereignis dieses canceln, wenn die Anzahl der Datensätze 0 ist:
Cancel = (DCount("*", "deineabfrage", "deinewherebedingung") = 0)
...

Marcys
21.01.2008, 15:28
Hi,

das heißt ich frage erstmal nach anzahl der DS per Dcount ab, und wenn dort keine DS vorhanden sind, dann führe ich meine prozedur gar nicht aus?
habe ich das richtig verstanden?

FW
21.01.2008, 15:29
... jo...

Marcys
21.01.2008, 15:37
ok,
dann werde ich versuchen mir was zu basteln.

FW
21.01.2008, 15:51
... relativ einfach könnte es auch so gehen:Private Form_Open(Cancel As Integer)
Dim r As Recordset

Set r = CurrentDb.OpenRecordset(namedeinesunterformularsteuerelements.Form.RecordSource, dbOpenSnapshot)
If r.RecordCount < 1 Then
Cancel = True
EndIf
r.Close
Set r = Nothing
If Cancel Then MsgBox "Meldung an den Benutzer"
End Sub...

Josef P.
21.01.2008, 16:02
Bevor hier weiter große Verrenkungen versucht werden, habe ich noch ein Frage: Wann bzw. bei welchem Code tritt der Fehler auf?

Marcys
21.01.2008, 16:58
Hallo Josef,

der Code bei form_open


me!combo_data_time_picker = date - 2

Der Fehler ist ein Laufzeitfehler. Wenn ich auf debuggen klicke gelange ich zu dem Code und die Zeile wird gelb markiert.

Dies passiert aber nur, wenn in dem Formular keine Datensätze zum bearbeiten sind. (Diese hole ich mir aus einer ABfrage)

Sind Datensätze zum schreiben/bearbeiten da, funktioniert alles wie ich es haben möchte. Das Datum in der combobox wird auch um 2 Tage nach hinten gesetzt.

Josef P.
21.01.2008, 17:12
... und das Steuerelemet combo_data_time_picker ist im Detailbereich des Forms, oder? Daher kann es nicht angesprochen werden. (Das würde übrigens auch bei normalen Textfeldern o.ä. nicht möglich sein.)
Lösung: Steuerelement in den Kopf-/Fuß-Bereich verlegen oder die Codeausführung vor diese Anweisung abbrechen
z.B. mittels:
if me.Recordset.RecordCount = 0 then
exit sub
end if
(oder ähnlicher Code)

Marcys
21.01.2008, 17:19
Hallo Josef,

also das Steuerelement kann ich leider nicht verlegen, es muss im Detailbereich des Form bleiben.
Werde mal den Code ausprobieren.
Habe die DB jetzt nicht da und habe mir einen ähnliche gebastelt. wenn ich den Code von FW verwende, bekomme ich eine Nachricht Laeufzeitfehler 438, Objekt unterstütz die Eigenschaft der Methode nicht :-(

Josef P.
21.01.2008, 17:42
Mir fällt gerade etwas auf: du schreibst, dass du bei Form_open das Datum einstellst. ... das funktioniert, wenn DS im Form vorhanden sind? Ich hätte vermutet, dass das erst ab Load funktioniert.

Mein Codebeispiel aus #11 hat einen Fehler: me.recordset.RecordCount ist die passende Prüfung.