AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL UPDATE will nicht

Ein Thema von Privateer3000 · begonnen am 28. Nov 2012 · letzter Beitrag vom 4. Okt 2013
Antwort Antwort
Seite 3 von 3     123   
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#21

AW: SQL UPDATE will nicht

  Alt 4. Dez 2012, 07:40
Grad mal selber gecheckt, et voila: Oija, doch doch Funzt wunderbar.

Gugst du:
Zitat:
Die Komponente bietet einen Editor, um eben die drei Statments zusammenzubasteln. (Doppelclick auf jene.)
Doppelclick auf die KOMPONENTE welche sich auf dem Formular befindet. Ist ja klar, wenn du auf die TStrings-prop clickst, das da ja der standart StringListen-Editor öffnet.

Grüßle
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#22

AW: SQL UPDATE will nicht

  Alt 4. Dez 2012, 19:29

Doppelclick auf die KOMPONENTE welche sich auf dem Formular befindet. Ist ja klar, wenn du auf die TStrings-prop clickst, das da ja der standart StringListen-Editor öffnet.

Grüßle
Krass
ich sollte mal auf alles doppelklicken was mir übern Weg hoppelt.
Danke für den Tipp!

Grüße
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Laaeris

Registriert seit: 10. Dez 2011
24 Beiträge
 
#23

AW: SQL UPDATE will nicht

  Alt 3. Okt 2013, 21:30
@Privateer3000

[...SNIP...]
Simples Beispiel:

ZUpdateSQL1.ModifySQL := 'update tabelle1 set tabelle1.Feld1 = :Feld1; //funktioniert auch! Feld1 sollte aber im selct der TZQuery entahlten sein.
ZQuery1.UpdateObject := ZUpdateSQL1;
ZQuery1.Edit;
ZQuery1.ParamByName('Feld1'').AsString := 'Test';
ZQuery1.Post;

Ich hoffe dies war etwas verständlicher.

Gruß Michael
Ich habe jetzt stundenlang alles Mögliche probiert und auch im Internet gesucht, aber so richtig kriege ich es nicht hin.
Ich mag einfach eine beliebige Tabelle ändern wollen (baue gerade eine immense Applikation um und mag nicht für jede Tabelle etwas Eigenes bauen an u-i-d) und hatte die Idee, den U-Fall über eine Query zu tun.
Nutze Delphi XE2 Starter, mySQL 5.5, Zeos 7

Wie mache ich das am Schlauesten? Mein bisheriger Code funktioniert nicht, egal wie ich es anstelle.
Mein momentaner Code ist wieder möglichst einfach und orientiert an Deinem Beispiel:

Delphi-Quellcode:
  //DataModul.ZQuery_Updater.SQL.Clear;
  //DataModul.ZQuery_Updater.SQL.Add('Select * from '+Schema+Tabellenname);
  DataModul.ZUpdateSQL_Updater.ModifySQL.Clear;
  DataModul.ZUpdateSQL_Updater.ModifySQL.Add('UPDATE '+Schema+Tabellenname);
  DataModul.ZUpdateSQL_Updater.ModifySQL.Add('SET '+Schema+Tabellenname+'.'+Feldname+'= :Val1');
  DataModul.ZUpdateSQL_Updater.ModifySQL.Add('WHERE '+Schema+Tabellenname+'.'+Indexfeld+'=:'+CHR(39)+inttostr(ID_Wert)+CHR(39)+';');
  DataModul.ZQuery_Updater.UpdateObject:=DataModul.ZUpdateSQL_Updater;
  DataModul.ZQuery_Updater.Edit;
  DataModul.ZQuery_Updater.Params.ParamByName('Val1').AsString:=neuer_Wert;
  DataModul.ZQuery_Updater.Post;
a) Wenn ich nun starte, ist die Fehlermeldung sinngemäss, dass die Komponente nicht aktiv ist.
b) Aktiviere ich sie vorher mit ACTIVE oder OPEN, heisst es, der SQL-Code wäre leer.
c) Fülle ich den SQL-Code (siehe die beiden ersten Zeilen) wird es zum einen sehr langsam, zum anderen findet er den Parameter nicht,
obwohl ich den in beiden Komponenten auch mal deklariert habe.
d) Ich habe es mit EXECSQL und dem obigen Code einfach in der Query (ohne ZUpdateSQL) auch schon geschafft, dass das fehlerfrei durchläuft, aber dann wird der Wert in der DB nicht geändert - trotz Autocommit TRUE der Connection.

Was mache ich falsch oder:

Gibt es ein einfaches Beispiel, das ich nutzen kann, bei dem ich mit einer Komponente Query eine Tabelle ändern kann, bei der ich einen Indexfeldwert habe und einen Wertfeldnamen (und einen Wert)?

Viele Grüße,

David
  Mit Zitat antworten Zitat
Laaeris

Registriert seit: 10. Dez 2011
24 Beiträge
 
#24

AW: SQL UPDATE will nicht

  Alt 3. Okt 2013, 21:38
...manchmal ist es so einfach... ich hatte da einen Doppelpunkt zuviel, und beim posten hab ich's gemerkt.

Ich nutze jetzt erst mal das Folgende:

Delphi-Quellcode:
  DataModul.ZQuery_Updater.SQL.Clear;
  DataModul.ZQuery_Updater.SQL.Add('UPDATE '+Schema+Tabellenname);
  DataModul.ZQuery_Updater.SQL.Add('SET '+Schema+Tabellenname+'.'+Feldname+'= :Val1');
  DataModul.ZQuery_Updater.SQL.Add('WHERE '+Schema+Tabellenname+'.'+Indexfeld+'='+CHR(39)+inttostr(ID_Wert)+CHR(39)+';');
  DataModul.ZQuery_Updater.Params.ParamByName('Val1').AsString:=neuer_Wert;
  DataModul.ZQuery_Updater.ExecSQL;
Viele Grüße & Sorry,

David
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#25

AW: SQL UPDATE will nicht

  Alt 4. Okt 2013, 09:42
Wieso nutzt Du einmal SQL-Parameter und einmal nicht? Wie ist es so (ungetestet)?
Delphi-Quellcode:
const
  UPDATE_SQL = 'UPDATE %s%s SET %s%s.%s = :Val1 WHERE %s%s.%s = :Val2';
begin
  DataModul.ZQuery_Updater.SQL.Text := Format(UPDATE_SQL,
    [Schema,
     Tabellenname,
     Schema,
     Tabellenname,
     Feldname,
     Schema,
     Tabellenname,
     Indexfeld]);
  DataModul.ZQuery_Updater.Params.ParamByName('Val1').Value := neuer_Wert;
  DataModul.ZQuery_Updater.Params.ParamByName('Val2').Value := ID_Wert;
  DataModul.ZQuery_Updater.ExecSQL;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 4. Okt 2013 um 09:57 Uhr) Grund: ExecSQL vergessen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 16:15 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