Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Insert Generator bei Interbase klappt nicht ! (https://www.delphipraxis.net/61591-insert-generator-bei-interbase-klappt-nicht.html)

wlfmario 23. Jan 2006 16:22

Datenbank: Interbase • Zugriff über: IB

Insert Generator bei Interbase klappt nicht !
 
Hallo zusammen,

ich versuche grade per INSERT ein GeneratorFeld in mein PrimaryKey zu speichern !
Leider klappt das nicht so wie ich mir das vorstelle.

Hier mal der Code.
Delphi-Quellcode:
begin
DM.IBShop.Close;
DM.IBShop.InsertSQL.Text := 'INSERT INTO SHOPDATEN (SHOP_ID) VALUES ('+ GEN_ID(GEN_SHOPDATEN_ID,1) + ')';
DM.IBShop.Open;
Ich bekomme immer folgende Meldung:
Zitat:

Fehler] ShopTools.pas(167): Undefinierter Bezeichner: 'GEN_ID'
Ich finde aber keine Infos über GEN_ID.
Was muss ich machen damit mein Generator in mein Primarykey gespeichert wird ?

mkinzler 23. Jan 2006 16:29

Re: Insert Generator bei Interbase klappt nicht !
 
Gen_ID() ist keine Funktion von Delphi, sondern eine Funktion von Interbase.
Delphi-Quellcode:
DM.IBShop.InsertSQL.Text := 'INSERT INTO SHOPDATEN (SHOP_ID) VALUES (GEN_ID(GEN_SHOPDATEN_ID,1))';
oder besser das Ganze in einem Before Insert Trigger machen

wlfmario 23. Jan 2006 16:42

Re: Insert Generator bei Interbase klappt nicht !
 
Zitat:

Zitat von mkinzler
oder besser das Ganze in einem Before Insert Trigger machen

Hört sich evt. etwas Doof an aber was soll ich in den Trigger schreiben ?

mkinzler 23. Jan 2006 16:46

Re: Insert Generator bei Interbase klappt nicht !
 
In der Datenbank mit IConsole oder IBEXpert

SQL-Code:
CREATE TRIGGER Neue_ShopDaten FOR SHOPDATEN
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GEN_SHOPDATEN_ID,1);
END
Sorgt dafür das bei INSERTS bei fehlenden ID's automatisch einer vergeben wird

wlfmario 23. Jan 2006 18:01

Re: Insert Generator bei Interbase klappt nicht !
 
Danke für die Hilfe !

Leider wird bei mir nichts eingetragen wenn ich per INSERTSQL etwas in die Datenbank Eintragen möchte.
Delphi-Quellcode:
DM.IBShop.Close;
DM.IBShop.InsertSQL.Text :=('INSERT INTO SHOPDATEN (SHOP_ID) VALUES (GEN_ID(GEN_SHOPDATEN_ID,1))');
DM.IBShop.InsertSQL.Text :=('INSERT INTO SHOPDATEN (NAME) VALUES (MeinName)');
DM.IBShop.Open;
Was mache ich Falsch ? Ledie findet man über InsertSQL nicht viel Hilfe im Netz.

mkinzler 23. Jan 2006 18:05

Re: Insert Generator bei Interbase klappt nicht !
 
Zitat:

Zitat von wlfmario
Danke für die Hilfe !

Leider wird bei mir nichts eingetragen wenn ich per INSERTSQL etwas in die Datenbank Eintragen möchte.

Das PR Feld darf nicht in der Feldliste beim INSERT sein, da es ja (wenn es leer ist) vom Trigger gefüllt wird.

Was mache ich Falsch ? Ledie findet man über InsertSQL nicht viel Hilfe im Netz.

Delphi-Quellcode:
DM.IBShop.Close;
DM.IBShop.InsertSQL.Text :=('INSERT INTO SHOPDATEN (NAME) VALUES (MeinName)');
DM.IBShop.ExecSql;
Nachtrag: Bei nicht SELECT - Abfragen ( INSERT, UPDATE, DELETE) ist Open durch ExecSQL zu ersetzten, da solche Abfragen keine Ergebnismenge zurückliefern.

wlfmario 23. Jan 2006 18:12

Re: Insert Generator bei Interbase klappt nicht !
 
Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Shop_Installer.exe ist eine Exception der Klasse EIBInterBaseError aufgetreten. Meldung: 'Dynamic SQL Error
SQL error code = -206
Column unknown
MEINNAME'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Das habe ich auch schon probiert ! Leider kommt die obere Meldung.

mkinzler 23. Jan 2006 18:16

Re: Insert Generator bei Interbase klappt nicht !
 
Mein name ist durch eine String zu ersetzen z.B.
SQL-Code:
INSERT INTO SHOPDATEN (NAME) VALUES 'wlfmario'

wlfmario 23. Jan 2006 18:26

Re: Insert Generator bei Interbase klappt nicht !
 
Da liegt ja das Problem !
Ich habe es schon in allen Variationen versucht, entweder meckert Delphi oder Interbase.
Delphi-Quellcode:
DM.IBShop.InsertSQL.Text :=('INSERT INTO SHOPDATEN (NAME) VALUES 'MARIO' ');
Ich habe das gefühl das ich etwas übersehe.

mkinzler 23. Jan 2006 18:32

Re: Insert Generator bei Interbase klappt nicht !
 
Text ist eine Property die Klammern bei der Zuweisung sind zuviel.

Delphi-Quellcode:
DM.IBShop.InsertSQL.Text :='INSERT INTO SHOPDATEN (NAME) VALUES ('+QuotedString('MARIO')+')';


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