Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   UPDATE befehl im SQL (https://www.delphipraxis.net/49585-update-befehl-im-sql.html)

cell 13. Jul 2005 11:36


UPDATE befehl im SQL
 
hab ein problem mit dem update befehl der befehl soll von einem memofeld eingelesen werden

Delphi-Quellcode:
var
   Bemerk: string;
begin
     if InputQuery('Bemerkung ändern','Bemerkung:',Bemerk) then
        begin
        mobemerkung.Lines.Clear;
        mobemerkung.Lines.Append(Bemerk)
        [i]with DataModule1 do[/i]
             begin
                  Query.close;
                  Query.SQL.Clear;
                  Query.SQL.Text:= updatesql('Friktionstest','Bemerkung',Bemerk,'');
                  Query.execsql;
                  while not Query.Eof do
                  Query.Close;
             end;
        end
     else
end;
normalerwiese müsste er mir das updaten oder ??
ein problem hat er mit dem with DataModul1 do

[edit]
Operation oder semikolon fehlt
das ist der fehler

Olli 13. Jul 2005 11:41

Re: UPDATE befehl im SQL
 
Und wiedermal fehlt ein Semikolon!

-> mobemerkung.Lines.Append(Bemerk);

Nachtrag:
Auch hinter dem else würde ein Semikolon hingehören, aber das geht weil vor end keines sein "muß". Du solltest dich wirklich erstmal mit der Syntax vertraut machen. Dazu gibt es normalerweise auf der Delphi-CD sehr gute Sprachmanuals als PDF!

Noch'n Nachtrag:
Als Tip für die Zukunft. Die delphi-Tags erlauben leider keine Formatierung mit BBCodes. Stattdessen solltest du für solche Fälle das pre/code-Tag verwenden! ;) Beispiel:
Code:
var
   Bemerk: string;
begin
     if InputQuery('Bemerkung ändern','Bemerkung:',Bemerk) then
     begin
        mobemerkung.Lines.Clear;
        mobemerkung.Lines.Append(Bemerk)
        [color=red][b]with DataModule1 do[/b][/color]
        begin
...

Jasocul 13. Jul 2005 11:41

Re: UPDATE befehl im SQL
 
Zitat:

Zitat von cell
Delphi-Quellcode:
var
   Bemerk: string;
begin
     if InputQuery('Bemerkung ändern','Bemerkung:',Bemerk) then
        begin
        mobemerkung.Lines.Clear;
        mobemerkung.Lines.Append(Bemerk)
        [i]with DataModule1 do[/i]
             begin
                  Query.close;
                  Query.SQL.Clear;
                  Query.SQL.Text:= updatesql('Friktionstest','Bemerkung',Bemerk,'');
                  Query.execsql;
                  while not Query.Eof do // Blödsinn
                  Query.Close; // Blödsinn
             end;
        end
     else
end;
ein problem hat er mit dem with DataModul1 do

Welches Problem hat er mit DataModule1?
Die Zeilen mit "Blödsinn" brauchst du nicht, da du ein ExecSQL machst. Danach ist Query auf jeden Fall geschlossen.
Und ob dein Statement richtig ausgeführt wird, hängt davon ab, wie das Funktionsergebnis von "updatesql" aussieht.

Falls du dann noch Transaktionskontrolle machst, fehlt auch noch ein Commit. Aber davon gehe ich mal nicht aus.

//EDIT: Habe dein Edit erst jetzt gesehen. Der Teil hat sich also erledigt.

cell 13. Jul 2005 11:42

Re: UPDATE befehl im SQL
 
des gibts ja ned bin i wirklich so blind
:wall:
thx

Jasocul 13. Jul 2005 11:44

Re: UPDATE befehl im SQL
 
Mach mal ne Pause und geh an die frische Luft. Das hilft und spart dir mit Sicherheit Zeit.

DP-Maintenance 13. Jul 2005 11:46

DP-Maintenance
 
Dieses Thema wurde von "alcaeus" von "Datenbanken" nach "Object-Pascal / Delphi-Language" verschoben.
Das Semikolon gehoert natuerlich nicht zu SQL, also gehoert die Frage auch nicht nach Datenbanken ;)

cell 13. Jul 2005 12:26

Re: UPDATE befehl im SQL
 
die form wird zwar gestartetaber beim ausfürhren des sql befehls kommt ein fehler
ungültiger feldname
das ist der sql befehl
Delphi-Quellcode:
function updatesql (tabellenname, feldname, aenderung, whereanweisung :string) :string;
//------------------------------------------------------------------------------
// UPDATE Funktion
//------------------------------------------------------------------------------
var
   ant: string;
begin
     ant :='UPDATE ' + tabellenname;
     ant :=ant + ' SET ' + feldname;
     ant :=ant + '=' + aenderung;
     if whereanweisung <> '' then
        ant :=ant + ' WHERE ' + whereanweisung;
     result:= ant;
end;

Olli 13. Jul 2005 12:31

Re: UPDATE befehl im SQL
 
:wall: ... das ist jetzt SQL ... hingegen die erste Frage nicht.

In diesem Fall wirst du wohl den Feldnamen überprüfen müssen (case-sensitive?!). Jedenfalls sehe ich nix, was an der SQL-Syntax syntaktisch falsch wäre.

marabu 13. Jul 2005 12:34

Re: UPDATE befehl im SQL
 
Wer weiß schon, was in WhereAnweisung drin steht...

Delphi-Quellcode:
ant := 'UPDATE ' + tabellenname;
ant := ant + ' SET ' + feldname;
ant := ant + '=' + QuotedStr(aenderung);  // das hilft bei char feldern
if whereanweisung <> '' then
  ant := ant + ' WHERE ' + whereanweisung;  
result := ant;
Grüße vom marabu

Olli 13. Jul 2005 12:40

Re: UPDATE befehl im SQL
 
Zitat:

Zitat von marabu
Wer weiß schon, was in WhereAnweisung drin steht...

Ich ging davon aus:
Delphi-Quellcode:
Query.SQL.Text:= updatesql('Friktionstest','Bemerkung',Bemerk,'');
... der marabu ist übrigens ein ganz sympathischer "Vogel" :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 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