Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Generator Auto Inc (https://www.delphipraxis.net/152672-generator-auto-inc.html)

ATS3788 1. Jul 2010 13:49

Datenbank: Firebird • Version: 2,1 • Zugriff über: ZEOS

Generator Auto Inc
 
Hallo allersamt.
Ich experimentiere zur Zeit mit Firebird, ZEOS und
Delphi herum.

SQL-Code:
/******************************************************************************/
/*                 Generated by IBExpert 01.07.2010 13:36:08                  */
/******************************************************************************/

/******************************************************************************/
/*        Following SET SQL DIALECT is just for the Database Comparer        */
/******************************************************************************/
SET SQL DIALECT 3;



/******************************************************************************/
/*                                   Tables                                  */
/******************************************************************************/


CREATE GENERATOR GEN_TABLECOUNTER_ID;

CREATE TABLE TABLECOUNTER (
    COUNTER INTEGER NOT NULL,
    RUSH    SMALLINT NOT NULL
);




/******************************************************************************/
/*                                Primary Keys                               */
/******************************************************************************/

ALTER TABLE TABLECOUNTER ADD CONSTRAINT PK_TABLECOUNTER PRIMARY KEY (COUNTER);


/******************************************************************************/
/*                                  Triggers                                 */
/******************************************************************************/


SET TERM ^ ;



/******************************************************************************/
/*                            Triggers for tables                            */
/******************************************************************************/



/* Trigger: COUNTER_TRIGGER */
CREATE OR ALTER TRIGGER COUNTER_TRIGGER FOR TABLECOUNTER
ACTIVE BEFORE INSERT POSITION 0
AS
begin

    if (new.COUNTER is null) then
    new.COUNTER = gen_id(GEN_TABLECOUNTER_ID, 1);

end
^


SET TERM ; ^



/******************************************************************************/
/*                                 Privileges                                */
/******************************************************************************/


/* Privileges of users */
GRANT ALL ON TABLECOUNTER TO MMK WITH GRANT OPTION;
Das ist meine Test Mini Datenbank.

Geht auch alles richtig mit IBExpert.
Der Counter wird automatisch ab 101 Generiert,
wenn man Daten eingibt.
Mein Problem !
Ich bekomme es einfach mit ZEOS nicht hin das er mir
den Counter automatisch selbst erstellt.

Ich habe eine ZConnection, ZTable und eine Datasource Componente genommen.
Wenn ich in das DBEdit Feld händig was eintrage geht es, dann kann ich speichern.

mkinzler 1. Jul 2010 13:58

AW: Generator Auto Inc
 
Du darfst entweder das PK Feld im Insert nicht füllen oder änderst den Trigger, dass der Generator auf jedenfall ausgeführt wird

Hansa 1. Jul 2010 14:00

AW: Generator Auto Inc
 
Zitat:

Zitat von ATS3788 (Beitrag 1032822)
Ich bekomme es einfach mit ZEOS nicht hin das er mir
den Counter automatisch selbst erstellt.

Was soll denn da selbst erstellt werden ? :shock: Beim Einfügen eines neuen Datensatzes schlägt doch wohl der Trigger zu und fertig. Wird der Counter etwa manuell geändert ? Dann greift das IS NULL natürlich nicht.

DelphiBandit 1. Jul 2010 14:35

AW: Generator Auto Inc
 
Wenn Du bei der Zeos in Deiner benutzen Query eine statische Feldliste benutzt, dann muss das Feld Counter die Eigenschaft Required = False haben. Damit kann man es bei einem neuen Datensatz einfach leer lassen, es wird NULL übergeben und der Trigger greift.

Andere Möglichkeit wäre, wenn Du mittels UpdateObject arbeitest, dann lässt Du dort den Value für Deinen Counter einfach leer im InsertSQL

SQL-Code:
INSERT TABLECOUNTER (COUNTER, RUSH) VALUES (NULL, :RUSH)

mkinzler 1. Jul 2010 14:40

AW: Generator Auto Inc
 
Oder
SQL-Code:
INSERT TABLECOUNTER (RUSH) VALUES (:RUSH);

ATS3788 1. Jul 2010 18:47

AW: Generator Auto Inc
 
Danke für die schnellen antworten
werde es mal ausprobieren

ATS3788 1. Jul 2010 22:51

AW: Generator Auto Inc
 
Code:
INSERT INTO TABLECOUNTER (RUSH) VALUES (:RUSH);
das "INTO" gehört noch dazu.
Also das Feld Counter auf
Not Null diabled
dann in Insert siehe oben einfügen
und dies
Delphi-Quellcode:
procedure TForm2.ZQuery1AfterPost(DataSet: TDataSet);
begin
ZQuery1.Refresh;
end;
und es funktioniert

Danke vielmals


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