AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi locate auf query funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

locate auf query funktioniert nicht

Ein Thema von Barret · begonnen am 5. Aug 2009 · letzter Beitrag vom 6. Aug 2009
Antwort Antwort
Benutzerbild von Barret
Barret

Registriert seit: 27. Mai 2004
53 Beiträge
 
#1

locate auf query funktioniert nicht

  Alt 5. Aug 2009, 12:57
Datenbank: MySQL • Zugriff über: TADOConnection
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.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,...)
FMain = Hauptform des Programmes
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.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: locate auf query funktioniert nicht

  Alt 6. Aug 2009, 05:34
Gibt es denn wirklich die neue ID in der 'quVeranstaltung'?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: locate auf query funktioniert nicht

  Alt 6. Aug 2009, 06:35
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 ( quveranstaltung.Refresh; )?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Barret
Barret

Registriert seit: 27. Mai 2004
53 Beiträge
 
#4

Re: locate auf query funktioniert nicht

  Alt 6. Aug 2009, 07:14
Zitat von mkinzler:
..., die Datenmeneg aktualisiert ( quveranstaltung.Refresh; )?
Ich mach das nicht direkt über ein Refresh. Ich lass das über die showQuVeranstaltungStart-Funktion laufen.
Delphi-Quellcode:
procedure TFMain.showQuVeranstaltungStart;
begin
  with DMDatenModul.quveranstaltung do
  begin
    Close;
    SQL.Text := 'SELECT ...';
    SQL.Add('LEFT JOIN ...');
    Open;
  end;
end;
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 ...)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: locate auf query funktioniert nicht

  Alt 6. Aug 2009, 08:07
Welchen Rückgabewert hat das Locate?
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: locate auf query funktioniert nicht

  Alt 6. Aug 2009, 08:29
Bitte streichen



Sherlock
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von Barret
Barret

Registriert seit: 27. Mai 2004
53 Beiträge
 
#7

Re: locate auf query funktioniert nicht

  Alt 6. Aug 2009, 08:37
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?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: locate auf query funktioniert nicht

  Alt 6. Aug 2009, 08:48
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:
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;
Getippt und nicht getestet.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Barret
Barret

Registriert seit: 27. Mai 2004
53 Beiträge
 
#9

Re: locate auf query funktioniert nicht

  Alt 6. Aug 2009, 09:50
Vielen Dank alzaimar!!! Jetzt is es genauso wie ich es Haben wollte!!! *jubel jubel freu freu*
g
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz