Flavio Basile 0 Posted November 24, 2020 (edited) Hi All. I'm using Firedac to connect my VCL Application with SQLServer. Since some weeks, I have strange Lock on tables. I have a FDQuery whit a simple "Select * from MyTable". I show the result with a DBGrid (a simple DBGrid). Another User opens a form with a FDQuery: "Select * from MyTable where ID = 1". The FDQuery is in Cached Update. When the user POST the data, the application of the user that has the first form whit the DBGrid, freeze. And also the user that has posted the data will be freezed. An important think is that the table on DB has 2 triggers that fire when the table has changed and that makes computation on field of the table. I have created a T-SQL function that gives to me information about lock: the dataset that are opened for that table are in the list. There is something that I need to do to prevent this error? Thanks, Flavio Edited November 24, 2020 by Flavio Basile Share this post Link to post
Attila Kovacs 631 Posted November 24, 2020 keywords: "fetchall" / "optimistic" Share this post Link to post
Guest Posted November 25, 2020 (edited) 17 hours ago, Flavio Basile said: Hi All. Another User opens a form with a FDQuery: "Select * from MyTable where ID = 1". The FDQuery is in Cached Update. When the user POST the data, the application of the user that has the first form whit the DBGrid, freeze. And also the Flavio Basic components or objects to use with FireDAC or any other similar: FDGUIxWaitCursor -- Use TFDGUIxWaitCursor to add the IFDGUIxWaitCursor interface implementation to your application. This implementation is mandatory for FireDAC applications. FDPhysXXXXXXXXDriverLink -- to access your DB internal command / appropriated for each DB FDConnection -- to define the string connection and others params FDTransaction -- preference 2 components = 1 for READ-ONLY (selects) and 1 for READ-WRITE (updates / deletes) for example! FDConnection.Transaction = FDTransactionREADONLY component = [ ReadCommitted ] to "see" the updates from another users! FDConnection.UpdateTransaction = FDTransactionREADWRITE component = [ ReadCommitted ] when you dont use any component/object for Transaction, you force the FireDAC to use the "internal" transaction components -- managed by FireDAC! when you use "your" TRANSACTION components, you are responsable by him! -- if you active, then, you deactive! (create/free/ etc...) Edited November 25, 2020 by Guest Share this post Link to post