AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden

DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden

Ein Thema von Amenovis · begonnen am 21. Nov 2018 · letzter Beitrag vom 26. Nov 2018
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
Amenovis

Registriert seit: 17. Nov 2011
52 Beiträge
 
#1

DB 2Werte vergleichen um zwischen Insert und Update zu unterscheiden

  Alt 21. Nov 2018, 21:19
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

Geändert von Amenovis (21. Nov 2018 um 22:00 Uhr) Grund: Delphi-Tags eingefügt. Beim nächsten mal bitte selber machen.
  Mit Zitat antworten Zitat
21. Nov 2018, 21:37
Dieses Thema wurde am "21. Nov 2018, 21:37 Uhr" von "Luckie" aus dem Forum "Programmieren allgemein" in das Forum "Datenbanken" verschoben.
Benutzerbild von timog
timog

Registriert seit: 26. Sep 2006
Ort: Landkreis Oldenburg (Oldb)
117 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

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

  Alt 21. Nov 2018, 22:34
Klar, kann man so machen. Du solltest trotzdem so viel/smart testen, wie es nur geht. Je nach DB gibt es vielleicht auch ein Insert or Update SQL Statement, das weiterhelfen kann.
Timo
Real Programmers are surprised when the odometers in their cars don't turn from 99999 to 9999A.
  Mit Zitat antworten Zitat
Amenovis

Registriert seit: 17. Nov 2011
52 Beiträge
 
#4

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

  Alt 21. Nov 2018, 22:53
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;

Geändert von Amenovis (22. Nov 2018 um 00:20 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 22. Nov 2018, 05:57
Welchs DBMS?
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#6

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

  Alt 22. Nov 2018, 07:11
Hallo,
wenn das DBMS nichts direktes anbeitet, würde ich

Select Count(*) From Tabelle
Where Day=ay

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

Ergebnis 0 -> Insert, sonst Update
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.330 Beiträge
 
Delphi 11 Alexandria
 
#7

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

  Alt 22. Nov 2018, 07:14
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.
Peter
  Mit Zitat antworten Zitat
Trafel21

Registriert seit: 16. Nov 2018
69 Beiträge
 
#8

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

  Alt 22. Nov 2018, 08:06
Wäre es nicht vorteilhafter ein Trigger in der Datenbank dafür zu schreiben?
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

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

  Alt 22. Nov 2018, 08:49
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#10

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

  Alt 22. Nov 2018, 12:55
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
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00: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