![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: ZEOS
Zeos - Insert-Problem
Moin,
ganz kurz: Ich habe eine DB, darin eine Tabelle mit 2 Feldern: ID und Text ID ist PK und ein AutoInc-Feld. Eingebunden habe ich die DB mit den Zeos-Komponenten. Will ich jetzt einen neuen Datensatz einfügen bekomme ich eine Fehlermeldung, dass das Feld ID einen Wert haben muss. Muss ich bei den Zeos-Kompos was bestimmtes einstellen, dass das Feld als AutoInc akzeptiert wird? Das Feld hat den DataType ftAutoInc. Danke für eure Hilfe *g* Gruß trashcandesign |
Re: Zeos - Insert-Problem
In IB/FB mußt du ein Generator/eine Sequenz erzeugen, welche für den "autoinc" sorgt. Entweder über TSequence oder DB-Trigger.
|
Re: Zeos - Insert-Problem
ich habe in meiner DB einen Trigger für die Tabelle erzeugt, mit den MDO-Komponenten hab ich den Insert auch ohne probleme geschafft. Ich habe aber jetzt auf die Zeos-Kompos umgestellt und da will er plötzlich einen Wert für das Feld.
Kann ich den Trigger da irgendwo noch angeben? Wird der nicht automatisch aufgerufen, wie bisher auch? |
Re: Zeos - Insert-Problem
Zitat:
Zeig mal den Query. |
Re: Zeos - Insert-Problem
Na in diesem Fall:
TZQuery -SQL
SQL-Code:
-Params: Keine Parameter eingestellt
SELECT ID, Text FROM Tabelle WHERE ID = :ID
-UpdateObject = dbUpdate dbUpdate: TZUpdateSQL -DeleteSQL
SQL-Code:
-InsertSQL
DELETE FROM Tabelle WHERE ID = :OLD_ID
SQL-Code:
-ModifySQL
INSERT INTO Tabelle (Text) VALUES (:Text)
SQL-Code:
-ParamData
UPDATE Tabelle SET ID= :ID, Text=:Text WHERE ID = :OLD_ID
Delphi-Quellcode:
item
DataType = ftAutoInc Name = 'ID' ParamType = ptInputOutput end item DataType = ftUnknown Name = 'Text' ParamType = ptUnknown end Ich kenn mich ja in Zeos nicht aus und weiß deshalb nich, ob ich vllt. irgendwo einen EIntrag vergessen hab?! |
Re: Zeos - Insert-Problem
Hi Ihr beiden,
in der "neuen" Version von ZEOS (also ab der 6.5.1 alpha CVS as of 13/10/2005) gibt es die Komponente "TZSequence" (Danke Stevie!), über die man (momentan nur(!) für Firebird realisiert) einen Generator einbinden und nutzen kann, so wie es hier diskutiert wird. Ich habe die Sache mal kurz anhand der CARGO-Beispieltabelle von ZEOS auf meinem FB 1.5 nachgespielt und das Feld C_ID (INTEGER und PK-Feld) als Ziel der generierten Sequenznummer angegeben und es funzt ohne Probleme. Die Vorgehensweise ist hierbei folgende: TZSequence einfügen und Connection zuweisen. Die Property "SequenceName" muss den Namen des Generators haben, der angesprochen werden soll (z. B. IDGEN). Die BlockSize der TZSequence gibt die Schrittweite bei der Generierung der Nummern an (default: 1). Somit ist schon mal der Generator eingerichtet. Btw: die Liste der Generatoren kann über
SQL-Code:
ermittelt werden.
SELECT rdb$generator_name FROM rdb$generators
In meinem Beispiel habe ich ein simples TZQuery genutzt und das Resultset mit einem "SELECT * FROM cargo" ermittelt. Die Verknüpfung zwischen Generator und Zielattribut der Cargo-Tabelle wird nun über die Property 1) "Sequence" und 2) "SequenceField" des TZQuery hergestellt. Hier wird 1) das ZSequence-Objekt ausgewählt (z. B. ZSequence1) und 2) das Tabellenattribut gewählt, welches die generierte ID empfangen soll (z. B. C_ID). Hoffentlich hilft's. Grüße! |
Re: Zeos - Insert-Problem
Zitat:
|
Re: Zeos - Insert-Problem
Das AutoInc geschieht auf jeden Fall auf DB-Seite, aber wenn ich einen Wert mitgebe, wird der für gewöhnlich genommen, so bin ich es zumindest aus MySQL gewohnt.
Aber der Tip von Domo Sokrat hat funktioniert, jetzt hoff ich nur, das alles klappt auch, wenn ich weitere DBs hinzufüge (MSSQL, Access) Danke für eure Hilfe |
Re: Zeos - Insert-Problem
:warn: Achtung! :warn:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 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