mdb find funktion

  • VB6

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von franky.

    mdb find funktion

    Hallo,

    ich soll für einen Kollegen vorübergehend ein Programm in VB schreiben, allerdings bin ich nicht ganz vertraut, vor allem was das Arbeiten mit Datenbanken betrifft.

    Also ich habe eine Datenbank mit den Visual Data Manager erstellt (mdb - Datei), diese hat ungefähr folgenden Aufbau:
    Name Alter Adresse

    Navigieren und ändern via Commandbuttons bzw. Textboxen ist bereits möglich, mein Problem liegt nun beim Suchen:

    Ich habe eine Textbox, der Benutzer gibt einen Wert ein, nach diesen Wert soll in einer bestimmten Spalte gesucht werden z. B. in "Name".

    Private Sub txt_name_Change()
    Dim search_item

    search_item = txt_cv.Text

    If Trim$(search_item) <> "" Then

    ' if Data1.Recordset.find search_item = true then

    lbl_find.Text = "Gefunden!"
    Else
    lbl_find.Text = "Nichts"
    End If
    End If
    End Sub

    Allerdings möchte ich, dass nur "Gefunden" ausgegeben wird, wenn der eingegebene Wert in der Textbox mit einen Wert in der Datenbank übereinstimmt.

    Allerdings gibt es keine richtige Find-Funktion in Recordset, außerdem scheinen die Funktionen keinen Rückgabewert zu haben, was ich normalerweise gewohnt bin, eigentlich würde ich es so machen (wenn es denn ginge):
    if (Data1.Recordset.FindFirst search_item) != 0 then usw...

    Wie kann ich feststellen, ob ein Wert in einer Datenbank überhaupt existiert?
    Und wie durchsuche ich eine ganz bestimmte Spalte (nur "Name") ?
    Kann man auch mit SQL Befehlen in Visual Basic auf die MDB Datei zugreifen, wenn ja wie?

    Hoffe auf eine schnelle Antwort.
    hallo,

    einen zugriff über vb kannst du so realisieren:

    Dim DB As Database, rs As Recordset

    Dim PFAD, DATENBANK
    PFAD = App.Path
    DATENBANK = PFAD & "\TERMINE.MDB"

    Set DB = OpenDatabase(DATENBANK)
    Set rs = DB.OpenRecordset("T_TERMINE")

    rs.Index = "ID"
    rs.Seek "=", me.SUCHID

    If rs.NoMatch = False Then
    me.ANZEIGE = rs!name
    end if


    mit rs.seek suchst du einen datensatz. auf dem suchfeld muss aber ein index sein.
    mit rs.nomatch prüfst du, ob der suchstring gefunden wurde. wenn rs.nomatch = false (also es wurde ein ds gefunden), kannst du diesen anzeigen lassen.

    so findest du aber immer nur genau einen satz. hast du mehr treffer, ist folgende lösung besser:

    Set rs = DB.OpenRecordset("select * from T_TERMINE where [NAME] =" & me.EINGABE)

    rs.movefirst
    ....


    hoffe ich konnte dir damit helfen.

    gruss

    franky