Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   controlar concurrencia en TDataSetProvider (https://www.clubdelphi.com/foros/showthread.php?t=73457)

_CALI 24-04-2011 22:11:19

controlar concurrencia en TDataSetProvider
 
tengo una duda
hola amigos, gracias como siempre por sus consejos...

mi duda es la siguiente:

tengo un TClientDataSet asociado a un TDataSetProvider, digamos q ambos estan en un formulario

ejecuto dos veces el formulario, cuando cambio un valor del registro de un formuario y actualizo con ApplyUpdates(0) y luego trato de hacer lo mismo en el otro formulario me da un error de que otro usuario cambioe el registro..




q solucion podria encontrar a esto? tratandose q debo tarbajar con TDataSet y TDataSetProvider?


Muchas gracias

Ñuño Martínez 27-04-2011 11:24:47

Hablo por hablar: ¿Usas transacciones? Quizá sean una solución.

_CALI 03-05-2011 09:45:53

una solucion...
 
:)bueno investigue un poco y me funciona lo siguiente

la propiedad UpdateMode del datasetprovider controla la concurrecia
la puse como upWhereKeyOnly

añadi los campos persistentes al dataset asociado al proveedor
y en cada campo puse la (bandera) providerflags a pfInKey solo al campo clave y a los demas como pfUpdate (es correcta esta solucion?)

la verdad es q no quiero trabajar a ciegas, como hago para ver las sentencias generadas por el proveeedor?

uso D2010 en versiones anteriores tenia el SQLMonitor

arrayman 30-05-2011 23:02:10

creo recordar que cuando salieron las versiones turbo delphi la gratuita no
traia tampoco el sqlmonitor, no obstante solo estaba ausente de la paleta
de componentes, asi que si lo creabas en tiempo de ejecucion si que podias
usarlo, quiza tu version de d2010 tampoco lo lleve, (la verdad me cuesta
creer que lo hayan quitado)

no se es un decir.

por otro lado lo que consigues con con esos cambios es modificar la lista de campos que
se incluyen en la sentencia, es decir solo la primary key , con todas sus consecuencias.
es decir se genera un update machando todos los campos que otro usuario pudiera a ver cambiado,
aunque si mal no recuerdo solo se incluyen los que han sufrido cambios.


La franja horaria es GMT +2. Ahora son las 23:27:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi