Access Mehrfachsuchfeld

Moderator: ModerationP

Access Mehrfachsuchfeld

Beitragvon Caro2021 » 02. Sep 2021, 20:40

Hallo zusammen,

ich konnte zu meiner Frage leider noch kein offenes Thema finde, verlinkt gerne falls jemand die Frage schon gestellt hat! Danke schon einmal.

Problem:
Ich habe ein Formular in dem ich ein Textfeld verwende um eine Suche auszuführen. Diese durchsucht nach einem Klick auf einen Button "Suche" mit einem Makro eine Tabelle mit Artikelnummern und gibt mir dann die entsprechenden Treffer in einem eingebetteten Unterformular aus.
Ich würde aber gerne ein Suchfeld haben in dem ich z.B. 10 Artikelnummern eintragen kann die durch ein Leerzeichen getrennt sind und will dann die entsprechenden Artikel alle in meinem Unterformular sehen.

Kann hier jemand helfen?

LG Caro
Caro2021
 

Re: Access Mehrfachsuchfeld

Beitragvon KlausMz » 02. Sep 2021, 21:55

Hallo,
Diese durchsucht nach einem Klick auf einen Button "Suche" mit einem Makro eine Tabelle mit Artikelnummern
Makro oder VBA ?
Zu Makros wirst Du eher keine Hilfe bekommen. Falls VBA zeige bitte den Code.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 40253
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Access Mehrfachsuchfeld

Beitragvon Bitsqueezer » 03. Sep 2021, 09:58

Hallo,

Du kannst in VBA einfach per Replace das Leerzeichen in ein Komma umwandeln, als Filter verwendest Du dann

Code: Alles auswählen
Me.Unterformular.Form.Filter = "Artikelnummer IN (" & Replace(Nz(MeinTextFeld), " ", ",") & ")"
Me.Unterformular.Form.FilterOn = True


Das mußt Du natürlich auf Dein UFO anpassen.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8465
Registriert: 21. Jun 2007, 12:17

Re: Access Mehrfachsuchfeld

Beitragvon Beaker s.a. » 03. Sep 2021, 15:45

Die Kommas kann man aber auch dem Anwender auf's Auge drücken.
Taste ist Taste, denn die IN-Klausel erwartet IMO kein Leerzeichen nach einem
Komma.
Ereignisorientierte Programmierung:
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen
läßt, läßt etwas anderes geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen
läßt, geschieht erneut.
Beaker s.a.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1204
Registriert: 14. Jul 2012, 21:56
Wohnort: Bremen

Re: Access Mehrfachsuchfeld

Beitragvon Bitsqueezer » 03. Sep 2021, 18:54

Hallo Beaker,

in der SQL Syntax spielen zusätzliche Leerzeichen keine Rolle. Dem "IN" ist es egal, ob nur Kommata oder noch zusätzliche Leerzeichen hinzugefügt werden.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8465
Registriert: 21. Jun 2007, 12:17

Re: Access Mehrfachsuchfeld

Beitragvon Stj68 » 04. Sep 2021, 10:16

Hallo,

ist es da nicht optimaler die Datengrundlage des UFO's zu ändern mit Recordsource, dann habe ich nur die paar gefilterten Datensätze,o der liege ich da falsch?

Jörg
Stj68
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 11. Mai 2013, 13:14

Re: Access Mehrfachsuchfeld

Beitragvon Bitsqueezer » 04. Sep 2021, 14:34

Hallo,

das kommt auf die Situation an. In einer "überschaubaren" Datenmenge ist ein Filter besser, weil die Daten nicht erneut geladen werden müssen, sondern nur die "ungewollten" ausgeblendet werden. Wenn es sehr viele Daten sind, ist meist die RecordSource zu ändern besser.
Der Filter hat den Vorteil (oder auch Nachteil, auch situationsabhängig), daß der User sieht, wenn etwas gefiltert ist, durch die Anzeige in der Datensatznavigation, und kann es da auch selbst wieder abschalten.

Also wie immer: It depends...:)

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8465
Registriert: 21. Jun 2007, 12:17

Re: Access Mehrfachsuchfeld

Beitragvon Caro2021 » 06. Sep 2021, 16:36

Hier ein Auszug aus dem VBA Code den ich gebastelt hab (sind noch weitere Case Auswahlmöglichkeiten die ja dann aber identisch sind:

Code: Alles auswählen
Private Sub cmdSuche_Click()
     Dim strFilter As String
     Dim Auswahl As String
     Auswahl = Me.Auswahl_Suche
     Me!sfm_Hersteller.Form.Filter = ""
Select Case Me.Herstellerauswahl
    Case "Implantcast"
        Me!sfm_Hersteller.SourceObject = "sfm_Hersteller_IC"
        Me!sfm_Hersteller.Form.RecordSource = "Abfrage_Implantcast"
       Select Case Auswahl
        Case "Artikelnummer"
         If Len(Me!txtSuche) > 0 Then
             strFilter = "Icnummer " & "Like '" & Me!txtSuche & "*'"
         End If
        Case "Artikelbezeichnung"
         If Len(Me!txtSuche) > 0 Then
             strFilter = "ICArtikel " & "Like '" & Me!txtSuche & "*'"
         End If
        Case Else
        MsgBox ("Error - Eingabe nicht erkannt!")
        Exit Sub
        End Select
[i]'[hier kommen dann noch weitere Cases und endet dann mit:][/i]
End Select
    Me!sfm_Hersteller.Form.Filter = strFilter
    Me!sfm_Hersteller.Form.FilterOn = True
    If strFilter = "" Then Me!sfm_Hersteller.Form.FilterOn = False
End Sub
Caro2021
 

Re: Access Mehrfachsuchfeld

Beitragvon Gast » 06. Sep 2021, 16:37

Bitsqueezer hat geschrieben:Hallo,
Du kannst in VBA einfach per Replace das Leerzeichen in ein Komma umwandeln, als Filter verwendest Du dann ....

Also muss ich einfach anstatt meinem "LIKE" dein "IN" verwenden und kann dadurch mehrere Nummernsuchen lassen?
Gast
 

Re: Access Mehrfachsuchfeld

Beitragvon Bitsqueezer » 06. Sep 2021, 19:33

Hallo,

yep...vorausgesetzt, Deine Artikelnummern sind wirklich Nummern und keine Texte.

Es geht auch mit Texten, aber dann muß jede Nummer mit Hochkommata umschlossen werden, was dann geringfügig mehr Code erfordert.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8465
Registriert: 21. Jun 2007, 12:17

Re: Access Mehrfachsuchfeld

Beitragvon Mr.TM » 08. Sep 2021, 15:19

Geh das suchen nach mehreren Einträgen auch ohne VBA, also mit Makro z.B.? Ich bin leider "von Oben" eingeschränkt kein VBA zu benutzen.

Bei mir geht es um bis zu 10 Materialnummern, die eingegeben werden können, dann sollen die verschiedenen Datensätze, zum Vergleich, gemeinsam angezeigt werden.
OracleDB, Access 365 (deutsch), kein VBA erlaubt
Mr.TM
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 21
Registriert: 20. Aug 2021, 10:14

Re: Access Mehrfachsuchfeld

Beitragvon Bitsqueezer » 08. Sep 2021, 20:44

Hallo,

den Filterstring kannst Du sicherlich auch per Makro setzen. Ob Du den String auch so zusammensetzen kannst, weiß ich nicht. Mit Makros arbeite ich nicht. Da mußt Du selbst googlen.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8465
Registriert: 21. Jun 2007, 12:17

Re: Access Mehrfachsuchfeld

Beitragvon Gast » 09. Sep 2021, 10:27

Die Auswertung einer Mehrfachauswahl ist auf mehreren Wegen möglich, siehe Grundlagen - SQL ist leicht (15) - Mehrfachauswahl zum Filtern umsetzen

Du könntest also die IN-Klausel statt auf eine Liste, die zusammenzusetzen wäre, auf eine Parametertabelle richten. Das Löschen der alten Inhalte der Tabelle per Löschabfrage, das Anfügen der neuen Werte und den Gesamtaufruf drumherum sollte man mit Makros hinbekommen können.
Gast
 

Re: Access Mehrfachsuchfeld

Beitragvon uwms » 09. Sep 2021, 11:52

Kann mir gerade keinen Grund vorstellen, warum Makros genutzt werden dürfen aber VBA nicht. Aber ok.

Alternativ könnte man den Inhalt des Suchfeldes auch als Filterkriterium in eine Abfrage einbauen und die Abfrage als Datenquelle für das Formular nutzen.

Grüße
Uwe
uwms
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 314
Registriert: 20. Nov 2015, 14:44

Re: Access Mehrfachsuchfeld

Beitragvon Bitsqueezer » 09. Sep 2021, 11:57

Hallo,

Kann mir gerade keinen Grund vorstellen, warum Makros genutzt werden dürfen aber VBA nicht. Aber ok.


Bei vielen ITs hat sich rumgesprochen, daß VBA in Office für Viren genutzt werden kann. Darum ist nicht selten die Entscheidung, VBA komplett zu verbieten. Und diese Einstellung ist generell für alle Office-Anwendungen.

Makros in Access dagegen ist eine Besonderheit, die nur Access kann und die bei den meisten ITlern auch nicht so bekannt ist (und wohl auch nicht für Viren genutzt werden kann...).

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8465
Registriert: 21. Jun 2007, 12:17

Nächste

Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste