AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zeos - Insert-Problem

Zeos - Insert-Problem

Ein Thema von trashcandesign · begonnen am 4. Aug 2006 · letzter Beitrag vom 7. Aug 2006
Antwort Antwort
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#1

Zeos - Insert-Problem

  Alt 4. Aug 2006, 16:23
Datenbank: Firebird • Version: 1.5 • Zugriff über: ZEOS
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zeos - Insert-Problem

  Alt 4. Aug 2006, 16:46
In IB/FB mußt du ein Generator/eine Sequenz erzeugen, welche für den "autoinc" sorgt. Entweder über TSequence oder DB-Trigger.
Markus Kinzler
  Mit Zitat antworten Zitat
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Zeos - Insert-Problem

  Alt 4. Aug 2006, 17:27
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Zeos - Insert-Problem

  Alt 4. Aug 2006, 19:40
Zitat:
Kann ich den Trigger da irgendwo noch angeben? Wird der nicht automatisch aufgerufen, wie bisher auch?
Ob der Trigger aufgerufen wird liegt nicht in der Hand der Komponente.
Zeig mal den Query.
Markus Kinzler
  Mit Zitat antworten Zitat
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Zeos - Insert-Problem

  Alt 7. Aug 2006, 08:22
Na in diesem Fall:

TZQuery
-SQL
SELECT ID, Text FROM Tabelle WHERE ID = :ID -Params: Keine Parameter eingestellt
-UpdateObject = dbUpdate


dbUpdate: TZUpdateSQL
-DeleteSQL
DELETE FROM Tabelle WHERE ID = :OLD_ID -InsertSQL
INSERT INTO Tabelle (Text) VALUES (:Text) -ModifySQL
UPDATE Tabelle SET ID= :ID, Text=:Text WHERE ID = :OLD_ID -ParamData
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?!
  Mit Zitat antworten Zitat
Benutzerbild von Domo Sokrat
Domo Sokrat

Registriert seit: 14. Mai 2003
Ort: Wehrheim / Ts.
235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Zeos - Insert-Problem

  Alt 7. Aug 2006, 11:41
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
SELECT rdb$generator_name FROM rdb$generators ermittelt werden.

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!
Michael Seeger
Vergesst nicht: Es wird überall nur mit Wasser gekocht
ZEOSLib - Admin-Team
ZeosLib-Forum
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#7

Re: Zeos - Insert-Problem

  Alt 7. Aug 2006, 16:06
Zitat von trashcandesign:
Muss ich bei den Zeos-Kompos was bestimmtes einstellen, dass das Feld als AutoInc akzeptiert wird?
Wenn du meinst, dass das AutoInc auf Datenbankseite geschieht, dann weis ID einfach -1 zu, der Server korrigiert das dann schon automatisch...
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Zeos - Insert-Problem

  Alt 7. Aug 2006, 16:28
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
  Mit Zitat antworten Zitat
Benutzerbild von Domo Sokrat
Domo Sokrat

Registriert seit: 14. Mai 2003
Ort: Wehrheim / Ts.
235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Zeos - Insert-Problem

  Alt 7. Aug 2006, 18:10
Achtung!

Zitat von Domo Sokrat:
... momentan nur(!) für Firebird realisiert...
Mal sehen, ob wir demnächst den Rest auch noch realisiert bekommen
Michael Seeger
Vergesst nicht: Es wird überall nur mit Wasser gekocht
ZEOSLib - Admin-Team
ZeosLib-Forum
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:35 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