Announcement

Collapse
No announcement yet.

Index für Datenbanken erstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Index für Datenbanken erstellen

    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.

  • #2
    <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&gt

    Comment


    • #3
      Vielen Dank Heiko!
      Nun ist mein Feld1 aber vom Typ DATUM und mein Feld2 vom TYP Integer. Funktioniert die Sache dann überhaupt? Ich habe es nämlich ausprobiert und habe dabei nur Programmabstürze

      Comment


      • #4
        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

        Working...
        X