Dezember 05, 2021, 06:53:35

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


2te spalte ansteuern für Filter

Begonnen von Max831, August 25, 2021, 15:02:13

⏪ vorheriges - nächstes ⏩

Max831

Hallo,

ich grübele jetzt seit einiger Zeit an meiner Filterfunktion und komme an einem Punkt nicht weiter.

Zur Übersicht:
Aktuell gibt es 2 Tabellen, eine Haupttabelle wo sich alle Notwendigen Informationen befinden, sowie eine 2te Tabelle welche [L-Nummer](als Autowert/Primärschlüssel);[S-Nummer] sowie eine [Beschreibung]

Die [L-Nummer] befindet sich auch in der Haupttabelle, verlinkt und die restlichen Daten ebenfalls zu finden.

Im Formular, basierend auf der Haupttabelle habe ich 3x[L-Nummer] und um mir die 2 anderen Felder der 2ten Tabelle anzuzeigen. Nutze hierbei ein Kombifeld und setzte die Spaltenbreite auf 0cm für die nicht gesuchten Daten.

Wenn ich meinen Filter auf die [L-Nummer] setzte funktioniert dies auch, wenn ich ihn auf die [S-Nummer] setze dann nicht mehr, er findet keinen Datensatz.

Die Frage ist jetzt wie kann ich den Filter setzten, das er mir dies basierend auf den verlinkten Daten macht.

Mein Filterabfrage sieht aktuell so aus
Zitat von: undefinedIf Nz(Me.abfSNummer, "") <> "" Then
        strSuche = strSuche & "[S-Nummer].column(2) like '*" & Replace(Me.abfSNummer, "'", "''") & "*' AND "

derArb

Hallo,
die 1. Spalte ist .column(0)daher ist die 2. Spalte .column(1)vielleicht hilft das ja.

DF6GL

Hallo,

ehrlich gesagt, verstehe ich die Konstellation nicht.

Es gibt zwei Tabellen in 1:n-Beziehung und [L-Nummer]  (auf solche Sonderzeichen und Leerzeichen dringend verzichten!) als Primärschlüssel-, bzw. Fremdschlüssel-Feld.

Mit einem Kombi sind die Daten aus der 2.Tabelle (Name??)   passend zum aktuellen DS im Formular anzeigbar.



Was und wo und womit genau willst Du jetzt filtern?

Ich nehme an, Du suchst ein zweites und ungebundenes Kombifeld, das seine Listendaten aus der 2. Tabelle bezieht und das Formular (die Datensätze des Forms aus der Haupttabelle) nach dem ausgewählten Eintrag filtert, was in diesem Fall der Primärschlüsselwert der zweiten Tabelle, bzw. der Fremdschüsselwert der Haupttabelle wäre.

Z. B.


Datenherkunft des Forms:  Haupttabelle

Ungebundenes Kombi:   cmbLNummer

Datensatzherkunft: Select [L-Nummer], [S-Nummer], Beschreibung from tblTabelle2 order by [S-Nummer]

Spaltenbreiten:  0cm;3cm;6cm
Spaltenanzahl:3


und als Ereignisprozedur "Nach Aktualisierung" des Kombis:

Sub cmbL_Nummer_Afterupdate()
  Me.Filter = "[L-Nummer] = " & Me!cmbLNummer
  Me.FilterOn =True
End Sub




Max831

Zitat von: derArb am August 25, 2021, 16:02:05Hallo,
die 1. Spalte ist
.column(0)daher ist die 2. Spalte
.column(1)vielleicht hilft das ja.

Gut zu wissen. Hat jetzt nicht funktioniert, habe deshlab auch versucht zu gucken ob die Logik überhaupt funktioniert. Filtern entsprechend [L-Nummer], welches in der Haupttabelle gibt funktioniert ja. Da aber [L-Nummer].column(0) nicht geht (der andere Versuch), gehe ich eher davon aus, dass die Ansteurerung nicht die richtige ist.



Zitat von: DF6GL am August 25, 2021, 16:49:52Datenherkunft des Forms:  Haupttabelle


Ungebundenes Kombi:  cmbLNummer

Datensatzherkunft: Select [L-Nummer], [S-Nummer], Beschreibung from tblTabelle2 order by [S-Nummer]

Spaltenbreiten:  0cm;3cm;6cm
Spaltenanzahl:3


und als Ereignisprozedur "Nach Aktualisierung" des Kombis:

Sub cmbL_Nummer_Afterupdate()
  Me.Filter = "[L-Nummer] = " & Me!cmbLNummer
  Me.FilterOn =True
End Sub



Mein Filter ist tatsächlich ein Textfeld, der Filter soll auch bei einer Teileingabe aktiviert werden.

(Habe aktuell in beiden Tabellen jeweils den gleichen Namen deshalb noch eine ergänzung in klammern)

In meiner Hautptabelle befindet sich [L-Nummer(tbl1)] welches die Beziehung zur 2ten Tabelle macht.
Im Formular selber habe ich 3 mal ein combo feld erstellt, immer auf die [L-Nummer(tbl1)] bezogen.

1. [L-Nummer(tbl1)] zeigt die [L-Nummer(tbl2)] an
2. [L-Nummer(tbl1)] zeigt die [S-Nummer(tbl2)] an
3. [L-Nummer(tbl1)] zeigt die [Beschreibung(tbl2] an

Filtern nach Fall 1. [L-Nummer(tbl?)] funktioniert.
Problem ist eigentlich Fall 2. [S-Nummer(tbl2)]. (Fall 3. sollte dann hoffentlich ähnlich sein)


DF6GL

Hallo,

wenn Du von "Filtern" sprichst, musst Du genauer erläutern, was und wie und wo Du filtern willst.

"xxxxx.Column(0)"  als Kriterium in einer Abfrage funktioniert nicht.
ZitatIm Formular selber habe ich 3 mal ein combo feld erstellt

Wozu?

Erstelle neben dem gebundenen Kombi, das die [L-Nummer] anzeigt 
(Name: LNummer  , Datensatzherkunft:  Select [L-Nummer], [S-Nummer], Beschreibung from tblTabelle2 order by [S-Nummer] ), zwei weitere Textfelder mit Steuerelementinhalt:

=LNummer.Column(1)

und

=LNummer.Column(2)




Zum Filtern (des Formular-Recordsets)  benutzt Du das vorher beschriebene ungebundene Kombi, das alle 3 Felder eines DS gleichzeitig anzeigt.

Als Filterkriterium wird immer der Schlüsselfeld-Wert herangezogen.


Bei einem Schlüsselfeld macht eine Teilsuche keinen Sinn, sofern es sich nicht um eine "sprechende"  Nummer handelt, was datenbanktechnisch ein Fauxpas wäre.


Wenn alle 3 Felder (alle mit Datentyp TEXT) unabhängig und mit Teilstring gesucht werden sollen, dann braucht es in der Tat 3  Kombifelder oder 3 Textfelder zur Eingabe des Suchwertes mit den Ereignisprozeduren:

Sub SuchLNummer_Afterupdate
  Me.Filter = "[L-Nummer] Like " & Me!SuchLNummer & "*"
  Me.FilterOn =True
End Sub

Sub SuchSNummer_Afterupdate
  Me.Filter = "[S-Nummer] Like " & Me!SuchSNummer & "*"
  Me.FilterOn =True
End Sub

Sub SuchBeschreibung_Afterupdate
  Me.Filter = "Beschreibung Like " & Me!SuchBeschreibung & "*"
  Me.Filteron =True
End Sub




Evtl. könnte auch nur ein Suchfeld genügen:


Sub SuchFeld_Afterupdate
  Me.Filter = "[L-Nummer] & "|" & [S-Nummer] & "|" & Beschreibung Like '*" & Me!SuchFeld & "*'"
  Me.FilterOn =True
End Sub