Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: hanskuhn am August 05, 2009, 14:43:07

Titel: Laufzeitfehler 2424
Beitrag von: hanskuhn am August 05, 2009, 14:43:07
Hallo,

ich darf mich seit kurzem plötzlich mit diesem Laufzeitfehler rumschlagen (Der von Ihnen eingegebene Ausdruck enthält einen Feld-, Steuerelement- oder Eigenschaftsnamen, der von MS Office nicht gefunden werden kann.). Woher immer der auch kommt?!
Also er tritt in folgender Zeile auf:

If Me!ctrlDKEinAus = False Then
...

Nun dachte ich, dass er den angegebenen Steuerelementinhalt bzw den Feldnamen, auf welchen verwiesen wird, nicht finden kann. Habe allerdings alles kontrolliert. An der dem Formular zugrunde liegenden Abfrage wurde nichts geändert, an der Tabelle und dem Spaltennamen nicht, die Checkbox ctrlDKEinAus heisst auch so und sie ist ein Ja/Nein-Feld. Was kann diesen Fehler denn noch auslösen??
Titel: Re: Laufzeitfehler 2424
Beitrag von: DF6GL am August 05, 2009, 14:50:50
Hallo,



wenn denn alles kontrolliert und für i. O. befunden wurde, könnte die DB zerschossen sein. In diesem Fall eine neue leere DB anlegen und dort alles aus der alten importieren.
Titel: Re: Laufzeitfehler 2424
Beitrag von: hanskuhn am August 05, 2009, 16:01:56
Drastische Maßnahme....

Hat aber leider auch nicht funktioniert.   :-\ Ist echt komisch, von dem ganzen Sub, der schon recht lang ist, ist halt nur dieser Teil plötzlich fehlerhaft:

Zitat'If Me!ctrlDKEinAus = False Then
'Forms!frm1!cmbStatus.RowSource = "SELECT * FROM [...]"
'Else
'Forms!frm1!cmbStatus.RowSource = "SELECT * FROM [...]"
'End If

und in der ersten Zeile bleibt er, wie gesagt, hängen. Manchmal hat Access aber auch echt komische Aussetzer...
Titel: Re: Laufzeitfehler 2424
Beitrag von: DF6GL am August 05, 2009, 16:50:56
Hallo,


na, so schlimm ist es mit einer neuen DB ja auch nicht, dauert höchstens 1 Minute...


Gibt es tatsächlich (noch) im dem Form, in dem dieser Code laufen soll, ein Steueerlement mit Namen "ctrlDKEinAus" ?

Ist "'Forms!frm1"  ein anderes gleichzeitig geöffnetes Form oder dasjeneige, in dem der Code abläuft?  Wenn letzteres, warum wird nicht "Me" benutzt?


Steht vor dem Codeschnipsel evtl. der Aufruf einer Sub/Funktion, die keinen Error-Handler hat?

Am Besten postest Du keine Codefragmente, sondern den völlständigen Code der Prozedur.
Titel: Re: Laufzeitfehler 2424
Beitrag von: hanskuhn am August 06, 2009, 09:59:36
Ok. Es handelt sich um ein Ufo, welches sich auf das Hauptformular bezieht (Das Steuerlement existiert, habe es sogar gelöscht  und neu erstellt):

Private Sub Form_Click()

On Error GoTo myError

Forms!frm1!cmbTHG.RowSource = "SELECT * FROM qryTHGHH"

' Aktualisiert den DS im frm1 nach Klick im ufo (Synchronisierung):

Dim lngStore As Long
Dim rs As DAO.Recordset
Set rs = Forms!frm1.RecordsetClone

'im RecordsetClone von Formular2 die ID aus dem aktuellen Formular finden
rs.FindFirst "reID = " & Me!reID
If Not rs.NoMatch Then
 'Anzeige im Formular2 mit dessen RecordsetClone synchronisieren
 Forms!frm1.Bookmark = rs.Bookmark
End If

Set rs = Nothing


' Anzeige der KostenArt und KostenartNummer im lstKostenart (gleicher Code im AfterUpdate-Ereignis des cmbHH)
Forms!frm1!lstKostenArten.RowSource = "SELECT qryHHKostenA4tf.KostenANr, qryHHKostenA4tf.KostenABezeichnung FROM qryHHKostenA4tf WHERE HHIDRef = " & Forms!frm1!cmbHH.Column(1) & ""

' Anzeige der Beschreibung im Textfeld (gleicher Code im AfterUpdate-Ereignis des cmbHH)

Forms!frm1!tfBeschreibung = "Zweckbestimmung: " & DLookup("THGZweck", "qryTHGHH", "THGHHID= " & Forms!frm1!cmbTHG & "") _
& vbCrLf & vbCrLf & "Bezeichnung der Haushaltsstelle: " & DLookup("HHBezeichnung", "qryHH", "HHNr= '" & Forms!frm1!cmbHH.Column(3) & "'") _
& vbCrLf & vbCrLf & "Bezeichnung der Kostenstelle:  " & DLookup("KstBezeichnung", "tblKst", "KstNr= '" & Forms!frm1!cmbKst.Column(1) & "'")

' Anzeige der Einnahmen bzw. Ausgaben der HH in der Übersicht oben (gleicher Code im After_Update des cmbHH)
Forms!frm1!tfSummeHH = (Nz(DSum("[reEinAusNetto]", "[qryStamm]", "[HHNr]= '" & Forms!frm1!cmbHH.Column(3) & "' AND [DKEinAus] = True"), 0) - _
Nz(DSum("[reEinAusNetto]", "[qryStamm]", "[HHNr]= '" & Forms!frm1!cmbHH.Column(3) & "' AND [DKEinAus] = False"), 0))
Forms!frm1!tfSollHH = Val(Forms!frm1!cmbHH.Column(4))

' Anzeige der HH im Textfeld oben Übersicht
Forms!frm1!tfHHII = Forms!frm1!cmbHH.Column(3)

' Kontrollcenter für Kst (Gleicher Code im After_Update-Ereignis des cmbKst)

Forms!frm1!tfSummeKstEin = Nz(DSum("[reEinAusNetto]", "[qryStamm]", "[KstNr]= '" & Forms.frm1.cmbKst.Column(1) & "' And [DKEinAus]= TRUE"), 0) 'Summe der Debitoren der Kostenstelle
Forms!frm1!tfSummeKstAus = Nz(DSum("[reEinAusNetto]", "[qryStamm]", "[KstNr]= '" & Forms.frm1.cmbKst.Column(1) & "' And [DKEinAus] = FALSE"), 0) 'Summe der Kreditoren der Kostenstelle


' Anzeige der Kst im Textfeld oben Übersicht
Forms!frm1!tfKstII = Forms!frm1!cmbKst.Column(1)


' Filtern des frm1 mit der Kombination (HH, Kst) nach Selektion eines Datensatz im ufo.

If Nz(Forms!frm1!cmbHH, 0) = 0 And Forms!frm1!cmbRechngeh.Column(1) = 2 Then
   Me.Form.Filter = "DKNr LIKE 'G*'"

   ElseIf Nz(Forms!frm1!cmbHH, 0) <> 0 And Forms!frm1!cmbRechngeh.Column(1) = 2 Then
   Me.Form.Filter = "HHKstID=" & Forms!frm1!cmbHH & " And DKNr LIKE 'G*'"

   ElseIf Nz(Forms!frm1!cmbHH, 0) = 0 And Forms!frm1!cmbRechngeh.Column(1) = 1 Then
   Me.Form.Filter = "DKNr NOT LIKE 'G*'"

   ElseIf Nz(Forms!frm1!cmbHH, 0) <> 0 And Forms!frm1!cmbRechngeh.Column(1) = 1 Then
   Me.Form.Filter = "HHKstID=" & Forms!frm1!cmbHH & " And DKNr NOT LIKE 'G*'"

   ElseIf Nz(Forms!frm1!cmbHH, 0) = 0 And Forms!frm1!cmbRechngeh.Column(1) = 3 Then
   Me.Form.FilterOn = False
   Me.Requery
   Exit Sub

   ElseIf Nz(Forms!frm1!cmbHH, 0) <> 0 And Forms!frm1!cmbRechngeh.Column(1) = 3 Then
   Me.Form.Filter = "HHKstID=" & Forms!frm1!cmbHH

   Else
   MsgBox "Unbekannte Selektion"
   
   End If
Me.Form.FilterOn = True

' Dem cmbStatus werden die möglichen Stati zugewiesen, je nach dem, ob es sich um einen Debitor oder Kreditor handelt
If Me!ctrlDKEinAus = False Then
Forms!frm1!cmbStatus.RowSource = "SELECT * FROM tblStatus WHERE StatusID = 1 OR StatusID = 2 OR StatusID = 3 OR StatusID = 6 ORDER BY StatusID"
Else
Forms!frm1!cmbStatus.RowSource = "SELECT * FROM tblStatus WHERE StatusID = 4 OR StatusID = 5 OR StatusID = 7 OR StatusID = 8 ORDER BY StatusID"
End If


' Der Datensatzanzeiger wird nach dem Filtern des ufo wieder auf den gleichen Datensatz wie zuvor gesetzt:

lngStore = Forms.frm1.reID

'Bildschirmflackern reduzieren
Me.Painting = False

Me.Requery
Me.RecordsetClone.FindFirst "reID = " & lngStore
Me.Bookmark = Me.RecordsetClone.Bookmark

myExit:
Me.Painting = True
Exit Sub

myError:
Select Case Err.Number
 Case 3159
   'not a valid bookmark
   Resume myExit
 Case Else
   MsgBox "Exception Nr. " & Err.Number & " " & Err.Description
   Resume myExit
End Select

End Sub


Davor existiert übrigens keine Sub/Funktion
Titel: Re: Laufzeitfehler 2424
Beitrag von: DF6GL am August 06, 2009, 10:42:05
Hallo,



mhmm,  habe noch Probleme bei der Code-Interpretation..

Wenn Forms!frm1   das Hauptform und Me das Formular, das in einem UFO-Steuerelement in Forms!frm1 angezeigt wird ist,
dann solltest Du für Forms!frm1     Me.Parent     schreiben .



Demnach muß sich  Me!ctrlDKEinAus  im Unterform befinden.



Weiterhin ist mir nicht klar, warum mittels Ereignis des Unterforms "Beim Klicken" eine Filterung des HF erfolgen soll.  Ist das UFO nicht mit dem Hauptform  über dessen Eigenschaften "Verknüpfen von/nach" verbunden?

Mein Eindruck ist, daß die Filterungen  wie durch die Brust ins Auge geschossen erfolgen. Ich kenne aber die Hintergründe nicht.


(Gravierende) syntaktische Fehler kann ich jedoch per Augenschein nicht entdecken.
Titel: Re: Laufzeitfehler 2424
Beitrag von: hanskuhn am August 06, 2009, 11:05:15
Zitat...dann solltest Du für Forms!frm1     Me.Parent     schreiben .
Ja, da ist von der Syntax noch vieles aus den Anfangstagen. Habe es aber mal eben geändert.
So ist es auch mit dem Synchronisieren des Haupt- und Ufos. Ich wusste nicht, dass es da eine Verknüpfen-Eigenschaft gibt, die das auch handeln kann?! Und wenn es sie gibt: Kann ich dann auch bedingte Synchronisierungen machen, wie ich es jetzt drin habe? Also bspw. wenn die Checkbox = False, dann lade nur DS xy in das Kombi im Hauptformular usw..


ZitatDemnach muß sich  Me!ctrlDKEinAus  im Unterform befinden.

So ist es.
Titel: Re: Laufzeitfehler 2424
Beitrag von: DF6GL am August 06, 2009, 11:25:36
Hallo,



"Kann ich dann auch bedingte Synchronisierungen machen, wie ich es jetzt drin habe?"

na klar.

HF und Unterformular sind sozusagen über diese Eigenschaft verbunden. 
Titel: Re: Laufzeitfehler 2424
Beitrag von: hanskuhn am August 06, 2009, 11:55:20
Nu gut, danke. Da werde ich mich mal einlesen. Vlt kann ich meinen Fehler damit ja "umgehen", auch wenn ich gerne wuesste, was da schief laeuft :/
Titel: Re: Laufzeitfehler 2424
Beitrag von: hanskuhn am August 06, 2009, 13:34:30
Hm, ich habe den betreffenden If-Block nun an den Anfang der Sub gesetzt - und es funktioniert. Aber von logischer Erschließung kann da nicht die Rede sein...
Titel: Re: Laufzeitfehler 2424
Beitrag von: DF6GL am August 06, 2009, 14:00:46
Hallo,


ja, das kann ich auch nicht nachvollziehen...
Titel: Offtopic: Code aus Haushaltsdatenbank?
Beitrag von: Daniel Schunk am September 04, 2009, 09:58:06
Hallo Herr Kuhn,

ist Ihr Beispiel aus #4 einer Haushaltsdatenbank entnommen?

Ich erstelle derzeit in einem Projekt eine ähnliche Datenbank mit Access. Evtl. könnten wir uns kurz austauschen, da ich bei einigen Haushaltsbesonderheiten nicht weiß, wie ich diese in Access umsetzen soll (Verpflichtungsermächtigungen, Deckungsfähigkeit).

Gruß, Daniel Schunk
Titel: Re: Laufzeitfehler 2424
Beitrag von: Daniel Schunk am Mai 18, 2010, 10:40:10
On Top ...
Titel: Re: Laufzeitfehler 2424
Beitrag von: Daniel Schunk am Juli 26, 2010, 08:37:15
On Top again ...
Titel: Re: Laufzeitfehler 2424
Beitrag von: database am Juli 26, 2010, 15:55:03
Hallo,

ZitatOn Top again ...

...und wozu bitte?
Titel: Re: Laufzeitfehler 2424
Beitrag von: Daniel Schunk am Juli 27, 2010, 08:18:47
Hallo, database,

ich wollte damit bezwecken, Herrn Kuhn zu erreichen. Via PM hatte ich es schon vor einiger Zeit probiert, jedoch ohne Feedback.

In diesem Thread habe ich einen Code-Teil aus einem Projekt des Thread-Starters stammt. Ich wollte mich eigentlich nur fachlich austauschen - IMHO ist doch ein solches Forum auch dazu da, oder?

Gruß, Daniel
Titel: Re: Laufzeitfehler 2424
Beitrag von: database am Juli 27, 2010, 12:55:16
Hallo,
ZitatIMHO ist doch ein solches Forum auch dazu da, oder

...habe ich nicht bekritelt oder etwa doch?

ZitatVia PM hatte ich es schon vor einiger Zeit probiert, jedoch ohne Feedback
Ist eine gute Methode - auf jeden Fall besser als ein Thema, das seit 6. August 2009 quasi tot herumliegt wieder zu reaktivieren.
Zumindest hättest du ja auch reinschreiben können was du damit bezweckst. ;D
So aber könnte man annehmen, dass die Frage noch immer nicht geklärt sei ...

Alles OK?

Grüße

Peter
Titel: Re: Laufzeitfehler 2424
Beitrag von: Daniel Schunk am Juli 28, 2010, 09:45:34
Hallo, Peter,

ZitatHallo,

Zitat: IMHO ist doch ein solches Forum auch dazu da, oder

...habe ich nicht bekritelt oder etwa doch?

Nein, hast du nicht - kritisch hatte ich deine Reaktion auch nicht aufgefasst.

Tja, Feedback habe ich vom User leider bisher noch nicht bekommen, sowohl auf die PM als auch auf die Frage vom 4.IX.2009 hier im Thread ...  :-\

Evtl. rührt sich ja noch was  :)

Gruß, Daniel