# access in listenfeld suchen



## max_kuffs (21. September 2004)

hallo ich habe unter access 2000 eine datenbank gemacht.
welche eine auflistung von fehlern enthält. dargestellt werden diese in einem listenfeld.

FehlerId | Fehlerursache

Nun meine Frage: Wie kann ich die suchen Funktion die Access hat verwenden? Jedesmal wenn ich auf den Button klicke, einen Begriff eingebe und auf suchen klicke kommt die Meldung:

Das Makro versucht das Steuerelement 'Fehlerliste' zu durchsuchen. Dieses Steuerelement kann nicht durchsucht werden.

Sie haben folgende Möglichkeiten:
Setzen sie gehezu Aktion ...


Muss ich dem Listenfeld noch irgendwelche Eigenschaften zuweisen?
Ich mein ich könnte die Suche auch ausprogrammieren indem ich mit like per SQL arbeite. aber wenn es schon eine suche gibt würde ich die gerne verwenden.

weiss jemand was genau daran nicht passt bzw. wie ich ihm sage das er die fehlerursache durchsuchen soll?

vielen dank im vorraus
lg
markus


----------



## nixus (11. Oktober 2004)

Ja Ja so was gibt es.

Ist aber nur für Benutzer gedacht die genau wissen wie man mit einer Form-Maske in Access umgehen muss. Grund dafür ist, das die automatische Suchfunktion immer dort sucht wo der Fokus ist (in welchem Feld der Cursor ist).

Man kann also (meines Wissens nach) nicht in Feldern suchen die nicht an die Form gebunden sind.

Du kannst dies sogar per menü erstellen lassen. Dafür einfach einen neuen Button erzeugen und im Assistent "Record Navigation" -> "Find Record" auswählen.

Der erzeugte Code würde dann so aussehen:

Private Sub Command1389_Click()
On Error GoTo Err_Command1389_Click


    Screen.PreviousControl.SetFocus
    DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

Exit_Command1389_Click:
    Exit Sub

Err_Command1389_Click:
    MsgBox Err.Description
    Resume Exit_Command1389_Click

End Sub

Besser ist es aber über SQL zu suchen.

Das kannst du wie folgt machen:

Set rs = CurrentDb.OpenRecordset("select * from <DEINE_TABELLE>")
        rs.FindFirst "<DEINE_SPALTE> like '" & <DEIN SUCHSTRING> & "'"
        If rs.nomatch Then
            MsgBox "nix gefunden"
        Else
            MsgBox "found in record " & rs("id") & " """ & rs("<DEINE_SPALTE>") & """"
        End If
    rs.Close

Ist nur ein Beispiel (kann also stark von deinen Wünschen abweichen).

Gruss NIXUS


----------

