![]() |
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:
Ist hier vielleicht etwas, was ich grundlegend falsch mache?
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 Vielen Dank fuer Eure Hilfe Gruss Spoona [edit=MrSpock]Code Tags eingefügt. Mfg, MrSpock[/edit] |
Re: Verwendung von Post/Insert/Open /Close.. Daten nicht sic
Du must die Transaktion neustarten
Also
Delphi-Quellcode:
IBTransaction.Close;
IBTransaction.Open; |
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! |
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 |
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 |
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 |
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)
|
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 |
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 |
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. |
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