AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Aktuallisieren der ans cxdbGrid gekoppelten Query

Aktuallisieren der ans cxdbGrid gekoppelten Query

Ein Thema von Darkchild · begonnen am 10. Nov 2006 · letzter Beitrag vom 10. Nov 2006
Antwort Antwort
Darkchild

Registriert seit: 13. Okt 2006
Ort: NRW
169 Beiträge
 
Delphi 2006 Enterprise
 
#1

Aktuallisieren der ans cxdbGrid gekoppelten Query

  Alt 10. Nov 2006, 08:28
Datenbank: Firebird • Version: 1.5 • Zugriff über: InterBase
Guten Morgen zusammen,

ich nochmals zum Thema Query:

Folgendes, ich habe eine Eingabemaske in der cxdbEdit - und cxdbextlookupComboboxen zum einsatz kommen. Die Eingabedaten aus den cxdbEdit - Feldern sowie die Daten aus den cxdbextlookupComboboxen Schreibe ich in die im hintergrund angebundene TTable (z.B. ibtableZeiterfassung).
Das cxdbGrid erzeugt die dort dargestellten Datensätze mithilfe einer im hintergrund angebundenen IBQuery, die ich mit den passenden SQL-Befehlen gefüttert habe damit die Ansicht im Grid meinen Vorstellungen entspricht.

So, wenn ich jetzt einen neuen Datensatz eingebe und diesen Speichere wird er in die TTable geschrieben, aber ich sehe in dann immer noch nicht im Grid, erst wenn ich die Anwendung komplett schliesse und dann wieder öffne wird dieser dargestellt. Möchte aber das er direkt nach der Speicherung angezeigt wird (ist ja schon mist wenn ich nach jedem Datensatz die Anwendung schliessen und öffnen muss nur damit ich den Datensatz zu Gesicht bekomme).

Jetzt habe ich Gestern rausbekommen das ich die Query natürlich aktuallisieren muss (soweit alles klar bei mir) habe mir dann einen passenden Event ausgesucht auf den ich REagiere und folgende Zeilen in Code Geschrieben:

Delphi-Quellcode:
cxdbGrid.BeginUpdate;
DataModuleMain.ibqueryzeiterfassung.updateRecord;
cxdbGrid.EndUpdate;
Habe gedacht das sollte klappen, tut es aber natürlich nicht, es wird mir dann die Meldung rausgegeben "Datenmenge die nur zum Lesen geöffnet werden kann, kann mit diesem Paramter nicht Aktuallisiert werden".

Meine Frage jetzt :
Was muss ich denn zwischen BeginUpdate und EndUpdate Schreiben damit er mir die Ansicht meines Grids über die Query nach eingabe eines neuen Datensatzes sofort Aktuallisiert ?

Habe auch schon andere Befehle ausprobiert, wie das schliessen und öffnen der Tabellen, klappt aber auch nicht und ist auch nicht gerade elegant, geschweige denn Effektiv.

Hat da jemand vieleicht einen Hinweis oder Tip oder Quellcode-Beispiel für mich, damit ich an dieser Stelle endlich weiter komme ?

Für hilfe wäre ich sehr Dankbar.

Gruss
Darkchild
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#2

Re: Aktuallisieren der ans cxdbGrid gekoppelten Query

  Alt 10. Nov 2006, 08:39
Moin
Ich würde es mal mit folgendem versuchen:
Delphi-Quellcode:
DataModuleMain.ibqueryzeiterfassung.CLOSE;
DataModuleMain.ibqueryzeiterfassung.OPEN;
Hilft eigentlich immer
  Mit Zitat antworten Zitat
Darkchild

Registriert seit: 13. Okt 2006
Ort: NRW
169 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Aktuallisieren der ans cxdbGrid gekoppelten Query

  Alt 10. Nov 2006, 09:01
Das habe ich auch schon gemacht, hatte ich zum Testen auf Form.Show und Form.Create gelegt, damit vieleicht nur das eine Fenster geschlossen werden muss und nicht die ganze Anwendung, aber das Funktioniert leider nicht.

Wäre auch zu einfache gewesen, aber dennoch Danke.

Gruss
Darkchild
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Aktuallisieren der ans cxdbGrid gekoppelten Query

  Alt 10. Nov 2006, 09:24
Hi Darkchild,

Dein Problem hat aber auch weniger mit einem TcxGrid zu tun, als mit dem allgemeinen Problem, Daten aus einem Server im Client Synchron zu halten.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Aktuallisieren der ans cxdbGrid gekoppelten Query

  Alt 10. Nov 2006, 09:43
Hi Darkchild,

die Query muss die Daten vom Server anfordern.
Dies macht sie über ein Refresh.

Ich würde auch die Table und die Query mit der selben Transaction verbinden.
Die Transaction sollte auf Read Commited stehen.

Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Darkchild

Registriert seit: 13. Okt 2006
Ort: NRW
169 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Aktuallisieren der ans cxdbGrid gekoppelten Query

  Alt 10. Nov 2006, 11:34
@dataspider

Auf die Geschichte mit dem Refresh bin ich auch gekommen, nur habe ich den Refresh auf dem SpeicherButton liegen und wenn ich dann Speicher soll er direkt refreshen, macht der aber nicht.

Ich bekomme dann immer die Meldung : "Zeile kann nicht aktuallisiert werden.(Keine Aktuallisierungs-Abfrage)".

So sieht im Augenblick mein SpeicherButton aus:
Delphi-Quellcode:
procedure Tfrmzeiterfassung.cxbtnzeiterfassungspeichernClick(Sender: TObject);
begin
StarteTransaction();
DataModuleMain.ibtablezeiterfassung.post;

  If DataModuleMain.ibtrzeiterfassung.Active then
         DataModuleMain.ibtrzeiterfassung.Commit;

DataModuleMain.ibqueryzeiterfassung.Refresh;
DataModuleMain.ibtablezeiterfassung.Open;

end;
Mit der Fehlermeldung kann ich im moment leider nicht viel Anfangen, habe keinen Plan was der da noch braucht um den Refresh tatsächlich auszuführen.

Gruss
Darkchild
Ich bin der Geist der stets verneint und das mit recht, denn alles was entsteht ist wert das es zugrunde geht, drum besser wär das nichts entstünde, so ist denn alles was ihr Sünde, Zerstörung, kurz das Böse nennt, mein eigendliches Element.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Aktuallisieren der ans cxdbGrid gekoppelten Query

  Alt 10. Nov 2006, 12:31
Hi,

ich arbeite zwar mit den IBO' s, versuche es aber dennoch:
Delphi-Quellcode:
procedure Tfrmzeiterfassung.cxbtnzeiterfassungspeichernClick(Sender: TObject);
begin
  // was macht das StartTransaction???
  // StarteTransaction();
  with DataModuleMain do
  begin
    ibtablezeiterfassung.post;
    ibtablezeiterfassung.Transaction.Commit;

    if not ibqueryzeiterfassung.Active then
    begin
      ibqueryzeiterfassung.Transaction.Commit;
      ibtablezeiterfassung.Open;
    end
    else
    begin
      if ibqueryzeiterfassung.Transaction = ibtablezeiterfassung.Transaction then
        // bei bleicher Transaktion sollte ein Refresh reichen
        ibqueryzeiterfassung.Refresh
      else
      begin
        // sonst muss auch ein Commit gemacht werden
        ibqueryzeiterfassung.Transaction.CommitRetaining;
        // evtll. noch ein Refresh
        //ibqueryzeiterfassung.Refresh
      end;
    end;
  end;
end;
Wie gesagt, ich arbeite nicht mit den Komponenten, aber du kannst ja mal testen.
Warum ist die Query bei dir zu?

Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Darkchild

Registriert seit: 13. Okt 2006
Ort: NRW
169 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: Aktuallisieren der ans cxdbGrid gekoppelten Query

  Alt 10. Nov 2006, 12:40
Hinter der StarteTransaction() liegt nur dies hinter:

Delphi-Quellcode:
procedure Tfrmzeiterfassung.StarteTransaction();
begin

if not DataModuleMain.ibtrZeiterfassung.active then
       DataModuleMain.ibtrZeiterfassung.StartTransaction;

end;
Habe ich in eine Procedure gesetzt weil bei verschiedenen Schaltflächen immer das selbe gemacht wird und um die ganze sache nicht immer mit dem Selben Code zu füllen und um mir Arbeit zu sparen habe ich halt diese kleine mini Procedure darein gesetzt.

Gruss
Darkchild
Ich bin der Geist der stets verneint und das mit recht, denn alles was entsteht ist wert das es zugrunde geht, drum besser wär das nichts entstünde, so ist denn alles was ihr Sünde, Zerstörung, kurz das Böse nennt, mein eigendliches Element.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Aktuallisieren der ans cxdbGrid gekoppelten Query

  Alt 10. Nov 2006, 14:17
... und wie sind die Einstellungen der Transaktionen?
Benutzen Table und Query die gleiche Transaction?
Ist Read Commited eingestellt?

Frank
Frank Reim
  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 15:04 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