Kann mir jemand bitte erklären, wie ich einen aus mehreren Feldern bestehenden Index für irgendeine Datenbank erstelle und diesen dann bei der Suche eines Datensatzes verwende, der sich nur durch 2 Felder eindeutig lokalisieren läßt? Ich muß diese Form der Suche verwenden, da eine SQL-Abfrage durch ständiges Öffnen und Schließen der TQuery-Komponente in einer Schleife sehr lange dauert.
Announcement
Collapse
No announcement yet.
Index für Datenbanken erstellen
Collapse
X
-
<pre>
Hallo Christian,
so findest du deinen Datensatz. (Gibt sicherlich auch andere Möglichkeiten, nennen wir es deshalb Ansatz 1)
Nehmen wir an, deine 2 eindeutigen Felder sind 'FELD1' und 'FELD2' und sind z.B. vom Typ Integer.
int feld1Id;
int feld2Id;
bool located;
Variant keyValues[2];
TLocateOptions locateOptions;
...
MyQuery->Open();
...
locateOptions.Clear();
keyValues[0] = Variant(feld1Id);
keyValues[1] = Variant(feld2Id);
located = MyQuery->Locate("FELD1;FELD2", VarArrayOf(keyValues, 1), locateOptions);
if(located) {
...
}
else {
...
}
...
MyQuery->Close();
...
Viel Spass,
Heiko
</pre>
-
Hallo Christian,
soweit mir bekannt ist, sollte das mit allen Datentypen funktionieren, wenn man mal von Blob - Feldern absieht, da Variant ja unterschiedliche Datentypen aufnehmen kann. Wenn dein Datenbankdesign noch nicht allzu weit fortgeschritten ist, könntest du der Tabelle noch eine Spalte mit einem Primärschlüssel hinzufügen (int) und das Locate auf diesen anwenden. Ich habe die Funktionen auf einer Oracle Datenbank angewendet und dort haben sie funktioniert.
Heik
Comment
Comment