Quantcast
Channel: Microsoft Access Forum
Viewing all articles
Browse latest Browse all 880

Control wird nicht referenziert.

$
0
0

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


Viewing all articles
Browse latest Browse all 880


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>