Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi INSERT Befehl für mehrere Einträge (https://www.delphipraxis.net/57964-insert-befehl-fuer-mehrere-eintraege.html)

Avax2k 29. Nov 2005 13:23

Datenbank: ACCESS • Version: 2003 • Zugriff über: ADO

INSERT Befehl für mehrere Einträge
 
hallo benutze folgenden befehl um einen Eintrag in eine bereits bestehende Tabelle einzufügen aber es will nicht so recht funktionieren:

Delphi-Quellcode:
ADOQuery1.SQL.Text := 'INSERT INTO Tabelle1(Arbeitszeit) VALUE ='+FloatToStr(Zeit);
ExecSql;
ich berechne die Zeit indem ich ersteinmal die Tabelle komplett ausfülle nur will er mir eben dann später die Spalte Arbeitszeit nicht ausfüllen, die bleibt immer leer auch wenn ich folgende befehle verwende der trägt nichts ein:

Delphi-Quellcode:
ADOQuery1.SQL.Text := 'INSERT INTO Tabelle1(Arbeitszeit) SELECT Arbeitszeit FROM Tabelle1 WHERE ID = :ID'+FloatToStr(Zeit);
hoffe jemand kann mir helfen....

nochmal zur verständnis..der Eintrag existiert bereits sprich spalten wie name usw.. sind schon ausgefüllt nur eben ist Arbeitszeit leer beim Drücken auf einen Button soll eben nur die Zeit da rein kopiert werden.

nieurig 29. Nov 2005 13:28

Re: INSERT Befehl für mehrere Einträge
 
Hallo Afax,
sieht so aus, als würdest Du eigentlich ein UPDATE durchführen wollen.
Das Insert kann von der DB nicht durchgeführt werden, wenn die ID des Datensatzes schon vorhanden ist. Eigentlich müßte es Fehlermeldungen hageln.

Versuch mal mit

SQL-Code:
update Tabelle1 set Arbeitszeit = neuerWert where ID = dieID
weiterzukommen.

Niels

Igotcha 29. Nov 2005 13:30

Re: INSERT Befehl für mehrere Einträge
 
Wenn der Datensatz schon existiert, dann benutzt Du UPDATE statt INSERT.

Delphi-Quellcode:
Query.SQL.Text:='UPDATE Tabelle1 SET Arbeitszeit=:Zeit WHERE DeineBedingung';
Query.ParamByName('Zeit').asString:=FloatToStr(Zeit);
Query.ExecSQL;
Dazu ist es natürlich notwendig, dass Du jeden Datensatz eindeutig identifizieren kannst.

Gruß Igotcha

Avax2k 29. Nov 2005 15:43

Re: INSERT Befehl für mehrere Einträge
 
Danke an euch beide...habe dies nun so gelöst:

Delphi-Quellcode:
ADOQuery1.SQL.Text := 'UPDATE Tabelle1 SET Arbeitszeit ='+FloatToStr(Zeit);
ExecSQL;
funtioniert tadellos..vieln Dank nochmal für euere schnelle Hilfe!!

Igotcha 29. Nov 2005 15:50

Re: INSERT Befehl für mehrere Einträge
 
Zitat:

Zitat von Avax2k
Danke an euch beide...habe dies nun so gelöst:

Delphi-Quellcode:
ADOQuery1.SQL.Text := 'UPDATE Tabelle1 SET Arbeitszeit ='+FloatToStr(Zeit);
ExecSQL;
funtioniert tadellos..vieln Dank nochmal für euere schnelle Hilfe!!

Dein Statement gilt dann aber für alle Datensätze - sprich in jedem Datensatz steht anschließend die gleich Zeit drin. Möchtest Du das?

Gruß Igotcha

Avax2k 29. Nov 2005 16:02

Re: INSERT Befehl für mehrere Einträge
 
ja habe ich gerade auch bemerkt als ich mehere Mitarbeiter eingefügt hatte...das möchte ich natürlich nicht.
desweiteren habe ich noch 2 Felder die genau so wie das zeitfeld berechnet werden die ich anfügen möchte aber wenn ich die SQL.Text-Befehle untereinader setze und am Ende Exec.SQL..dann führt er nur immer den letzten SQL.Text-Befehl aus und nicht alle 3

Igotcha 29. Nov 2005 16:06

Re: INSERT Befehl für mehrere Einträge
 
Ok, also langsam...

Du braucht eine Möglichkeit, jeden Datensatz eindeutig identifizieren zu können. Z.B. eine ID (autoinc).

Delphi-Quellcode:
ID FELD1 FELD2 FELD3
1  xxxxx
2  xxxxx
Um den Datensatz mit der ID 2 upzudaten machst Du:

Delphi-Quellcode:
UPDATE tabelle SET FELD2=:feld2, FELD3=:feld3 WHERE ID=2
Das wars.

Gruß Igotcha

Avax2k 29. Nov 2005 16:08

Re: INSERT Befehl für mehrere Einträge
 
habe es jetzt mal so:

Delphi-Quellcode:
ADOQuery1.SQL.Text:='UPDATE Tabelle1 SET Arbeitszeit=:Zeit WHERE ID= :ID';
ADOQuery1.Parameters.ParamValues['Zeit']:=FloatToStr(Zeit);
ADOQuery1.ExecSQL;
und mein Problem hat sich erledigt :D .. Danke für die Hilfe!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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-2025 by Thomas Breitkreuz