AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Selbstinkrementiertes Feld in Firebird zählt falsch hoch.
Thema durchsuchen
Ansicht
Themen-Optionen

Selbstinkrementiertes Feld in Firebird zählt falsch hoch.

Ein Thema von Chemiker · begonnen am 12. Jan 2009 · letzter Beitrag vom 12. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#1

Selbstinkrementiertes Feld in Firebird zählt falsch hoch.

  Alt 12. Jan 2009, 18:45
Datenbank: Firebird • Version: 2.0 • Zugriff über: IBExpert / Fibplus
Hallo,

ich habe unter Firebird ein Feld das automatisch durch einen Generator hochgezählt wird.
Wenn ich nun Datensätze eingebe unter IBExpert, so wird das Feld auch ohne Probleme hochgezählt. In meinem Test-Programm wo ich die Eingabe mit einem DBStringGrid und mit einem DBNavigator realisiere, wird das Feld um 2 hochgezählt.

IBExpert; 1,2,3,4 usw.
Delphi-Prg.:1,3,5 usw.

Woran kann das liegen?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch

  Alt 12. Jan 2009, 19:03
Wird der PK clientseitig gefüllt? Wird ein trigger verwendet? Wenn ja, wie sieht dieser aus?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch

  Alt 12. Jan 2009, 19:08
Hallo mkinzler,

was ist ein PK?

Es wird ein Tigger verwendet:

SQL-Code:
CREATE OR ALTER TRIGGER SET_MW_ID FOR MW_TABELLE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  if (new.mw_id is null) then
  new.mw_id = gen_id(mw_id_gen, 1);
end
Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch

  Alt 12. Jan 2009, 19:10
PK ist der primary key. Üblicherweise wird dort ein autoinc Feld verwendet.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch

  Alt 12. Jan 2009, 19:14
Hallo MrSpock,

dank für die Übersetzung.

Ja, es wird ein PK für das Feld verwendet.

ALTER TABLE MW_TABELLE ADD CONSTRAINT PK_MW_TABELLE PRIMARY KEY (MW_ID); Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch

  Alt 12. Jan 2009, 19:17
Wird das Feld vom Client gesetzt? Wird zusätzlich eine clientseitiges autoinc verwendet? (über Komponente)
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch

  Alt 12. Jan 2009, 19:20
Was mkinzler knapp andeuten will : in FIBplus ist wohl bei den AutoUpdateOptions ein Generatorname hinterlegt. Dort könnte man auch den GeneratorStep auf 5 einstellen und der Wert würde (je nach Trigger) gleich um 6 hochgezählt. Warum ? Der Trigger zählt wohl sowieso um eins hoch und übergibt den Wert an das Programm. Dieses macht den Rest. Das ist einfach nur doppelt gemoppelt.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch

  Alt 12. Jan 2009, 19:22
Hallo mkinzler,

mir nicht bekannt.
Ich habe nur die Komponenten so eingestellt das ich die Eingabe mit dem DBGrid und dem DBNavigator testen kann.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch

  Alt 12. Jan 2009, 19:28
Hallo hansa,

im FIBDataset steht:

AutoReWriteSqls= True
Generatorname= GEN_MW_TABELLE_ID
GeneratorStep=1

Kommt es deshalb zu der unterschiedlichen Zählweise?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch

  Alt 12. Jan 2009, 19:39
Sieht so aus. Siehe Vorposting. Nicht getestet, aber logisch. Setze doch testweise den Generatorstep wirklich auf 5 und gucke mal, was da rauskommt.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:55 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