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?