Hallo
Ich habe vor einiger Zeit eigenständiges Suchformular kreiert. Das ist inzwischen gewachsen und ich wollte die Funktionialität überarbeiten. Das handling des Formulars passiert vollständig auf einer Klasse.
Beim ersten öffnen des Suchformulares werden via die Klasse alle nötigen Parameter, Event-Prozeduren etc. gesetzt. Beim Auswählen eines Buttons, der im Suchformular vorhanden ist, wird im aufrufenden Formular die Datenherkunft angepasst und das
Suchformular ausgeblendet, damit es schnell wieder zur Verfügung steht. Beim nächsten Klick auf den Suchen-Buttton im aufrufenden Formular wird das Suchformular einfach wieder eingeblendet. Soweit funktioniert alles gut
Jetzt habe ich ein Phänomen, welches ich nicht erklären kann. Ich möchte im Suchformular sowohl mit einem Mausklick als auch mit der Enter-Taste das Gleiche machen, nämlich suchen. Also habe ich in der Klasse einfach folgendes gemacht.
Private Sub cmdOK_Click()
UpdateCriteriaAndOrderBy
SearchForm.Visible = False
End Sub
und
Private Sub SearchForm_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyReturn 'Enter
Call cmdOK_Click
Case vbKeyEscape 'Escape
Call cmdCancel_Click
End Select
End Sub
Damit wird die Funktion ausgeführt:
Private Function UpdateCriteriaAndOrderBy()
Dim i As Long
Dim ctl As control
On Error GoTo UpdateCriteriaAndOrderBy_Error
With SearchCriteria
.ClearCriteria
.ClearOrderBy
If SearchForm!opgFilter = 1 Then
For i = 1 To 6
If Not IsNull(SearchForm("Suchfeld" & CStr(i))) Then
If SearchForm("Suchkriterium" & CStr(i)).Visible Then
Set ctl = SearchForm("Suchkriterium" & CStr(i))
ElseIf SearchForm("cboSuchkriterium" & CStr(i)).Visible Then
10 Set ctl = SearchForm("cboSuchkriterium" & CStr(i))
End If
20 If Not IsNull(ctl) Then
Es geht dabei um die Zeile 10 und 20.
Wenn ich per Mausklick im Suchformular die Suche starte, dann funktinoiert alles bestens. Wenn ich via Enter -Taste suche, dann gibt mir Zeile 10 bei jedem ungeraden Mal (die erste Suche, die Dritte, die Fünfte ect.) Null as Wert von ctl aus. Jedes
gerade Mal funktioniert sie.
Wie kann denn das sein? Ich verwende ja für vbReturn und den Klick immer die gleiche Prozedur?
Danke schon im Voraus und Gruss
Thomas
Danke und Gruss Thomas