Neuigkeiten:

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

Mobiles Hauptmenü

Suchfunktion, mit Teilangaben

Begonnen von jeep_66, September 15, 2010, 13:58:35

⏪ vorheriges - nächstes ⏩

jeep_66

Hallo zusammen,
ich möchte in meinem Formular gerne ein Suchfeld, in dem ich auch Teilangaben machen kann.
z.B der Kunde heißt MG Motoren, dann möchte ich, dass ich durch eingabe von Motoren den Kunden finden kann.
Ich habe jetzt ein Suchfeld mit dem Assistenten erstellt. Nur hier muß ich den genauen Namen eingeben.
Für Hilfe wäre ich sehr dankbar.
Gruß
Markus

MzKlMu

Hallo,
dann zeige bitte mal den Code, wie Du es mit dem ganzen Namen gemacht hast.
Gruß Klaus

jeep_66

gerne... wie gesagt mit dem Assistenten erstellt

Private Sub Kombinationsfeld130_AfterUpdate()
    ' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[KDNR] = " & Str(Me![Kombinationsfeld130])
    Me.Bookmark = rs.Bookmark
End Sub

MzKlMu

Hallo,
mit einem Kombifeld geht das nicht. Nimm ein normales Textfeld.
Der Code muss etwas angepasst werden. Du darfst jetzt nicht mehr mit der KDNR vergleichen, sondern mit dessen Name.

Private Sub TextFeld_AfterUpdate()
    ' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[KundenName] Like "*" & Str(Me![TextFeld]) & "*"
    Me.Bookmark = rs.Bookmark
End Sub


Gruß Klaus

jeep_66

Vielen Dank für die Antwort, aber leider.... es wird was gesucht nur gefunden wird nichts.
ich habe den code so eingeben bzw verändert.

Private Sub Text244_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[Name1] Like " * " & Str(Me![Text244]) & " * ""
Me.Bookmark = rs.Bookmark
End Sub

da habe ich bestimmt was falsch gemacht-oder?

DF6GL

Hallo,

ja....

niemand hat was von Leerzeichen um die Sternchen herum gesagt/geschrieben..


(btw:  die Str-Funktion könnte man auch weglassen)

jeep_66

Hallo Franz,

ich lösche die Leerstellen neben den*, wenn ich wieder in den Code gehe, sind sie wieder drin.
und ich bekomme den Fehler Laufzeitfehler 13, Typen unverträglich.
Irgendwie soll es bei mir nicht funktionieren.

MzKlMu

Hallo,
sorry, da hatte ich einen Fehler genacht.

rs.FindFirst "[Name1] Like '*" & Str(Me![Text244]) & "*'"
Vor dem Stern und nach dem Stern ein Hochkomma.
Gruß Klaus

jeep_66

So viel Hilfe...
geht aber leider nicht, immer noch die gleiche Fehlermeldung.
Ich denke, dass ich was falsch mache.
Die daten kommen aus einer Tabelle und sind Textfelder.
Müssen die daten aus einer Abfrage kommen ?

Grußr
markus

jeep_66

.. noch eine Frage...
was ist denn, wenn mehrere Datensätze mit der Suchabfrage übereinstimmen würden?

oma

Hallo,

ich denke, so wirst du deine Aufgabenstellung nicht erfüllen können. Mit FindFirst und Bookmark wird immer ein DS gefunden.

Mit FindFirst und Bookmark findet man einen konkreten DS und mit Weitersuchen (Button) kann dann mit FindNext weitere DS gesucht werden.

Wenn du mit Teilstrings suchen willst, musst du die Datenherkunft des Formulars mit einen dynamischen SQL-String verändern, dann bekommst du auch eine entsprechen Menge an DS als Ergebnis.

Gruß Oma
nichts ist fertig!

DF6GL

Hallo,


nochmal von vorn:


erstelle ein Endlosform mit Datenherkunft zu der entspr. Tabelle und erzeuge die nötigen Textfelder.

erstelle im Formularkopf ein ungebundenes Textfeld ("txtKundenname") und dafür eine Ereignisprozedur "Bei Änderung" oder "Nach Aktualisierung".


schreib diesen Code in die Prozedur:


Sub txtKundenname_Afterupdate()  ' oder Sub txtKundenname_Change()
Me.Recordsource = "Select * from tblDeineTabelle where [KundenName] Like '*" & Me!txtKundenname & "*'"
End Sub



Das Endlosform zeigt dann alle passenden Datensätze an.



Der ursprüngliche Code mit Findfirst positioniert ja nur auf den ersten gefundenen Datensatz.


Anonsten mußt Du genauer beschreiben, was exakt passieren soll.

oma

Hallo,

na, sag ich doch!!

Gruß Oma
nichts ist fertig!


Bernie110

Oder , wenn du alle Datensätze angezeigt bekommen möchtest die ähnlich klingen , dann so :

Erstelle ein Formular " Suchformular" und passe dort dein Unterformular, dass du tabellarisch darstellst ein ( wie von Franz beschrieben.

Private Sub DeinTextSuchFeld_AfterUpdate

  Dim krit As String
  krit = ""
 
If Not IsNull(Me!DeinTextSuchFeld) Then krit = krit & " And DeinFeldausdemUnterformular Like '*" & Me!DeinTextSuchFeld & "*'"
If krit <> "" Then krit = Mid(krit, 6)

Me!NamedeinesUnterformulars.Form.Filter = krit
Me!NamedeinesUnterformulars.Form.FilterOn = True
End If


Dann werden dir im Ufo alle Ds angezeigt die irgendwie auf zb "Motor" lauten ect.

Gurss Bernie