Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi InsertSQL (https://www.delphipraxis.net/88300-insertsql.html)

fapsons 13. Mär 2007 13:02

Datenbank: Firebird • Version: 2.0 • Zugriff über: InterBase - TDataSet

InsertSQL
 
Hallo Leute,

will mit folgender Procedure einen Datensatz in die Datenbank hinzufügen. Irgendwie tut sich nur beim Ausführen der Procedure nichts. Erhalte auch keine Fehlermeldung seitens Delphi.

Könnt ihr mir da weiterhelfen?


Gruß,
-fapsons---


Delphi-Quellcode:
procedure Add_New_Terminal(typ, Bez, Beschr :String);
begin
 with D_DataModule.DataSet do
 begin
   InsertSQL.Clear;
   InsertSQL.Text := 'INSERT INTO terminal (TYP, BEZEICHNUNG, BESCHREIBUNG) VALUES (''' + typ + ''',''' + Bez + ''',''' + Beschr + ''')';
   Open;
   Insert;
   Close;
 end;
end;

mkinzler 13. Mär 2007 13:05

Re: InsertSQL
 
Delphi-Quellcode:
   [s]InsertSQL.Clear;[/s]
   InsertSQL.Text := 'INSERT INTO terminal (TYP, BEZEICHNUNG, BESCHREIBUNG) VALUES (''' + typ + ''',''' + Bez + ''',''' + Beschr + ''')';
   Open;
   Insert;
   Post;
   Close;

fapsons 13. Mär 2007 13:33

Re: InsertSQL
 
Super, vielen Dank!

Das einzige, was jetzt noch nicht funzt ist, wenn ich einen Datensatz lösche und dann wieder einen neuen hinzufügen will, sagt er mir, dass keine Primary-ID vergeben werden konnte.

Eine Ahnung, woran es liegen kann?
Wenn ich das Programm dazwischen neustarte, gibt es keine Probleme. Sieht irgendwie so aus, als würde ich die Datenbankverbindung nicht korrekt beenden.

Aber führe immer die Close-Anweisung aus. Gibt es noch eine andere?

mkinzler 13. Mär 2007 13:47

Re: InsertSQL
 
Wie heißt den der Primärschlüssel? Wie vergibst du ihn (Generator? Trigger?)

fapsons 13. Mär 2007 14:10

Re: InsertSQL
 
Mit diesem Trigger:

SQL-Code:
AS
BEGIN
  IF (NEW.TMID IS NULL) THEN
    NEW.TMID = GEN_ID(GEN_TERMINAL_ID,1);
END

mkinzler 13. Mär 2007 14:37

Re: InsertSQL
 
Wie sind den die Transkationseinstellungen?

fapsons 13. Mär 2007 14:46

Re: InsertSQL
 
Meinst du die Eigenschaften von TTransaction?

mkinzler 13. Mär 2007 14:51

Re: InsertSQL
 
Ja.

fapsons 13. Mär 2007 15:25

Re: InsertSQL
 
Transaction:

Active := false;
AutoStopAction := saNone;
DefaultAction := TACommit;

mkinzler 13. Mär 2007 15:59

Re: InsertSQL
 
Aktiviere sie mal.

fapsons 14. Mär 2007 09:01

Re: InsertSQL
 
Bringt leider nichts. Kommt die selbe Fehlermeldung...

TBx 14. Mär 2007 09:06

Re: InsertSQL
 
Hallo!

Poste bitte mal die genaue Fehlermeldung, die Dir ausgegeben wird.

Gruß

Thomas

fapsons 14. Mär 2007 10:23

Re: InsertSQL
 
Im Projekt reg.exe ist eine Exception der Klasse EDatabaseError aufgetreten. Meldung: 'Feld 'TMID' muss einen Wert haben'. Prozess wurde angehalten. Mit Einzelnen....

hoika 14. Mär 2007 10:58

Re: InsertSQL
 
Hallo,

warum nimmst du nicht einfach

.InsertSQL.ExecSQL.


Heiko

Hansa 14. Mär 2007 11:40

Re: InsertSQL
 
Warum machst Du das nicht so ?

Delphi-Quellcode:
procedure Add_New_Terminal(typ, Bez, Beschr :String);
begin
 with D_DataModule.DataSet do
 begin
   Insert;
   FieldByName ('TYP').AsString := typ;
   FieldByName ('BEZEICHNUNG').AsString := Bezeichnung;
   FieldByName ('BESCHREIBUNG').AsString := Beschr;
   Post;
 end;
end;
[/quote]

fapsons 14. Mär 2007 13:07

Re: InsertSQL
 
Habe es jetzt mit der IBQuery versucht. Jetzt klappts problemlos... Danke...;)


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