Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden (https://www.delphipraxis.net/198653-db-2werte-vergleichen-um-zwischen-insert-und-update-zu-unterscheiden.html)

Amenovis 21. Nov 2018 20:19

DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
 
Ich hab mir etwas überlegt um zu sehen ob ein Tag bereits eingetragen wurde

ich hab eine Formular dort hab ich eine TagesFeld via EditX.Text in der DB hab ich Tag

nun will ich vergleichen ob der Tag schon existiert, um Werte via update einzufügen oder ob der Tag noch nicht existiert und der erste Befehl Insert lauten muss... nur bevor ich das nun stundenlang teste, die Frage, ob es so wie ich es mir denke, vom Grundgedanken geht

Delphi-Quellcode:
RQuery2.SQL.Text:='SELECT LAST(Day) as var2 FROM tabelle';
  RQuery2.Open;
  EditDay.Text:=RQuery2.FieldByName('var2').asString;
  RQuery2.Close;
  if editX.Text=EditDay.Text
  then
[B]update[/B]
  else
[B]Insert[/B]
ich weiss es geht sicher anders komplizierter auch... aber ist meine Version auch möglich?

LG

DP-Maintenance 21. Nov 2018 20:37

Dieses Thema wurde am "21. Nov 2018, 21:37 Uhr" von "Luckie" aus dem Forum "Programmieren allgemein" in das Forum "Datenbanken" verschoben.

timog 21. Nov 2018 21:34

AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
 
Klar, kann man so machen. Du solltest trotzdem so viel/smart testen, wie es nur geht. :-D Je nach DB gibt es vielleicht auch ein Insert or Update SQL Statement, das weiterhelfen kann.

Amenovis 21. Nov 2018 21:53

AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
 
Ok normal spiel ich mit allem immer stundenlang bis es so funktioniert.. diesmal musste ich noch eine Anlage nebenbei reparieren da dachte ich mir schreib es schnell auf als die Idee im Kopf war und frag gleich und teste später :)

bevor der Gedanke wegen irgendwas anderem verfliegt

Danke Namensvetter für die Info dann spiel ich damit mal rum auf arbeit oder später zu hause :)

EDIT:OK hab mal eben getestet ohne update usw er sollte mir dann eigentlich nur den tag ins editfeld schmeissen

also nur den part aber das will er nicht mit sum() ging es vielleicht kennt sqllite kein last()

Delphi-Quellcode:
RQuery2.SQL.Text:='SELECT LAST(Day) as var2 FROM tabelle';
  RQuery2.Open;
  EditDay.Text:=RQuery2.FieldByName('var2').asString;
  RQuery2.Close;

mkinzler 22. Nov 2018 04:57

AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
 
Welchs DBMS?

hoika 22. Nov 2018 06:11

AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
 
Hallo,
wenn das DBMS nichts direktes anbeitet, würde ich

Select Count(*) From Tabelle
Where Day=:Day

nehmen,
um zu ermitteln, ob der Datensatz in der Tabelle schon existiert.

Ergebnis 0 -> Insert, sonst Update

Jasocul 22. Nov 2018 06:14

AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
 
Ich würde es so lösen:
Delphi-Quellcode:
  RQuery2.SQL.Text:='SELECT count(*) as var2 FROM tabelle where Day = :PruefTag';
  RQuery2.ParamByName('PruefTag').AsString := editX.Text;
  RQuery2.Open;

  if RQuery2.FieldByName('var2').AsInteger > 0
  then
[B]update[/B]
  else
[B]Insert[/B]
hoika war schneller. Ich poste trotzdem, da es mit Source-Beispiel ist.

Trafel21 22. Nov 2018 07:06

AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
 
Wäre es nicht vorteilhafter ein Trigger in der Datenbank dafür zu schreiben?

jobo 22. Nov 2018 07:49

AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
 
Zitat:

Zitat von timog (Beitrag 1418704)
Klar, kann man so machen. ..

Kommt drauf an. Was auch immer last() macht, es legt nahe dass:
die Tage chronologisch gefüllt werden, wenn nicht und Lücken bestehen dürfen, ist der Einsatz von last() Müll.
Die Prüfung mit "where day = ", wie bereits gezeigt, eignet sich da schon besser.
Und wenn der TE mal die Fragen beantworten würde, könnte man vielleicht noch "Upsert" anbieten und würde damit die Entscheidung Insert oder Update dem System überlassen.

joachimd 22. Nov 2018 11:55

AW: DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden
 
Zitat:

Zitat von jobo (Beitrag 1418741)
Und wenn der TE mal die Fragen beantworten würde, könnte man vielleicht noch "Upsert" anbieten und würde damit die Entscheidung Insert oder Update dem System überlassen.

Hat er doch: sqllite
https://www3.sqlite.org/lang_UPSERT.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 Uhr.
Seite 1 von 4  1 23     Letzte »    

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