tvplanit - Datenanbindung aktualisieren [gelöst]

Rund um die LCL und andere Komponenten
Antworten
VB_Lazarus
Beiträge: 90
Registriert: Do 23. Dez 2010, 19:10
OS, Lazarus, FPC: Windows 10/11 32/64bit, L 2.2.0 32bit, FPC 3.2.2 32bit
CPU-Target: 32Bit

tvplanit - Datenanbindung aktualisieren [gelöst]

Beitrag von VB_Lazarus »

Hallo,

ich benötige wieder einmal eure Hilfe.
Ich habe ein Programm, das einen Zeitmananger (tvplanit) hat.
Ich habe nun folgendes Problem:
Wenn das Programm ein 2. mal gestartet ist und ich Änderungen in der 1. Instanz mache, werden die Daten in der 2. Instanz nicht angezeigt. Was ja acu erst mal logisch ist.
Ich habe schon folgende Befehle versucht:

Code: Alles auswählen

 
        DM.VpZeosDatastore.Load;
        DM.VpZeosDatastore.LoadEvents;
        DM.VpZeosDatastore.RefreshResource;
        DM.VpZeosDatastore.RefreshEvents;
        DM.VpZeosDatastore.LoadEventsOfResource(0);
 

Aber nichts hat funktioniert.
Folgende Info muss ich noch geben:
Die Datenbank ist eine sqlite. Diese wird über die zeos komponente angebunden.
Hat irgendjemand eine Idee, wie ich zu meinem Ziel komme?
Danke.

Gruß
Zuletzt geändert von VB_Lazarus am Mo 26. Mär 2018, 05:35, insgesamt 1-mal geändert.

wp_xyz
Beiträge: 4864
Registriert: Fr 8. Apr 2011, 09:01

Re: tvplanit - Datenanbindung aktualisieren

Beitrag von wp_xyz »

Im Demo "examles/datastores/sqlite3" gibt es einen ähnlichen Fall. Hier werden die TvPlanit-Termine zusätzlich in einem DBGrid angezeigt, und wenn man etwas im DBGrid ändert, erscheint die Änderung ohne weiteres nicht in TvPlanIt. Probier mal den Code unter BtnApplyToPlannerClick() aus, der löst das Problem zumindest für das DBGrid und könnte auch in deinem Fall funktionieren (auf einen Button "Refresh" legen).

VB_Lazarus
Beiträge: 90
Registriert: Do 23. Dez 2010, 19:10
OS, Lazarus, FPC: Windows 10/11 32/64bit, L 2.2.0 32bit, FPC 3.2.2 32bit
CPU-Target: 32Bit

Re: tvplanit - Datenanbindung aktualisieren

Beitrag von VB_Lazarus »

Danke, für den Tip.

Ich konnte das Beispiel nicht so benutzen, aber es hat mich zur Lösung gebracht.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: tvplanit - Datenanbindung aktualisieren [gelöst]

Beitrag von af0815 »

Es wäre schön, wenn wir die Lösung auch wissen würden :-)

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

VB_Lazarus
Beiträge: 90
Registriert: Do 23. Dez 2010, 19:10
OS, Lazarus, FPC: Windows 10/11 32/64bit, L 2.2.0 32bit, FPC 3.2.2 32bit
CPU-Target: 32Bit

Re: tvplanit - Datenanbindung aktualisieren [gelöst]

Beitrag von VB_Lazarus »

Natürlich sende ich auch die Lösung.

Dieser Code ist im Ereignis FormShow

Code: Alles auswählen

 
     DM.ZConnection.Database:=DatenbankDateiName;
     DM.ZConnection.AutoCommit:=true;
 
     DM.VpZeosDatastore.Connection := DM.ZConnection;
     DM.VpZeosDatastore.AutoCreate := true;
     DM.VpZeosDatastore.Connected := true;
 
     if DM.VpZeosDatastore.Resources.Count = 0 then DM.VpZeosDatastore.Resources.AddResource(1);
     if DM.VpZeosDatastore.Resources.Count > 0 then
       begin
            DM.VpZeosDatastore.ResourceID := DM.VpZeosDatastore.Resources.Items[0].ResourceID;
         end;
 
     DM.VpControlLink.DataStore:=DM.VpZeosDatastore;
     VpDayView.DataStore:=DM.VpZeosDatastore;
     VpWeekView.DataStore:=DM.VpZeosDatastore;
     VpMonthView.DataStore:=DM.VpZeosDatastore;
 
 


Dieser Code ist im Ereignis Timer

Code: Alles auswählen

 
           DM.VpZeosDatastore.Resources.ClearResources;
           DM.VpZeosDatastore.Load;
           DM.VpZeosDatastore.ResourceID := DM.VpZeosDatastore.Resources.Items[0].ResourceID;
           DM.VpZeosDatastore.LoadEvents;
           DM.VpZeosDatastore.RefreshEvents;
           DM.VpZeosDatastore.EventsTable.Refresh;
 

Folgende Erklärung:
Datenbank: SQLite; Komponente: ZEOS; BS: Win10
Der Timer wird alle x Sekunden abgerufen. Ist so eine simultane MehrUserBenutzung.
Ich habe hier nur die Events, weil ich den Rest (Contacts...) nicht benötige.

Ich hatte am Anfang versucht, dies mit dem XML zu lösen.
TVPlanit speichert die XML aber nur, wenn die Anwendung beendet wird.
Ein Zwischendruch abrufen von geänderten Daten war nicht möglich.

Antworten