Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Verwendung von Post/Insert/Open /Close.. Daten nicht sichtb. (https://www.delphipraxis.net/46523-verwendung-von-post-insert-open-close-daten-nicht-sichtb.html)

spoona 26. Mai 2005 14:43

Datenbank: Interbase • Version: 6 • Zugriff über: IB Table

Verwendung von Post/Insert/Open /Close.. Daten nicht sichtb.
 
Hallo,
ich habe mal wieder ein Problem.
Ich habe ne Datenbank auf die ueber das Netzwerk zugegriffen wird.Wenn ich jetzt die Daten von dem einen Rechner aendere und auf dem anderen Rechner ansehen will,dann sehe ich die Aenderung nur auf dem PC, wo sie vorgenommen wurde. Ok, es macht vielleicht auch Sinn,da erst nach Beendigung des Programmes die Daten fuer alle User in der DB sichtbar werden. Es liegt wohl daran,dass ich beim programmstart alle tables oeffne und beim beenden erst alle wieder schliesse, dann wird wohl erst ein Commit ausgefuehrt. Aber ich will doch nach jeder Aenderung,also nach jedem Post, die Aenderung auch sehen, ohne das Programm neu zu starten.
Allgemeine Programmstruktur :
Programmstart
Delphi-Quellcode:
  Table1.open
  Table2.open
  Table3.open
  //Insert Datensatz
  Table1.Insert
   // DBEditfelder werden gefuellt
  Table1.Post
  //Navigieren in den Datensaetzen
 // In meiner Transaction bzw . Rechner sehe ich Aenderung/Andere rechner sehen diese nicht
//Beenden des Programmes
  Table1.Close
  Table2.close
  Table3.close
Ist hier vielleicht etwas, was ich grundlegend falsch mache?
Vielen Dank fuer Eure Hilfe
Gruss Spoona

[edit=MrSpock]Code Tags eingefügt. Mfg, MrSpock[/edit]

franktron 26. Mai 2005 14:52

Re: Verwendung von Post/Insert/Open /Close.. Daten nicht sic
 
Du must die Transaktion neustarten
Also
Delphi-Quellcode:
  IBTransaction.Close;
  IBTransaction.Open;

MrSpock 26. Mai 2005 14:55

Re: Verwendung von Post/Insert/Open /Close.. Daten nicht sic
 
Hallo spoona,

du musst die Transaktion "committen". Ich empfehle ein CommitRetaining, da du dann mit der Transaktion noch weiter arbeiten kannst. Dann ist die Änderung in die Datenbank permanent übertragen, aber d.h. noch nicht, dass sie sofort auf dem anderen Rechner sichtbar wird. Wenn dieser mit einem Snapshot arbeitet, sieht er die Änderung nicht sofort!

spoona 26. Mai 2005 15:34

Re: Verwendung von Post/Insert/Open /Close.. Daten nicht sic
 
Hallo vielen Dank fuer die Antwoten.
Ich glaube es heisst Transaction.activ, da eine close funktion nicht implementiert ist.Oder?

Und mit dem Commitretaining funktioniert es soweit,das zumindest gleich alles in
die DB geschrieben wird(Ich mache also ein Commit direkt nach dem Post!!???).
Habe es vorher alles mit nem commit probiert,danach wurde aber kein datensatz mehr angezeigt. Mein delphi programm ist auf allen rechnern installiert, aber leider bekomme ich GAR KEINE Aenderung auf den anderen Rechnern. Habe noch refresht,aber das funktioniert auch nicht.
Was meinst du mit Snapshot? Die Einstellung kann ich bei dem Transaction Editor auswaehlen.Habe aber nichts von den vieren ausgewaehlt(Snapshot,Read_Commited,Read-Only Table Stability, Read-Write Table Stability).Was kann ich jetzt machen?

Vielen Dank fuer Eure Hilfe
Gruss Spoona

franktron 26. Mai 2005 16:13

Re: Verwendung von Post/Insert/Open /Close.. Daten nicht sic
 
Also PC1 mach Post dann

Transaction.Commit;

Und PC2 will neue Daten haben dann

Transaction.Active:=false;
Transaction.Active:=True;
Table.Open;

Neue Daten da. :-D

spoona 27. Mai 2005 11:03

Re: Verwendung von Post/Insert/Open /Close.. Daten nicht sic
 
Hallo,

danke fuer die Antwort, aber irgendwie geht das nicht so wie ich will.
Also ich habe es so :

ButtonSaveDataset begin //Wird an PC 1 gedrueckt
....
Frm_Database.TB_Contact.Post;
Frm_Database.TR_Database.CommitRetaining;
...
end;

ButtonRefreshDataset begin// Wird an PC 2 gedrueckt

Frm_Database.TR_Database.Active:=false;
Frm_Database.TR_Database.Active:=True;
Frm_Database.TB_Contact.Open;
end;

Wenn ich die Transaction deaktieviere und aktiviere, dann werden gar keine daten mehr angezeigt.Also alles weg.....
Vielen Dank fuer deine Hilfe
Gruss Spoona

franktron 27. Mai 2005 11:09

Re: Verwendung von Post/Insert/Open /Close.. Daten nicht sic
 
Du msut die Tabellen wieder öffenen nachdem due die Transaction restartet hast (Die schliessen dann nämlich alle)

spoona 27. Mai 2005 12:47

Re: Verwendung von Post/Insert/Open /Close.. Daten nicht sic
 
Hallo,

danke.Jo dat geht jetzt. Habe nen Mastersource und hatte das nicht bedacht.
Vielen Dank. So habe noch ne andere Frage. Wie kann ich pruefen,ob der Datensatz gerade von jemand anderen bearbeitet wird?Also ich wollte ne fehlermeldung geben, wenn ich in insert oder edit -Mode gehe und der datensatz bereits von jemand anderen bearbeitet wird.

Danke gruss Spoona

spoona 27. Mai 2005 13:03

Re: Verwendung von Post/Insert/Open /Close.. Daten nicht sic
 
Hallo,

also ich packe jetzt alle postst und Commits in ein try except block
Dann sollte es damit doch vernuenftig abgefangen sein?!
Naja aber besser wuerde ich es schon finden, wenn man ne Meldung bekommt,nachdem man den Edit Button gedrueckt hat und nicht erst,wenn m,an speichern will. Vielleicht eine Idee?
Danke

Gruss Spoona

Albi 27. Mai 2005 13:28

Re: Verwendung von Post/Insert/Open /Close.. Daten nicht sic
 
Hallo,

wenn Du ne Meldung bekommen willst, wenn Du den Edit-Buttons drückst, dann kannst Du dir ne neue Table anlegen, wo alle DS vermerkt werden, die sich gerade in der Bearbeitung finden. Oder Du machst ein Update, wenn Du die Bearbeiten-Button drückst.

Das kannst Du doch auch von der Transaction steuern lassen. Hast Du in der Transaction auch den IdleTimer gesetzt, wenn nicht würde ich das noch maachen. Denn wenn mehrere Clients mit der DB arbeiten wollen und einer klickt auf bearbeiten und geht los, kann keiner mehr die Daten bearbeiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz