AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird Fehlerhaftes Returning
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Fehlerhaftes Returning

Ein Thema von Pro_RJ · begonnen am 8. Mär 2012 · letzter Beitrag vom 8. Mär 2012
Antwort Antwort
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#1

AW: Firebird Fehlerhaftes Returning

  Alt 8. Mär 2012, 12:05
ist AsInteger überhaupt richtig?
Wie ist das Feld in FB deklariert?
Wie sieht dein Trigger aus?
Hast du noch weitere Trigger in der Tabelle?
  Mit Zitat antworten Zitat
Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#2

AW: Firebird Fehlerhaftes Returning

  Alt 8. Mär 2012, 12:14
das Feld ist ein Integer.
der Trigger :

Delphi-Quellcode:
CREATE trigger zaehlerTBL for TBL
active before insert position 0
AS
BEGIN
  NEW.ZAEHLER = GEN_ID(GENTBL,1);
END
Es sind noch andere Trigger in Tabelle vorhanden, diese Belegen aber das Feld nicht.
Das Feld ist ja auch richtig Belegt es kommt nur beim Einfügen im Statement nicht zurück.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#3

AW: Firebird Fehlerhaftes Returning

  Alt 8. Mär 2012, 12:19
Ich habe IBX nicht im Einsatz, aber probier mal:
Delphi-Quellcode:
IBSQL.close
IBSQL.sql.clear;
IBSQL.sql.text := 'Insert into TBL (Nr) values (1) Returning Zaehler';
IBSQL.ExecSQL;
IBSQL.ParamByName('Zaehler').asInteger;
Es könnte auch gut sein, dass IBX einfach die RETURNING Klausel von Firebird nicht unterstützt.
  Mit Zitat antworten Zitat
Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#4

AW: Firebird Fehlerhaftes Returning

  Alt 8. Mär 2012, 12:27
Doch doch, diese Funktion wird unterstützt und Fuktioniert ja auch in 99,999% aller Fälle. nur eben ab und zu bringt diese Funktion eben kein Ergebnis.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Firebird Fehlerhaftes Returning

  Alt 8. Mär 2012, 12:29
Hast du gesehen, dass tsteinmaurer "ParamByName" und nicht "FieldByName" benutzt hat?

Bei mir haben die Rückgabe-Parameter manchmal allerdings komische Namen, weswegen ich sie immer über den Index anspreche -> Params[ParamCount-1].AsInteger
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#6

AW: Firebird Fehlerhaftes Returning

  Alt 8. Mär 2012, 12:49
Das Problem ist nicht, das die Funktion IBSQL.FieldByName('Zaehler').asInteger nicht geht. das Problem liegt darin, das der Server den Wert nicht an den Client übermittelt, Der Server ermittelt den Wert richtig und schreibt ihn auch in den Richtigen Datensatz in das Richtige Feld. Das ist ja auch alles IO. nur das Das Feld im Anschluss nicht an den Client übermittelt wird. Das problem ist im übrigen auch nicht nur beim PrimayKey sondern auch bei anderen Felder, die Serverseitig richtig belegt sind aber eben nicht an den Client übermittelt werden
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Firebird Fehlerhaftes Returning

  Alt 8. Mär 2012, 12:55
Das Problem ist nicht, das die Funktion IBSQL.FieldByName('Zaehler').asInteger nicht geht. das Problem liegt darin, das der Server den Wert nicht an den Client übermittelt,
Und da bist Du dir absolut sicher (SQL-Monitor usw.)? Ich habe die 2.1.1 im Einsatz und auch eine Stelle mit Returning - damit hatte ich bei meinen Kunden noch kein Problem (das sind einige tausend Installationen die diese Funktion nutzen).

GRüße
  Mit Zitat antworten Zitat
Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#8

AW: Firebird Fehlerhaftes Returning

  Alt 8. Mär 2012, 13:00
Da bin ich mir absolut relativ sicher da der Datensatz Serverseitig den richtigen Zähler hat.

ich kann das ganze sehr einfach und sicher prüfen:
Es handelt sich hier um eine schnittstelle. diese Daten werden im 1. Schritt in eine Zwischentabelle gespeichert. "TBL_A". Anschliesend wird diese Eingefügte Datenmenge in einer Schleife durchgearbeitet und diese erzeugt zusätzliche Daten "TBL_B"

der Ablauf ist (schematisch Dargestellt) folgender:
Delphi-Quellcode:
Transaction Starten;
While not TBL_A.Eof do
Begin
  INC(I);
  IBSQL.CLose;
  IBSQL.SQL.Text := 'Insert into TBL_B(Nr) values (' + IntToStr(TBL_a.FieldByName('Zaehler').asINteger) + ') returing Zaehler';
  IBSQL.Execsql;

  Zaehler := IBSQL1.FIeldByName('Zaehler').asNteger;
  IBSQL.CLose;
  IBSQL.SQL.Text := 'Update TBL_A set FremdID = ' + IntToStr(Zaehler) + ' where Zaehler = ' + IntToStr(TBL_a.FieldByName('Zaehler').asINteger);
  IBSQL.Execsql
  TBL_A.Next;
end;
Transaction Commit;
Das heist das es pro TBL_A Datensatz auch einen TBL_B Datensatz geben muss (1=1 Verbindung).
In TBL_A speichere ich mir den neuen Zaehler aus TBL_B und in TBL_B steht der Zaehler aus TBL_A.

Jetzt ist ab und zu mal das Problem, das in TBL_A UND TBL_B ein Datensatz vorhanden ist. In TBL_B steht ein Zaehler aus TBL_A aber in TBL_A ist das Feld Fremd_ID 0 und das Kann einfach nicht sein.

Geändert von Pro_RJ ( 8. Mär 2012 um 13:08 Uhr)
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#9

AW: Firebird Fehlerhaftes Returning

  Alt 8. Mär 2012, 13:02
Ich selbst hatte damit auch noch nie Probleme, verwende allerdings IBObjects bzw. IBDAC.

@Lemmy: Einige Tausende Installationen? Bist du Mitglieder der Foundation? SCNR.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Firebird Fehlerhaftes Returning

  Alt 8. Mär 2012, 13:04
Das Feld wird auch nicht an den Client zurückgegeben, sondern der Wert des Feldes ( in dem entsprechenden Parameter)
Markus Kinzler
  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 15:21 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