PDA

Ver la Versión Completa : controlar concurrencia en TDataSetProvider


_CALI
24-04-2011, 22:11:19
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
:)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.