AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Interbase Generator Autogenerierung
Thema durchsuchen
Ansicht
Themen-Optionen

Interbase Generator Autogenerierung

Ein Thema von mschaefer · begonnen am 5. Feb 2003 · letzter Beitrag vom 7. Feb 2003
Antwort Antwort
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#1

Interbase Generator Autogenerierung

  Alt 5. Feb 2003, 15:00
Moin und Hallo in den Süden

ja die Generatoren verfolgen mich immernoch:
Jetzt geht es um die Einträge der generierten Werte in die Tabelle
Zunächst der Teil der geht

CREATE TABLE adress_basis (
ADR_BAS_PID INTEGER,
ADR_BAS_Titel CHAR(50),
ADR_BAS_NameFull CHAR(50),
ADR_BAS_Company_Job CHAR(50),
ADR_BAS_Street_No CHAR(50),
ADR_BAS_Post_Town CHAR(50),
ADR_BAS_County_State CHAR(50),
ADR_BAS_Info_Person_FNT BLOB,
ADR_BAS_Visualfield_FNT BLOB,
ADR_BAS_Phone CHAR(50),
ADR_BAS_Fax CHAR(50),
ADR_BAS_EMail CHAR(50)
);

CREATE INDEX PRIMARYINDEX ON adress_basis (ADR_BAS_PID);
CREATE GENERATOR adress_basis;


INSERT INTO adress_basis (
ADR_BAS_PID,
ADR_BAS_Titel,
ADR_BAS_NameFull
)
VALUES
(GEN_ID( adress_basis,1)
, 'keiner'
, 'Heinz Becker'
)
;

/* Ok bis hierhin läuft alles bestens, inklusive der automatischen
Generierung des ID-Eintrags. Nun soll man aber mit einer kleinen
Procedure den Ausdruck (GEN_ID( adress_basis,1) im Insert ausdruck
umgehen können, genauer gesagt weglassen und dann ebenfalls
den ersten Value eintrag. Gefunden habe ich folgendes

SET TERM !! ;
CREATE TRIGGER Trigger1 FOR adress_basis
before insert position 0 as
begin
NEW.ADR_BAS_PID = GEN_ID(adress_basis,1);
end !!
SET TERM ; !!

Mein PROBLEM: WIBSQL beschwert sich bei dem SET TERM Ausdruck
und es kommt vom Server eine Fehlermeldung"Token nicht erkannt".
Greife derzeit über ODBC zu.

Habe den Eintrug, dass irgendwo noch ein Schalter umgestellt werden müßte.. Naja da hakt´s halt.

So long // Martin


Martin Schaefer
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2
  Alt 5. Feb 2003, 17:11
Zitat:
Greife derzeit über ODBC zu.
Habe noch keine Empfehlung gehört, daß das besonders gut ist.
Aber egal. Hier ist das was bei mir in diesem Zusammenhang in der DB steht :

Code:
CREATE GENERATOR GEN_KUNDE8_ID;
SET GENERATOR GEN_KUNDE8_ID TO 1476;


SET SQL DIALECT 3;
SET NAMES ISO8859_1;

SET TERM ^ ;

CREATE TRIGGER KUNDE8_BI0 FOR KUNDE8
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID (GEN_KUNDE8_ID,1);
end
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#3
  Alt 7. Feb 2003, 08:21
Hallo

erstmal Danke für das Codebeispiel, absolut korrekt. Hier kommt nun die Lösung warum mein Code zunächst nicht läuft.

1. Nun ja der ODBC Scheint wohl bestimmte Befehle nicht korrrekt
durchzureichen. Das gilt insbesondere für die SET Befehle.

2. Obwohl ich es in mehreren Interbase Beispielen gesehen habe darf man
offensichtlich bei Firebird mit dem SET TERM Befehl das
Endkennungszeichen nicht auf ein Doppelzeichen (bei mir !!) einstellen.
Mit einem Zeichen geht es dann (SET TERM ! ; und SET TERM ; ! ).



Hansa, Dein Beispiel hat übrigens geholfen um doch so einige
mögliche Fehlerquellen auszuschliessen THANKS !

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:06 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