Suchfunktion mit VBA Access

subara

Mitglied
Dies sollte eine Suchfunktion nach mehreren Kriterien sein. Funktioniert aber nicht.
Die Kriterien werden über ein Dropdownfeld ausgewählt und dann in der temporären Datenbank gespeichert.
Danach sollte die temporäre Datenbank mit der, der Projekte verglichen werden und die Übereinstimmungen ausgeben. Warum wird der Vergleich nicht gemacht?

Code:
'#####################################      Daten eintragen     ####################################
Private Sub search_add_Click()

'Daten von Dropdownmenus in Variablen schreiben
    strMachines = search_machine.Value
    strParts = search_part.Value
    strCategory = search_category.Value
    strLanguages = search_languages.Value

        'Verbindung zur Tabelle "temp_search"
        Dim rstInsert As Recordset
        Set rstInsert = CurrentDb.OpenRecordset("temp_search")

        'Daten einfügen
        With rstInsert
            If .Updatable Then
                .AddNew
                !machines = strMachines
                !parts = strParts
                !category = strCategory
                !language = strLanguages
                .Update
            End If
        End With

        rstInsert.MoveFirst
        
        Do While Not rstInsert.EOF

            strTemp = rstInsert!machines & "/" & rstInsert!category & "/" & rstInsert!parts & "/" & rstInsert!language & ";  " & strTemp
                    
            rstInsert.MoveNext
            
        Loop
        
        
        Me!kriterien.Caption = strTemp
        
    'Verbindung schliessen
    rstInsert.Close
        
End Sub

'############################### Suchfunktion #####################################
Private Sub search_go_Click()

Dim rst As Recordset
Set rstTemp_Search = CurrentDb.OpenRecordset("temp_search")
Set rstParts_Projects = CurrentDb.OpenRecordset("parts_projects")

Do While Not rstTemp_Search.EOF
    Do While Not rstParts_Projects.EOF
      If rstTemp_Search!machines = rstParts_Projects!Machine And rstTemp_Search!category = rstParts_Projects!category Then
        'Verbindung zur Tabelle "temp_find"
        Dim rstInsert As Recordset
        Set rstInsert = CurrentDb.OpenRecordset("temp_find")
        'Daten einfügen
        With rstInsert
            If .Updatable Then
                .AddNew
                !Machine = rstParts_Projects!Machine
                !category = rstParts_Projects!category
                !part = rstParts_Projects!part
                .Update
            End If
        End With
        rstInsert.MoveNext
        rstInsert.MoveFirst
       End If

    rstParts_Projects.MoveNext
    Loop

rstTemp_Search.MoveNext
Loop

rstParts_Projects.Close
rstTemp_Search.Close
End Sub
 
Bei deinen Suchfunktionen habe ich jetzt auf die schnelle keinen Fehler gesehen (Ausser vielleicht das man die Buttons in definierter Reihenfolge drücken muss und alle bedingungen wahr sein müssen). Allerdings stellt sich mir die Frage warum so umständlich.
Du kannst doch über ein Sql viel schneller und einfacher suchen.

Bsp:
Visual Basic:
sql = "Select * from parts_projects Where machines like "& search_machine.Value &" and Parts like " & search_part.Value
' dann nur noch anzeigen
  Set rstInsert = CurrentDb.OpenRecordset(sql)
   
 While Not rstInsert.EOF

            strTemp = rstInsert!machines & "/" & rstInsert!Category & "/" & rstInsert!parts & "/" & rstInsert!language & ";  " & strTemp
                    
            rstInsert.MoveNext
            
        Wend
Grüsse bb
 
Zurück