| Hallo Karl,
Wenn es sich um ein Hauptformular mit Unterformular handelt, solltest du die OpenForm-Zeile weglassen können. Warum du einige andere Zeilen drin hast, ist auch nicht ganz klar. Falls du SendKeys verwendest, um das Ereignis "Nach Aktualisierung" des Kombis auszulösen, dann geht das sicherer mit der Verwendung der Text-Eigenschaft als Trick. Ersetze mal testweise deinen Code durch die folgenden Zeilen. Fall das nicht funktioniert, solltest du deinen Code etwas im einzelnen erläutern und auch, was du mit "Auswahlprozedur der ComboBox" meinst und welche Ereignisse du noch verwendest:
Forms!frm_haupt!ComboJahrAuswahl = Me!Jahr Forms!frm_haupt!Combo1 = Me.Name Forms!frm_haupt!Combo2.SetFocus Forms!frm_haupt!Combo2.Text = Me!Nummer Me.Requery
es hat leider noch nicht richtig funktioniert. Ich erkläre mal ausführlicher:
Bevor du dir das durchliest, wenn du eine Idee hast, wie ich einen Unterformulareintrag per Doppelklick in meine Hauptmaske bekomme, sodass die zugehörigen Unterformulare aktuell geladen werden und die Prozedur uns diesen Fehler erspart, wäre ich sehr dankbar für einen Vorschlag - ich ärger mich mit diesem Code jetzt schon seit gestern rum. Ich weiß leider keine andere Möglichkeit - also Sendekeys ist nicht unbedingt nötig.
Hier meine Ausführungen:
In der Tat kann ich den Anfangsteil weglassen, allerdings läuft das Laden des ausgewählten Datensatzes dann nicht automatisch, sondern braucht immer noch eine weitere Bestätigung. Der per Doppelklick ausgewählte Datensatz wird auch tatsächlich ins Hauptfenster geladen. Allerdings soll man danach das Formular wie vorher benutzen können - das geht nicht. Wählt man in der Folge in einer der beiden ComBoBoxen einen Datensatz aus, erhält man:
Laufzeitfehler 2427: Sie haben einen Ausdruck ohne Wert eingegeben.
Beim Debuggen gelange ich an eine Stelle im Code, die normalerweise beim Ereignis "nach Aktualisierung" von der ersten ComboBox durchgeführt wird. Die normale Prozedur ist :
Private Sub Combo1_AfterUpdate() Suche_Satz Nz(Combo1, "", ComboJahrAuswahl, "Combo1" Me.AllowEdits = gblnIsUpdatetable End Sub
Nur damit klar ist wo das folgende normalerweise herkommt. Ich werde wie gesagt beim Debuggen auf folgendes verwiesen. Die angekreidete Stelle markiere ich mit ###:
Private Sub Suche_Satz(Nummer1 As String, Y As Integer, Feld As String) Dim sCriteria As String Dim I As Long Dim isLocked As Boolean Dim rs As New ADODB.Recordset Dim blnBerechtigt As Boolean
If Not IsNull(Controls(Feld)) Then 'And Controls(Feld) & "" <> "" Then
If mstrCurrentNummer1<> "P00000" And Not mblnactionLockedButShow Then CurrentProject.Connection.Execute "UPDATE tbl_LockedStatus SET isLocked=0 WHERE " & _ "Jahr=" & mintJahr1 & " AND Nummer='" & mstrCurrentNummer1 & "'" End If
sCriteria = "Nummer='" & Nummer1 & "'" & _ " AND Jahr=" & CInt(ComboJahrAuswahl) 'Datensatz kann nur aufgerufen werden, wenn dieser nicht von anderem User gesperrt ist If Nummer1 <> "P00000" Then isLocked = IsactionLocked(CLng(ComboJahrAuswahl), Nummer1, sCriteria) If isLocked And Not mblnactionLockedButShow Then Exit Sub End If
I = DCount("[Nummer]", "tbl_contact", sCriteria) mblnNoData = I = 0 Me.AllowAdditions = I > 0 And gblnIsUpdatetable If isLocked And mblnactionLockedButShow Then Me.AllowEdits = False gblnIsUpdatetable = False Set_Edit_Settings cmd_SwitchGlobalEdit.enabled = False Else Me.AllowEdits = True cmd_SwitchGlobalEdit.enabled = True End If Me.RecordSource = "SELECT * FROM tbl_contact WHERE " & sCriteria ### mstrCurrentNummer1 = Nummer mintJahr1 = Jahr
ComboJahrAuswahl.visible = True Combo1.visible = True Combo2.visible = True If Feld = "Combo2" Then Combo1 = Combo2 Else Combo2 = Combo1 End If
Me!frm_fo_endlos_np.Form.AllowEdits = False Me!frm_fo_endlos_np.Form.AllowAdditions = False Me!frm_fo_endlos.Form.AllowEdits = False Me!frm_fo_endlos.Form.AllowAdditions = False
'................... 'weiterer Code, prüft aber anderes - denke ich
End If End Sub
Viele Grüße,
Hulpi
|