Einzelnen Beitrag anzeigen
Alt 27.03.2013, 17:48   #1
Sophus
Newbie
 
Registriert seit: 27.03.2013
Beiträge: 1


Standard VB6 Suche im indizierten Feld

Hallo Leute,

kurz zur Vorgeschichte. Ich programmiere mit VB6 ein verwaltungsprogramm. Es handelt sich hierbar um eine Access-Datenbank. Noch dazu ist es möglich, innerhalb meines Programm, dass der Kunde nicht nur eine neue Datenbank anlegen kann, sondern, er kann die Name der Datenbank, Namen der Tabellen und die Namen der Felder bestimmen. Was "noch" von mir vorgeschrieben wird, ist die festgelegte Anzahl der Tabelle in einer Datenbank und die Anzahl der dazugehörigen Felder. Und die Eigenschaften der Felder werden "noch" von mir vorgeschrieben. Die Namen der Datenbank, Tabellen und Felder werden in einer INI-Datei hinterlegt. Diese Informationen werden bem Start des Programm aus dieser Datei gelesen und dementsprechend handelt mein Verwaltungsprogramm auch. Einträge, Löschungen, Editionen etc funktionieren auch. Nur ein kleines Problem. Jetzt kommen wir auch zum Kern meines Anlieges.

All meine Datensätze werden über ein idiziertes Feld gesucht. Umgangsprachlich würden wir sagen "ID". Aber wie ich schon anmerkte, kann der Kunde das Feld benennen wir er oder sie es will. Bleiben wir mal bei dem Namen "ID". In diesem ID-Feld sind keine doppelte Einträge erlaubt. Meine bisherigen Suchfolge sah so aus (es handelt sich hier um einen Auschnitt - also nicht wundern, wenn der Code so 'mager' aussieht):

Ach ja, ich arbeite nach wie vor mit DAO (Verweis: Microsoft DAO 3.6 Object Library).Für viele ist es sehr diskussionswürdig etc. Mein Argument ist einfach, dass ich die DAO-Geschichte auf Anhieb verstandne habe, als ich mich an die Datenprogrammierung traute. Aber wir wollen keine Grundsatzdiskussion führen. Nun zum Problem.

Code:
Command1_Click()
On Error Resume Next
Dim mName As String

        mName = Me.txt_id.Text 'Hier in dieser TexBox ist die beliebige ID
        dyn.Index = "id" ' der Name des Feldes, welches aber festgelegt ist
        dyn.Seek "=", mName
        If dyn.NoMatch Then

    Else
    przr_ausgabe 'Wurde ein Datensatz gefunden? Ausgeben.
    End If
End Sub
Der Code funktioniert auch wunderbar. Nur wie ich schon im Code angemerkt habe, ist der Name des aktiven dyn.Index-Feldes vorbestimmt. Hier heißt das Feld id. Aber wie ich schon sagte, der Kunde kann das Feld auch Nummer anstatt id benennen. Nur die Feld-Eigenschaften bleiben gleich. Natürlich habe ich etwas rumprobiert und bin zunächst wie folgt vorgegangen:

Code:
Command1_Click()
On Error Resume Next
Dim mName As String
Dim sIDField As String

sIDField = Text1.Text 'In dieser Textbox steht der Name des aktiven indizierten Feldes

        mName = Me.txt_id.Text 'Hier in dieser TexBox ist die beliebige ID
        dyn.Index = sIDField
        dyn.Seek "=", mName
        If dyn.NoMatch Then

    Else
    przr_ausgabe 'Wurde ein Datensatz gefunden? Ausgeben.
    End If
End Sub
Ich wollte also den Namen des aktiven indizierten Feldes mit dem String übergeben, aber es will mir einfach nicht gelingen.

Hat jemand von euch eine andere Idee?

Geändert von Sophus (27.03.2013 um 17:55 Uhr).
Sophus ist offline   Mit Zitat antworten