![]() |
AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
Hallo!
Du kannst auch den mächtigen MERGE verwenden ... dann hast Du INSERT und UPDATE mit einer SQL Anweisung erschlagen, sofern Deine Daten eindeutig sind. (Edit: Sofern die DB das kann; bei MS SQL und IBM DB2 funktioniert es.) Gruß |
AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
wow echt super viele Ansätze DANKE mhh Merge und Upset da geh ich mal lesen, das klingt auch sehr Interessant :-D
lg Timo |
AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
Sorry für Doppelposting aber hat vielleicht jemand eine Idee was ich jetzt wieder Falsch mache ?
Delphi-Quellcode:
RQuery2.SQL.Text:='SELECT count(*) as var2 FROM OPmonth where ID=:ID';
RQuery2.ParamByName('ID').AsString := edit25.Text; RQuery2.Open; if RQuery2.FieldByName('var2').AsInteger > 0 then begin id:=Edit15.Text; query1.Params.CreateParam(ftString,'id',ptinputoutput); query1.ParamByName('id').Text:=id; query1.SQL.Text:='select WorkH,EIndex,WIndex from OPmonth where id=:id'; Query1.Open; Query1.Params.CreateParam(ftString,'WorkH',ptInputOutput); Query1.Params.CreateParam(ftString,'EIndex',ptInputOutput); Query1.Params.CreateParam(ftString,'WIndex',ptInputOutput); Query1.ParamByName('WorkH').Text:=Edit29.Text; Query1.ParamByName('EIndex').Text:=Edit64.Text; Query1.ParamByName('WIndex').Text:=Edit65.Text; Query1.SQL.Text:='update OPmonth set WorkH=:WorkH,EIndex=:EIndex,WIndex=:WIndex where id=:id'; Query1.ExecSQL; end else query1.SQL.Text:='select WorkH,EIndex,WIndex from OPmonth where id=:id'; Query1.Open; Query1.Params.CreateParam(ftString,'WorkH',ptInputOutput); Query1.Params.CreateParam(ftString,'EIndex',ptInputOutput); Query1.Params.CreateParam(ftString,'WIndex',ptInputOutput); Query1.ParamByName('WorkH').Text:=Edit29.Text; Query1.ParamByName('EIndex').Text:=Edit64.Text; Query1.ParamByName('WIndex').Text:=Edit65.Text; Query1.SQL.Text:='Insert into OPmonth (WorkH,EIndex,WIndex)'+ 'values (:WorkH,:EIndex,WIndex)'; Query1.ExecSQL; end; |
AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
Erst den SQL Text setzen und dann die Parameter bearbeiten.
|
AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
Bitte was meinst du ?
|
AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
Zitat:
Delphi-Quellcode:
Query1.SQL.Text:='update OPmonth set WorkH=:WorkH,EIndex=:EIndex,WIndex=:WIndex where id=:id';
Query1.Params.CreateParam(ftString,'WorkH',ptInputOutput); Query1.Params.CreateParam(ftString,'EIndex',ptInputOutput); Query1.Params.CreateParam(ftString,'WIndex',ptInputOutput); Query1.ParamByName('WorkH').Text:=Edit29.Text; Query1.ParamByName('EIndex').Text:=Edit64.Text; Query1.ParamByName('WIndex').Text:=Edit65.Text; Query1.ExecSQL; |
AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
sql logic or missing database mhh
|
AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
Ich habe nur die Reihenfolge der Zeilen getauscht.
Warum liest Du die vorhandenen Werte ert ein ohne Sie zu benötigen? Warum nicht die genannte Lösung per Upsert? |
AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
ja ich auch das ergebnis blieb das gleiche :(
Delphi-Quellcode:
RQuery2.SQL.Text:='SELECT count(*) as var2 FROM OPmonth where ID=:ID';
RQuery2.ParamByName('ID').AsString := edit25.Text; RQuery2.Open; if RQuery2.FieldByName('var2').AsInteger > 0 then begin Query1.SQL.Text:='update OPmonth set WorkH=:WorkH,EIndex=:EIndex,WIndex=:WIndex where id=:id'; Query1.Params.CreateParam(ftString,'WorkH',ptInputOutput); Query1.Params.CreateParam(ftString,'EIndex',ptInputOutput); Query1.Params.CreateParam(ftString,'WIndex',ptInputOutput); Query1.ParamByName('WorkH').Text:=Edit29.Text; Query1.ParamByName('EIndex').Text:=Edit64.Text; Query1.ParamByName('WIndex').Text:=Edit65.Text; Query1.ExecSQL; end else Query1.SQL.Text:='Insert into OPmonth (WorkH,EIndex,WIndex)'+ 'values (:WorkH,:EIndex,WIndex)'; Query1.Params.CreateParam(ftString,'WorkH',ptInputOutput); Query1.Params.CreateParam(ftString,'EIndex',ptInputOutput); Query1.Params.CreateParam(ftString,'WIndex',ptInputOutput); Query1.ParamByName('WorkH').Text:=Edit29.Text; Query1.ParamByName('EIndex').Text:=Edit64.Text; Query1.ParamByName('WIndex').Text:=Edit65.Text; Query1.ExecSQL; end; |
AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
Delphi-Quellcode:
und jetzt?
RQuery2.SQL.Text:='SELECT count(*) as var2 FROM OPmonth where ID=:ID';
RQuery2.ParamByName('ID').AsString := edit25.Text; RQuery2.Open; if RQuery2.FieldByName('var2').AsInteger > 0 then begin Query1.SQL.Text:='update OPmonth set WorkH=:WorkH,EIndex=:EIndex,WIndex=:WIndex where id=:id'; Query1.Params.CreateParam(ftString,'WorkH',ptInputOutput); Query1.Params.CreateParam(ftString,'EIndex',ptInputOutput); Query1.Params.CreateParam(ftString,'WIndex',ptInputOutput); Query1.ParamByName('WorkH').Text:=Edit29.Text; Query1.ParamByName('EIndex').Text:=Edit64.Text; Query1.ParamByName('WIndex').Text:=Edit65.Text; Query1.ExecSQL; end else BEGIN {--------------------------------------------------------------------} Query1.SQL.Text:='Insert into OPmonth (WorkH,EIndex,WIndex)'+ 'values (:WorkH,:EIndex,WIndex)'; Query1.Params.CreateParam(ftString,'WorkH',ptInputOutput); Query1.Params.CreateParam(ftString,'EIndex',ptInputOutput); Query1.Params.CreateParam(ftString,'WIndex',ptInputOutput); Query1.ParamByName('WorkH').Text:=Edit29.Text; Query1.ParamByName('EIndex').Text:=Edit64.Text; Query1.ParamByName('WIndex').Text:=Edit65.Text; Query1.ExecSQL; end; Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 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 by Thomas Breitkreuz