AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FIBPlus Dataset Refresh
Thema durchsuchen
Ansicht
Themen-Optionen

FIBPlus Dataset Refresh

Ein Thema von Der Jan · begonnen am 27. Mai 2011 · letzter Beitrag vom 31. Mai 2011
Antwort Antwort
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#1

FIBPlus Dataset Refresh

  Alt 27. Mai 2011, 09:33
Datenbank: Firebird • Version: 2.0 • Zugriff über: FIBPlus6.8
Hallo miteinander,

wie kann man in einem TpFIBDataSet den aktuellen Record nach dem Post refreshen lassen? Mein Gedanke war, mittels der Methode "Refresh" oder der Option "poRefreshAfterPost". Doch beides bringt keine Resultate, der Record wird nicht refreshed. Das RefreshSQL sollte richtig sein.

Hintergrund oder auch die ausführliche Variante: In ein Dataset wird ein Record eingefügt oder bearbeitet (Insert/Edit), mit einigen Werten befüllt und gesendet (Post). Dargestellt wird es in einem DevExpress cxGrid, dieses hatte ich zuerst in Verdacht, da man hier aufgrund der vielen Möglichkeiten schnell mal etwas "verbockt" hat, aber der Effekt tritt bei einem normalen TDBGrid auch auf. Nach dem Post steht der Eintrag in der Datenbank. Dort wurden mittels Trigger (BeforeInsert/BeforeUpdate) einige Felder berechnet / korrigiert. Diese Felder sollen im Grid aber auch angezeigt werden. Also muß das Dataset refreshed werden. Hier tritt das o.g. Problem auf. Der Record wird nicht refreshed.
Ich möchte nicht mit FullRefresh arbeiten und auch nicht unbedingt das Dataset neu öffnen müssen.
Gruß, Jan
  Mit Zitat antworten Zitat
Gernot Huber

Registriert seit: 26. Mai 2011
Ort: Dülmen
13 Beiträge
 
Delphi 2010 Professional
 
#2

AW: FIBPlus Dataset Refresh

  Alt 28. Mai 2011, 09:18
Hallo Jan,

um Dir bei diesen Problem helfen zu können, müsste man auf jeden Falll die SQL-Anweisungen sehen, die im Dataset stehen.

Ich habe mal ein kleines Testprogramm geschrieben, mit dem funktioniert der Refresh auf die berechneten Spalten.
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

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

AW: FIBPlus Dataset Refresh

  Alt 29. Mai 2011, 16:05
Hallo Der Jan,

darüber hinaus müssten man wissen ob die Transaktion mit Commit abgeschlossen ist. Wenn nicht welche Einstellungen in der Transaktionen eingestellt worden sind.

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

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#4

AW: FIBPlus Dataset Refresh

  Alt 30. Mai 2011, 11:46
mit dem funktioniert der Refresh auf die berechneten Spalten.
Das stimmt mich doch schon mal optimistisch

Hier die SQLs

Code:
-- Select SQL

select
  V.VIRTUALARTIKELID,
  V.FIR,
  V.FIL,
  V.ARTNR,
  V.ARTNAME,
  V.DELETED,
  V.MARK,
  V.CREATEUSERID,
  U1.REALNAME as CREATEUSER,
  V.CREATEDATE,
  V.MODIFYUSERID,
  U2.REALNAME as MODIFYUSER,
  V.MODIFYDATE
from
  T_VIRTUALARTIKEL V
  left outer join USERLIST U1 on U1.USERID = V.CREATEUSERID
  left outer join USERLIST U2 on U2.USERID = V.MODIFYUSERID
order by
  V.ARTNR asc

--Der FIBPlus-Property Editor macht dieses RefreshSQL draus,
--was imho gut aussieht :)

select
  V.VIRTUALARTIKELID,
  V.FIR,
  V.FIL,
  V.ARTNR,
  V.ARTNAME,
  V.DELETED,
  V.MARK,
  V.CREATEUSERID,
  U1.REALNAME as CREATEUSER,
  V.CREATEDATE,
  V.MODIFYUSERID,
  U2.REALNAME as MODIFYUSER,
  V.MODIFYDATE
from
  T_VIRTUALARTIKEL V
  left outer join USERLIST U1 on U1.USERID = V.CREATEUSERID
  left outer join USERLIST U2 on U2.USERID = V.MODIFYUSERID
 WHERE
        V.VIRTUALARTIKELID = :OLD_VIRTUALARTIKELID
ob die Transaktion mit Commit abgeschlossen ist.
Ist sie. AutoCommit = true
Gruß, Jan
  Mit Zitat antworten Zitat
Gernot Huber

Registriert seit: 26. Mai 2011
Ort: Dülmen
13 Beiträge
 
Delphi 2010 Professional
 
#5

AW: FIBPlus Dataset Refresh

  Alt 30. Mai 2011, 12:16
Hallo Jan,

auf den ersten Blick kann ich hier keinen Fehler finden.

Ich habe Dir mal mein Testprogramm angehängt, evtl. kannst Du damit Deinen Fehler finden.

Gruß
Gernot
Angehängte Dateien
Dateityp: zip RefreshTest.zip (6,2 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#6

AW: FIBPlus Dataset Refresh

  Alt 30. Mai 2011, 15:40
Hello Gernot,

schon mal danke für deine Bemühungen. Ich kann es erst morgen testen, auf den ersten Blick sehe ich nicht wirklich einen Unterschied zu dem, was ich mache. Kannst du evtl. die Metadaten der Testdatenbank anhängen bitte ?
Gruß, Jan
  Mit Zitat antworten Zitat
Gernot Huber

Registriert seit: 26. Mai 2011
Ort: Dülmen
13 Beiträge
 
Delphi 2010 Professional
 
#7

AW: FIBPlus Dataset Refresh

  Alt 30. Mai 2011, 17:17
Hallo Jan,

hier sind die Metadaten.

Gruß, Gernot
Angehängte Dateien
Dateityp: txt TestDB.txt (958 Bytes, 9x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#8

AW: FIBPlus Dataset Refresh

  Alt 31. Mai 2011, 11:46
Hallo Gernot,

in der Tat hat mich dein Beispiel auf den richtigen Weg gebracht. So wie es aussieht, muss man die AutoUpdateOptions nutzen, obwohl diese, lt. Doku, zur automatischen Erzeugung der ModifySQLs bzw. clientseitigen ID-Erzeugung angedacht sind. Wenn man die beinhalteten Properties setzt (wichtig: WhenGetGenId nicht auf wgNever ) dann funktioniert es und der Record wird refreshed.
Vielen Dank für deine Hilfe!

Ich muss allerdings gestehen, ich halte es für zumindest fragwürdig, den User für die Erringung eines eigentlich rudimentären Features zur clientseitigen ID-Erzeugung zu geiseln, aber letzen Endes bin ich froh, dass es überhaupt geht. Falls ich noch einen anderen Weg finde, werde ich in sicher hier irgendwo posten
Gruß, Jan
  Mit Zitat antworten Zitat
Gernot Huber

Registriert seit: 26. Mai 2011
Ort: Dülmen
13 Beiträge
 
Delphi 2010 Professional
 
#9

AW: FIBPlus Dataset Refresh

  Alt 31. Mai 2011, 12:05
Hallo Jan,

bei mir funktioniert der Refresh auch, wenn WhenGetGenId auf wgNever gesetzt ist.

Du kannst dann aber keinen neuen Datensätze in die Tabelle einfügen.

Ich arbeite allerdings noch mit FIBPlus 6.4.1 hier könnte es evtl. Unterschiede geben.

Gruß
Gernot
  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 14:27 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