Zellen einer Spalte aus Access db auslesen und mit einem String vergleichen

  • VB6

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Zellen einer Spalte aus Access db auslesen und mit einem String vergleichen

    Hallo Zusammen,

    ich verzweifel gerade etwas..



    Zu allererst, was möchte ich machen?

    Ich würde gerne den Inhalt einer Spalte Zeile für Zeile auslesen und wenn dieser Teil eines bestimmten Strings ist soll die Zelle gleicher ID, rechts neben der Spalte in eine Variable geschrieben werden.

    Verdeutlichung:

    ID
    Name
    Mail
    1
    Müller
    m.mueller@gmail.com
    2
    Schmitz
    s.schmitz@gmail.com


    Der bestimme String ist "Max Müller Hauptstrasse 1 Berlin", dieser soll jetzt mit allen Zeilen in der Spalte "Name" verglichen werden bis Müller (Wie bei der inStr-Funktion von VB()) matcht. Also in Zeile 1.
    Jetzt soll die Email-Adresse dieses Users (Zeile 1, Spalte 2) in eine weitere Variable geschrieben werden. Fertig!



    Was ich bisher gemacht habe..

    Ich stelle mittels folgendem Code eine Access-Datenbank Verbindung her:

    Visual Basic-Quellcode

    1. Set oCon = CreateObject("ADODB.Connection")
    2. Set oRec = CreateObject("ADODB.Recordset")
    3. oCon.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & path
    4. oRec.CursorLocation = adUseClient
    5. oRec.Open "SELECT receiver FROM " & table, oCon, adOpenStatic, adLockOptimistic


    path ist hierbei der Pfad zur Access-Datenbank.
    table und receiver sind Tabelle und Spalte innerhalb dieser.

    Mit..

    Visual Basic-Quellcode

    1. Dim dbName
    2. dbName= oRec.getString (, 1)


    ..lese ich das erste Wort in dieser Spalte und möchte dies mit..

    Visual Basic-Quellcode

    1. If InStr(bestimmerString, dbName ) > 0 Then
    2. MsgBox ("True")
    3. Else
    4. MsgBox ("False")
    5. End If

    ..vergleichen.

    Komischerweise ist die Meldung aber immer False.
    Es sei denn ich trage statt dbName "Müller" händisch ein.
    Als ob dbName ein Format hat was nicht verglichen werden kann.

    Ich hab schon etliche Methoden (CStr(dbName), Trim(dbName), InStr-"binary compare") versucht um dem Problem auf den Grund zu kommen, ohne Erfolg.

    Vielleicht kann mir hier jemand weiter helfen oder hat sogar ein bessere Idee (SQL Statement o.ä.).

    Der Nächste Schritt wäre dann die Zeile peu à peu durch zu loopen bis es einen match gibt denke ich..

    Vielen Dank für Eure Hilfe im Voraus!

    Grüße
    Hi,

    danke für die Antwort. Habe ich schon, die Werte sehen ganz gewöhlich aus.

    bestimmterString = Max Müller Hauptstr. 1 Berlin
    dbName = Müller

    Ich lasse mir die Werte im debug-Monitor anzeigen.

    Trotzdem ergibt InStr(bestimmterString, dbName) 0.

    Tausche ich dbName gegen "Müller" geht es, obwohl nachweislich "Müller" in dbName lt. debug-Monitor in dieser Variable steht!



    Grüße

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „fpk35“ ()

    fpk35 schrieb:

    Dim dbName
    Ist das VBS? Oder kennt VB6 auch typenlose Definitionen?
    Aber egal ob VBS oder VB6, Konstanten wie adOpenStatic, adLockOptimistic, adUseClient sind da nicht definiert,
    Die stammen aus Access-VBA.

    fpk35 schrieb:

    dbName= oRec.getString (, 1)
    Steht da in dbName etwas drin?
    Oder ist oRec.EOF=True?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --