wie kann ich sortierte Query editieren???



  • hi Leute,

    habe da ein Problem...

    wenn ich in meinem SQL-String einen ORDER BY einfüge kann ich die Query nicht in den Edit()-Modus schicken...

    sobald ich aber die sortierung rausnehme - läuft alle swunderbar...

    was kann ich da machen? bzw. wie editiere ich jetzt meine query?

    Danke schon mal



  • Ein LiveUpdate funktioniert nicht unter allen Bedingungen (siehe Doku). Du kannst aber statt einer Query ein TTable-Objekt nehmen und das Filter-Property entsprechend der WHERE-Klausel setzen...



  • ich danke dir erstmal für die Antwort, aber...

    die where-klausel ist mir nicht sehr wichtig - die Sortierung
    ist das Ausschlaggebende... (und die Tabellen kann man doch
    nicht so leicht sortieren?)



  • TTable::IndexName



  • diese Spalte hat leider kein Index 😞



  • Dann mußt Du einen erstellen! :p

    Du kannst aber auch die Ergebnismenge der Query in ein normales Stringgrid einlesen, dieses bearbeiten und dann satzweise wieder in der Datenbank speichern.
    Das ist zwar umständlich, und Du mußt einige Sicherheitsabfragen einbauen (z.B. überprüfen, ob eine Eingabe numerisch ist etc), ich fürchte aber, daß es nicht anders geht...



  • jo habe ich mir zuerst auch so überlegt - ist aber wirklich zu aufwendig...

    meine derzeitige Lösung: die sortierte Query erstellen, damit einen Array erstellen der die Primarykeys der sortierten DB enthält... jetzt habe ich einen "Index" 🙂 und kann mit Hilfe von der Funktion "Locate()" auf die Datensätze einer nicht sortierten Query (bzw. Table) sortiert zugreifen...

    noch mal zum Index: der Index ist keine Sortierung der Datenbank, sondern eine [intern] sortierte Liste, die bei der Suche [intern] benutzt wird... oder habe ich bei der DB-Vorlesung gepennt??? 🙂

    für weitere Anregungen bin ich auch dankbar!



  • TTable::IndexName = sozusagen eine intern sortierte Liste.



  • TTable::IndexName = ist nur eine property, der ich den vorhanden Index zuweise... aber ich habe KEINEN! (bitte die Beiträge auch lesen ;))



  • Dann leg Dir doch einen INDEX an.
    Entweder verstehen wir uns falsch oder Du hast wirklich nicht aufgepasst.
    Du legst auf das Feld nach welchem Du sortieren willst einen Index.
    Und zwar bei IndexFieldName und die Tabelle wird nach diesem Index sortiert.
    Das kannst Du auch zur Laufzeit machen. Das hat überhaupt nichts mit dem
    Primarykey zu tun.

    "wenn ich in meinem SQL-String einen ORDER BY einfüge kann ich die Query nicht in den Edit()-Modus schicken..."

    Das stimmt so auch nicht.
    Entweder hast Du einen SELECT über mehrere Tabellen oder
    ganz einfach vergessen RequestLive = true zu setzen.

    Gruß Abrazzo

    [ Dieser Beitrag wurde am 05.03.2003 um 16:44 Uhr von Abrazzo editiert. ]



  • das geht nicht!!

    man kann bei IndexFieldName nur die Felder eintragen die in der DB auch als indexiert sind... sonst kommt: "tblAuftr: Kein Index für die Felder 'AnfZeit' vorhanden"

    und das mit deiner Ergänzung:
    probier es doch einfach aus!! RequestLive habe ich schon nicht vergessen und ich selektiere nur eine Tabelle... trotzdem geht es nicht...



  • [QB]das geht nicht!!

    Du hast uns bisher nicht erzählt welche Datenbank Du überhaupt benutzt. Sehr wahrscheinlich dBase, InterBase oder Paradox.
    Dann hast Du recht. Die Dinger ticken etwas anders.

    Gruß Abrazzo

    [ Dieser Beitrag wurde am 06.03.2003 um 09:20 Uhr von Abrazzo editiert. ]



  • 🙂 gut formuliert...

    jo es ist paradox - leider kann ich keine andere nehmen, da auf die DB auch ein paar andere Programme bereits zugreifen (aus dem Grunde darf ich diese auch nicht ändern) - also bleibt mir nichts anderes übrig als den komplizierteren Weg zu gehen 😞

    ich danke noch mal an alle Beteiligten für die Hilfe und Information


Anmelden zum Antworten