![]() |
Datenbank: MySQL • Zugriff über: TADOConnection
locate auf query funktioniert nicht
Hallo!
Ich hab da so ein kl Problem mit der Locate-Funktion einer query. Ich Speichere über eine Funktion neue Werte in seine MySQL-DB (INSERT INTO ...). wenn dies geschehen ist update ich die Form, so das der neue Datensatz auch in dem DBGrind enthalten ist. Nun möchte ich aber das ich auf den Datensatz springe den ich zuletzt abgespeichert habe springen. Last-Funktion auf der Query bringt nicht wirklich viel, da der SQL-Befehl nach bestimten Kreterien sortiert. Also habe ich mir das so gedacht:
Delphi-Quellcode:
FMain = Hauptform des Programmes
FMain.showQuVeranstaltungStart; //SQL-String zum Update ausführen und Query öffnen
DMDatenModul.qubenutzer.SQL.Text := 'select max(id) as id from tbl_veranstaltung'; //bestimmen des letzten Eintrages in der DB-Tabelle DMDatenModul.qubenutzer.Open; DMDatenModul.quveranstaltung.Locate('id', DMDatenModul.qubenutzer.FieldByName('id').AsVariant, []); //auf letzten Datensatz der DB-Tabelle springen FillEditFields; //füllen alles Eingabefelder (EditFelder, Listboxen,...) qubenutzer, quveranstaltung = Query's Die Felder selbst gibt es alle. Das Programm funktioniert auch wie gewünscht. Außer halt, dass er nicht auf den Datensatz springt. Was braucht Ihr noch an Infos? Ich bekomme auch keine Fehlermeldung oder etwas in der Art. Wenn ich bei dem Suchparameter AsInteger oder AsString nehme bleibt es bei dem gleichen Ergebnis. s edit: Ich habe auch schon nen Teil mit den LocaleOptions probiert. Wenn ich Sie leer lasse passiert wie gesagt nicht. Wenn ich die Eintrage die in der Hilfe stehen kennt er die bezeichner nicht. Und wenn ich mir die Bezeichner selber deklariere dan bekomme ich Fehler durch inkompatible Typen TOptions und Set .... editII: Jetzt habe ich in die uses DB mit angefügt. Er kennt jetzt die Option "loPartialKey". Aber das Gesamtergebis ist immer noch so, dass es nicht so ist wie ich es haben möchte. |
Re: locate auf query funktioniert nicht
Gibt es denn wirklich die neue ID in der 'quVeranstaltung'?
|
Re: locate auf query funktioniert nicht
Es scheint sich ja um die selbe Tabelle zu handeln.
Befinden sich diese im gleichen Transkationskontext ( beim Einsatz von Transaktionen/einer transaktionsfähigen Storage-Engine)? Wurde nach dem Einfügen, die Datenmeneg aktualisiert (
Delphi-Quellcode:
)?
quveranstaltung.Refresh;
|
Re: locate auf query funktioniert nicht
Zitat:
Delphi-Quellcode:
Das id Feld ist auf jeden fall da. Über Das DBGrid kann ich auch darauf zugreifen. Und die SQL Anweisung zum bestimmen der max Zahl geht auch. (in PHP MyAdmin getestet ...)
procedure TFMain.showQuVeranstaltungStart;
begin with DMDatenModul.quveranstaltung do begin Close; SQL.Text := 'SELECT ...'; SQL.Add('LEFT JOIN ...'); Open; end; end; |
Re: locate auf query funktioniert nicht
Welchen Rückgabewert hat das Locate?
|
Re: locate auf query funktioniert nicht
Bitte streichen
:wall: Sherlock |
Re: locate auf query funktioniert nicht
Ich bekomme immer 0 / Null zurück. Hab es eben auch mal mit Lookup versucht... Dan versteh ich aber nur nich, warum er das Feld mit der max. Zahl nicht findet / zuordnen kann nicht findet.
Also is schon mal klar warum er den zeiger nicht setzten kann .. nur die Frage warum er die Zahl nicht übermittelt bekommt. edit: Wenn ich mir den Wert ausgeben lasse in Program selber bekomme ich auch den richtigen Index ausgegeben... Also kann irgendetwas im Locate selber nicht stimmen. Muss ich da noch was bestimmtes in den uses für mit einbinden? |
Re: locate auf query funktioniert nicht
Diese =)(/%%&$§-Locate-Funktion funktioniert manchmal, manchmal nicht. Speziell bei berechneten Feldern klappt das nicht alles so, wie es sollte.
Versuch die mal. Die sucht nur nach einem Feld.
Delphi-Quellcode:
Getippt und nicht getestet.
Function csLocate (aDS : TDataSet; aField : String; aValue : Integer) : Boolean;
Var B : TBookmark; Begin B := aDS.GetBookmark; aDS.DisableControls; Try aDS.First; Result := True; While not aDS.Eof do If aDS.FieldValues [aField] = aValue Then Exit Else aDS.next; Result := False; aDS.GotoBookmark(B); Finally aDS.FreeBookMark(B); aDS.EnableControls; End End; |
Re: locate auf query funktioniert nicht
Vielen Dank alzaimar!!! Jetzt is es genauso wie ich es Haben wollte!!! *jubel jubel freu freu*
g |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz