Thread View: pl.comp.lang.delphi
5 messages
5 total messages
Started by baran_r
Fri, 03 Jun 2016 20:30
Blokowanie tabeli w trakcie edycji - zawieszony zapis zmian
Author: baran_r
Date: Fri, 03 Jun 2016 20:30
Date: Fri, 03 Jun 2016 20:30
26 lines
2170 bytes
2170 bytes
Witam Mam dane na serwerze MSSQL 2012, podpinam się za pośrednictwem komponentów ANYDAC, pobrane dane wyświetlam i edytuje w TDBEDIT-ach I mam problem z zapisem zmian. Jeżeli tabela jest otwarta przez jednego użytkownika to wszystko działa poprawnie natomiast jeżeli drugi użytkownik otworzy edytowaną tabelę i wyświetli jej zawartość zapis zaktualizowanych danych jest zawieszony do czasu aż drugi użytkownik zamknie tabelę lub dokona operacji edycji lub dodania rekordu. Do edycji pobieram dane do DBEDIT i po zakończeniu edycji w ramach transakcji zapisuje. W skrócie wygląda to tak DM.prac.Active :=True; dm.ADConnection1.StartTransaction; DM.prac.CachedUpdates := true; DM.prac.edit; ...edytuje dane...... DM.prac.post; DM.prac.CommitUpdates; DM.ADConnection1.Commit; DM.prac.CachedUpdates := false; Co można zrobić aby zlikwidować ten problem ?
Re: Blokowanie tabeli w trakcie edycji - zawieszony zapis zmian
Author: J-23
Date: Sat, 04 Jun 2016 22:07
Date: Sat, 04 Jun 2016 22:07
34 lines
2187 bytes
2187 bytes
W dniu 03.06.2016 o 22:30, baran_r@poczta.onet.pl pisze: > Witam > > > Mam dane na serwerze MSSQL 2012, podpinam się za pośrednictwem komponentów ANYDAC, pobrane dane wyświetlam i edytuje w TDBEDIT-ach > > I mam problem z zapisem zmian. > > Jeżeli tabela jest otwarta przez jednego użytkownika to wszystko działa poprawnie > natomiast jeżeli drugi użytkownik otworzy edytowaną tabelę i wyświetli jej zawartość zapis zaktualizowanych danych jest zawieszony do czasu aż drugi użytkownik zamknie tabelę lub dokona operacji edycji lub dodania rekordu. > > Do edycji pobieram dane do DBEDIT i po zakończeniu edycji w ramach transakcji zapisuje. > > W skrócie wygląda to tak > DM.prac.Active :=True; > dm.ADConnection1.StartTransaction; > DM.prac.CachedUpdates := true; > DM.prac.edit; > > ...edytuje dane...... > DM.prac.post; > DM.prac.CommitUpdates; > DM.ADConnection1.Commit; > DM.prac.CachedUpdates := false; > > > Co można zrobić aby zlikwidować ten problem ? > Co dla Ciebie stanowi problem? Bo nie do końca to opisałeś. Baza zachowuje się odpowiednio czeka na zablokowany rekord aż zostanie zwolniony. Tyle :) Pozdrawiam
Re: Blokowanie tabeli w trakcie edycji - zawieszony zapis zmian
Author: arivald
Date: Sun, 05 Jun 2016 05:47
Date: Sun, 05 Jun 2016 05:47
43 lines
1981 bytes
1981 bytes
W dniu 2016-06-03 o 22:30, baran_r@poczta.onet.pl pisze: > Witam > > > Mam dane na serwerze MSSQL 2012, podpinam się za pośrednictwem komponentów ANYDAC, pobrane dane wyświetlam i edytuje w TDBEDIT-ach > > I mam problem z zapisem zmian. > > Jeżeli tabela jest otwarta przez jednego użytkownika to wszystko działa poprawnie > natomiast jeżeli drugi użytkownik otworzy edytowaną tabelę i wyświetli jej zawartość > > Do edycji pobieram dane do DBEDIT i po zakończeniu edycji w ramach transakcji zapisuje. > > W skrócie wygląda to tak > DM.prac.Active :=True; > dm.ADConnection1.StartTransaction; Tą linię wywal > DM.prac.CachedUpdates := true; > DM.prac.edit; > > ...edytuje dane...... > DM.prac.post; I tu ją dodaj: dm.ADConnection1.StartTransaction; > DM.prac.CommitUpdates; > DM.ADConnection1.Commit; > DM.prac.CachedUpdates := false; To też wywal. CachedUpdates powinno być włączone cały czas, jak używasz. Najlepiej jeszcze przed otwarciem datasetu. > > > Co można zrobić aby zlikwidować ten problem ? > Nauczyć się co to sa cached updates, i jak działają transakcje. -- Arivald
Re: Blokowanie tabeli w trakcie edycji - zawieszony zapis zmian
Author: wloochacz
Date: Mon, 06 Jun 2016 07:19
Date: Mon, 06 Jun 2016 07:19
12 lines
1468 bytes
1468 bytes
W dniu 2016-06-03 o 22:30, baran_r@poczta.onet.pl pisze: > Co można zrobić aby zlikwidować ten problem ? Już Ci koledzy napisali, co. Dodatkowo, możesz (a wręcz powinieneś) przestawić bazę danych pod izolację transkacji _Snapshot_. https://msdn.microsoft.com/pl-pl/library/tcbchxcb(v=vs.110).aspx Jak to włączysz, to pewnie problem zniknie natychmiast. Ale tak czy inaczej, źle używasz Cached Udpates. -- wloochacz
Re: Blokowanie tabeli w trakcie edycji - zawieszony zapis zmian
Author: J-23
Date: Mon, 06 Jun 2016 20:41
Date: Mon, 06 Jun 2016 20:41
16 lines
1647 bytes
1647 bytes
W dniu 06.06.2016 o 09:19, wloochacz pisze: > W dniu 2016-06-03 o 22:30, baran_r@poczta.onet.pl pisze: >> Co można zrobić aby zlikwidować ten problem ? > Już Ci koledzy napisali, co. > Dodatkowo, możesz (a wręcz powinieneś) przestawić bazę danych pod > izolację transkacji _Snapshot_. > https://msdn.microsoft.com/pl-pl/library/tcbchxcb(v=vs.110).aspx > > Jak to włączysz, to pewnie problem zniknie natychmiast. > Ale tak czy inaczej, źle używasz Cached Udpates. > źle używa bo nie rozumie transakcji. Także na początek lektura pt. "Transakcje baz danych" tak do poduszki Pozdrawiam
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads