Order By danach Locate Problem
-
Hallo,
vorher hat mit locate alles vernüftig geklappt aber sobald ich mit Order By die Datenbank sortieren lasse klappt mein Locate nicht mehr Warum ??
TLocateOptions SearchOptions; SearchOptions.Clear(); SearchOptions << loPartialKey; bool LocateSuccess = Query1->Locate("BENUTZER1", ""+Edit2->Text+"", SearchOptions);Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("Select"); Query1->SQL->Add("Tiximail.'BENUTZER1',"); Query1->SQL->Add("Tiximail.'VORNAME',"); Query1->SQL->Add("Tiximail.'NACHNAME',"); Query1->SQL->Add("Tiximail.'FIRMA',"); Query1->SQL->Add("Tiximail.'STRA_EGESC',"); Query1->SQL->Add("Tiximail.'POSTLEITZA',"); Query1->SQL->Add("Tiximail.'ORTGESCH_F',"); Query1->SQL->Add("Tiximail.'REGIONGESC',"); Query1->SQL->Add("Tiximail.'TELEX',"); Query1->SQL->Add("Tiximail.'T_ISDN',"); Query1->SQL->Add("Tiximail.'TELEFONGES',"); Query1->SQL->Add("Tiximail.'FAXGESCH_F',"); Query1->SQL->Add("Tiximail.'PRIVAT',"); Query1->SQL->Add("Tiximail.'LBAND'"); Query1->SQL->Add("From Tiximail.DBF'"); Query1->SQL->Add("As Tiximail"); Query1->SQL->Add("Where Tiximail.'REGIONGESC' ='BW'"); Query1->SQL->Add("Order By Tiximail.'BENUTZER1'"); Query1->Open();
-
kommt ne exception?
was liefert Locate zurück?
was sollen die " bringen? ""+Edit2->Text+""
-
ich habe festgestellt das durch RequestLive=false es wieder geht..
Also in Edit2->Text steht der Suchparmeter z.b 0526..
bevor ich Ordered By habe hat er es gefunden... aber mit Order By findet er es nicht mehr...
Setze ich nun RequestLive auf false geht es wieder.. was aber eigentlich nicht in meinem Sinne war....
Aber ich habe das Problem dann auf anderen Wege gelöst.
Aber das befriedigt mich trotzdem nicht so ganz
Also ein Fehler gibt er nicht aus... und was Locate zurück leifert überprüf ich jetzt erstmal

-
Wie ich es mir gedacht hatte...
Ist RequestLive auf True und es ist Ordered -> LocateSucess = false
Ist RequestLive auf False und es ist Ordered -> LocateSucess = trueIst RequestLive 0/1 und es ist NICHT Ordered -> LocateSucess = true
Also solange es nicht Ordered ist schein es keine Rolle zu spielen
-
Local SQL-Hilfe schrieb:
Aktualisierbare Abfragen
Definition...
Einzeltabellenabfragen
Abfragen, die Daten aus einer einzelnen Tabelle abrufen, sind unter folgenden Voraussetzungen aktualisierbar:
Die SELECT-Anweisung darf nicht das Schlüsselwort DISTINCT enthalten.
Die SELECT-Klausel beschränkt sich auf eine einfache Spaltenreferenz oder auf eine berechnete Spalte. Aggregationen sind unzulässig. Berechnete Spalten bleiben schreibgeschützt.
Die in der FROM-Klausel referenzierte Tabelle ist eine aktualisierbare Basistabelle.
Es ist keine GROUP BY- oder HAVING-Klausel vorhanden.
In der Anweisung sind keine Unterabfragen enthalten.Die Abfrage enthält keine ORDER-BY-Klausel.
Wenn in der ORDER-BY-Klausel nur eine Spalte angegeben ist und ein einspaltiger dBASE-Primär- oder Sekundärindex vorhanden ist, der auf ebendiesem Feld beruht, wird der Nur-lesen-Effekt einer ORDER-BY-Klausel aufgehoben und die Abfrage aktualisierbar. Dies gilt nicht, wenn ein zusammengesetzter dBASE-Index vorliegt. Ein Paradox-Einfeld- oder Mehrfeld-Primärindex macht die Abfrage aktualisierbar, wenn ORDER BY exakt die gleichen Spalten (in der gleichen Reihenfolge) verwendet wie der Index. Paradox-Sekundärindizes dagegen heben den Nur-lesen-Effekt einer ORDER-BY-Klausel nicht auf.
Mehrtabellenabfragen
Alle Abfragen, bei denen zwei oder mehr Tabellen miteinander verbunden werden, erzeugen eine schreibgeschützte Ergebnismenge.
Berechnete Felder
Bei aktualisierbaren Abfragen mit berechneten Feldern kennzeichnet eine zusätzliche Feldeigenschaft ein Ergebnisfeld als schreibgeschütztes und berechnetes Feld. Jeder Aufruf der BDE-Funktion DbiPutField verursacht eine Neuberechnung etwaiger abhängiger Felder.
zu finden in: C:\Programme\Gemeinsame Dateien\Borland Shared\BDE\localsql.hlp