Neuigkeiten:

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

Mobiles Hauptmenü

Filtern eines Endlosformates mit Hilfe von Kombinationsfeld

Begonnen von mlang, November 26, 2012, 14:01:14

⏪ vorheriges - nächstes ⏩

mlang

Hallo Leute,

ich habe ein Access Projekt begonnen, wo ich jetzt ein wenig auf dem Schlauch stehe und eure Hilfe benötige :)

Meine Datenbank besteht aus 3 Tabellen

tblThemen:
ID, ThemenID(Primärschlüssel), txtThemen, StatusID, datAnlagedatum, datÄnderungsdatum, txtVerantwortlicher, ThemenzuordnungID, lnkLink, txtFreitext

tblStatus
StatusID(Primärschlüssel), txtStatus

tblThemenzuordnung
ThemenzuordnungID, txtThemenzuordnung

Zur Suche in dem Formular habe ich ein Endlosformular engelegt, in welchem ich über Textfelder und Kombinationsfelder nach Einträgen filtern möchte.

Das funktioniert auch mit der Textfeldern super, nur bei den Kombinationsfeldern gibts Probleme.

Hier der Code mit dem ich begonnen habe:


Private Sub txtSchnellsuche_Status_Change()
    Dim strFilter As String
    Dim intStart As Integer

    intStart = Me!txtSchnellsuche_Status.SelStart


    If Not Len(Me!txtSchnellsuche_Status.Text) = 0 Then

        strFilter = "Me.StatusID.Text = '" & Me!txtSchnellsuche_Status.Text & "'"

        Me.Filter = strFilter
        Me.FilterOn = True

     
        Me!txtSchnellsuche_Status.SelStart = intStart

    Else

        Me.Filter = ""

        Me.FilterOn = False

        Me!txtSchnellsuche_Status.SetFocus

    End If


End Sub



Ich habe auch schon versucht über Vlaue und Column die entsprechende Filterung hinzubekommen...leider ohne erfolg.

Die beiden Kombinationsfelder sind identisch aufgebaut, jeweils 2 Spaten von denen die erste auf Breite 0 gesetzt wurde.

Vielen Dank schonmal im Voraus :)



Gruß



[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

mit Kombis sucht man "anders":


Auswahl eines Wertes aus der Kombiliste (Dropdownliste) (evtl. auch durch Vorselektion durch Eingabe der ersten Zeichen im Kombifeld)  und Ausführen der Filterung im Ereignis "Nach Aktualisierung" des Kombis.

mlang

Danke für die schnelle Antwort!

So hätte ich mir das auch gedacht...hab jetzt die Filterung in das Ereignis "Nach Aktualisierung" verschoben und mit die Werte für "Me.StatusID.Text" bzw. "Me!txtSchnellsuche_Status.Text" über eine msgBox ausgeben lassen, hier bekomme ich auch die gewünschten Werte ausgegeben...nur mit der Filterung passt es dann nicht...

oder seh ich gerade den Wald vor lauter Bäumen nicht?!

DF6GL

Hallo,

ich sehe gerade nicht, wie der Code jetzt lautet..


Das Change-Ereignis für die Filterung über das Textfeld ist an sich in Ordnung. Bei den Kombis sollte es das AfterUpdate-Ereignis sein. Dabei kann der aktuell ausgewählte Wert mit :

Me!Kombifeld1.Column(0)  für die erste(!) Spalte ausgelesen werden und als Kriterium zur Filterung herangezogen werden. Im Normalfall steht dort die ID eines Datensatzes drin.

mlang

Hi

zur zeit sieht der Code folgendermaßen aus


Private Sub txtSchnellsuche_Status_AfterUpdate()

    Dim strFilter As String
    Dim intStart As Integer

    intStart = Me!txtSchnellsuche_Status.SelStart


    If Not Len(Me!txtSchnellsuche_Status.Text) = 0 Then

        strFilter = "Me.StatusID.Column(0) = '" & Me!txtSchnellsuche_Status.Column(0) & "'"

        Me.Filter = strFilter
        Me.FilterOn = True

     
        Me!txtSchnellsuche_Status.SelStart = intStart

    Else

        Me.Filter = ""

        Me.FilterOn = False

        Me!txtSchnellsuche_Status.SetFocus

    End If

End Sub


Es kommt allerdings der Fehler, dass "Der Suchschlüssel wurde in keinem Datensatz gefunden"

Da die Kombinationsfelder gleich aufgebaut sind, sind auch in der ersten Spalte die Datensätze identisch...

mfg

DF6GL

Hallo,

das ist Nonsense:

strFilter = "Me.StatusID.Column(0) = '" & Me!txtSchnellsuche_Status.Column(0) & "'"




wenn , dann  zunächst  im Kombifeld ("KombiStatusID") einen Wert auswählen, dann im Such-Textfeld ("txtSchnellsuche") einige Zeichen eingeben und das Feld verlassen:

.
.
.
strFilter = "StatusId = " & Me!KombiStatusID.Column(0) & " and txtThemen Like '*" & Me!txtSchnellsuche & "*'"

mlang

#6
<edit>

funktioniert jetzt einwandfrei mit folgendem code



Private Sub kmbSchnellsuche_Status_AfterUpdate()

    Dim strFilter As String
    Dim intStart As Integer

    intStart = Me!kmbSchnellsuche_Status.SelStart

    If Not Len(Me!kmbSchnellsuche_Status.Text) = 0 Then

        strFilter = "StatusID = " & Me!kmbSchnellsuche_Status.Column(0) & ""

        Me.Filter = strFilter
        Me.FilterOn = True

     
        Me!kmbSchnellsuche_Status.SelStart = intStart

    Else

        Me.Filter = ""

        Me.FilterOn = False

        Me!kbmSchnellsuche_Status.SetFocus

    End If

End Sub



Vielen Dank