Access Code VBA?
Hey, ich habe ein Textfeld mit dem Namen: txtSuchen , welches folgendes Ereignis, bei Veränderung hat:
Private Sub txtSuchen_Change()
If Me.Dirty Then
DoCmd.RunCommand acCmdSaveRecord
End If
Me.RecordsetClone.FindFirst ("[Produkt] Like '" & Me!txtSuchen.Text & "*'")
If Me.RecordsetClone.NoMatch Then
Me!txtSuchen.SelStart = Len("" & Me!txtSuchen.Text)
Exit Sub
Else
Me.Bookmark = Me.RecordsetClone.Bookmark
Me!txtSuchen.SetFocus
Me!txtSuchen.SelStart = Len("" & Me!txtSuchen.Text)
End If
End Sub
Das Suchfeld ist in einem Formular Namens Hauptmenü, soll aber die Aktion in einem Unterformular Namens InstallationskeysFormular ausführen, der Code funktioniert leider nur dann, wenn man etwas im gleichen Formular suchen möchte, kann mir jemand sagen, wie ich den Code umschreiben müsste, dass er die Aktion in dem Unterformular ausführt?
2 Antworten
Also das Unterformular ist direkt im Hauptformular eingebunden? Dann kannst du es wie ein Steuerelement mit dem Namen ansprechen, den es gekriegt hat. Standardmäßig ist das der Name, unter dem das Unterformular gespeichert ist. Also in deinem Fall Me.InstallationskeysFormular.Form.
Mir ist nicht so ganz klar, was du mit dem Code vorhast. Du scheinst auf den ersten Datensatz gehen zu wollen, der mit dem gesuchten Text anfängt. Ich würde das Suchfeld ungebunden machen und die Datenbasis vom Unterformular an das Suchfeld anpassen:
Private Sub txtSuchen_Change()
Me.InstallationskeysFormular.Form.RecordSource = "SELECT * FROM Keys WHERE Produkt LIKE '" & Me!txtSuchen.Text & "*'"
End Sub
Außerdem ist natürlich die Frage, ob die Suche wirklich beim Change (also bei jedem Tastendruck) oder nur einmal am Ende der Eingabe (txtSuchen_AfterUpdate bzw. Ereignisprozedur "Nach Aktualisierung") ausgeführt werden soll. Je nachdem, wie viele Daten in der Tabelle stehen, kann es sonst sein, dass man die Suche nicht flüssig eingeben kann, weil eben nach jeder Taste gesucht wird und man erst weiterschreiben kann, wenn die Suche fertig ist.
Den Beleg kannst du im RecordSource einfach mit einbauen:
Me.InstallationskeysFormular.Form.RecordSource = "SELECT * FROM Keys WHERE Produkt LIKE '" & Me!txtSuchen.Text & "*' AND Beleg LIKE '" & Me.txtBelegSuchen.Text & "*'"
das Me verändern
die Tabelle ist nicht überdimensioniert groß und würde das gerne mit nach jeder Eingabe machen, ich möchte 2 von solchen Suchfeldern einbauen, damit man einmal nach Produkt und einmal nach beleg suchen kann