Query-Datensätze Editieren

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Aphadias
Beiträge: 124
Registriert: Mi 28. Okt 2015, 18:28

Query-Datensätze Editieren

Beitrag von Aphadias »

Moin,

Also ich habe mich jetzt noch mal in vielen Dingen belesen. Aber ich werde aus der Edit-Funktion nicht schlau. Verschiedene von einander unabhängige Tutorials sagen das gleiche aus. Aber bei mir geht es trotzdem nicht.

ich will meine Daten hiermit Editieren.

Code: Alles auswählen

suche.SQLQuery1.Edit; //Damit beginne ich den Schreibmodus und hebe den Schreibschutz auf
  suche.SQLQuery1.FieldByName('Vorname').AsString:=evorname.text; //ich lese die veränderten Daten ein
  suche.SQLQuery1.Post; //beende den Schreibmodus und übernehme die Daten
  suche.SQLQuery1.ApplyUpdates; //Sende die Daten ans Query
  suche.SQLTransaction1.Commit; //Übernehme die Daten in die Datenbank
 


und bekomme folgenden Fehler: No Update query specified and failed to generated one. (No fields for inclusion in where statement found)

gut habe ich danach in CHM von Laz nachgeschaut. Dort Stand was mit UpdateModus

Code: Alles auswählen

suche.SQLQuery1.Edit;
  suche.SQLQuery1.FieldByName('Vorname').AsString:=evorname.text;
  suche.SQLQuery1.Post;
  suche.SQLQuery1.UpdateMode:=upWhereAll;
  suche.SQLQuery1.ApplyUpdates;
  suche.SQLTransaction1.Commit;


problem jetzt... er kennt das upwhereall nicht obwohl das so in der Hilfe drinne stand.

hat jemand eine Idee?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Query-Datensätze Editieren

Beitrag von mse »

Was ist "suche"? Was steht in "suche.SQLQuery1.SQL" ?

Aphadias
Beiträge: 124
Registriert: Mi 28. Okt 2015, 18:28

Re: Query-Datensätze Editieren

Beitrag von Aphadias »

das ist das formblatt wo sich die query usw befinden und auf ein anderen formblatt wurden die daten ausgelesen aus einen dbgrid in edits und müssen jetzt editiert werden

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Query-Datensätze Editieren

Beitrag von mse »

Da sind zwei Fragezeichen. Üblicherweise bedeutet das, dass zwei Fragen gestellt wurden und auch zwei Antworten erwartet werden.
Ehm, du machst dir nicht etwa einen Spass daraus uns zu verarschen?

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Query-Datensätze Editieren

Beitrag von hde »

mse hat geschrieben:Ehm, du machst dir nicht etwa einen Spass daraus uns zu verarschen?


@mse
schau dir die anderen Threads von ihm an, ich fürchte, da ist jede Mühe vergebens

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Query-Datensätze Editieren

Beitrag von baumina »

Um einen Datensatz in einer Query zu bearbeiten musst du zuerst die Daten aus der Datenbank lesen. D.h. in der Query einen select-Befehl hinterlegen und dann die Query öffnen. Umfasst die Datenmenge der Query mehr als einen Datensatz musst du dir erst den richtigen aussuchen (mit locate). Dann kannst du via Edit, Feldzuweisungen und post den aktuellen Datensatz verändert in die Datenbank speichern.
.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Query-Datensätze Editieren

Beitrag von af0815 »

A) Die Tabelle benötigt einen Primärschlüssel
A) Das SQL Statement muss in der Query eindeutige Daten liefern, sonst kann die automatik die weiteren SQL Statements für Update, Delete und Insert nicht automatisch erstellen.

Code: Alles auswählen

 No Update query specified and failed to generated one


B) Wenn am ein WHERE Statement verwendet, dann sollte man nachlesen was die Fehlermeldung besagt und Kontrollieren ob die Einschränkung mit WHERE auch überhaupüt mit den Tabellenspalten zusammenhängt. Auch ob überhaupt Daten überhaupt zurückgegeben werden.
B) Kann ein Folgefehler von A sein.

Code: Alles auswählen

(No fields for inclusion in where statement found)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: Query-Datensätze Editieren

Beitrag von TBug »

Aphadias hat geschrieben:problem jetzt... er kennt das upwhereall nicht obwohl das so in der Hilfe drinne stand.

hat jemand eine Idee?

F1 drücken und nachschauen welche Unit Du noch einbinden mußt.

Aphadias hat geschrieben:

Code: Alles auswählen

suche.SQLQuery1.Edit;
  suche.SQLQuery1.FieldByName('Vorname').AsString:=evorname.text;
  suche.SQLQuery1.Post;
  suche.SQLQuery1.UpdateMode:=upWhereAll;
  suche.SQLQuery1.ApplyUpdates;
  suche.SQLTransaction1.Commit;


Wieso steht UpdateMode nach Post?
Wenn Du Post ausführst, dann berücksichtig er ja die neue Einstellung für UpdateMode erst beim nächsten Post.

-

Ich glaube Du solltest ersteinmal SQL ganz weg lassen und Dich zuerst mit der reinen Erstellung Deiner Anwendung beschäftigen. Nimm hierzu statt der Connection und Query ein einfaches TDBF.

Die Umstellung auf die SQL-Variante ist dann nur noch eine Kleinigkeit.

Ich habe mir einmal die Mühe gemacht und Dir ein kleines Beispiel zusammengeklickt.
Schau Dir den Quell-Code an und Du wirst feststellen, dass Du einfach vieles machst, was völlig sinnlos ist, vorallem dann, wenn man noch nicht weiß, wie das Ganze funktioniert.

.
Dateianhänge
Datenbank-Test.zip
(128.82 KiB) 73-mal heruntergeladen

Antworten