Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Laufzeitfehler 2424

Begonnen von hanskuhn, August 05, 2009, 14:43:07

⏪ vorheriges - nächstes ⏩

hanskuhn

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??

DF6GL

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.

hanskuhn

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...

DF6GL

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.

hanskuhn

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

DF6GL

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.

hanskuhn

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.

DF6GL

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. 

hanskuhn

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 :/

hanskuhn

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...


Daniel Schunk

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

Daniel Schunk


Daniel Schunk


database

Hallo,

ZitatOn Top again ...

...und wozu bitte?