Page 1 of 1

Intentando de nuevo el uso de SQL - Solucionado

PostPosted: Thu Oct 15, 2020 5:06 pm
by miarcod
Hola de nuevo,

Debido a los problemas que me estoy encontrando en el uso de fichero dbf con indices cdx estoy volviendo a valorar el paso a sql. El caso es que dado que la aplicación es muy grande me cuesta mucho el cambio pues la lógica de acceso a los datos es distinta.
Ahora tengo la oportunidad de crear un nuevo módulo de gestión de tickets independiente que ya tengo programado con dbf/cdx pero estoy valorando la posibilidad de hacer la migración a sql con mariadb empezando por este módulo.
La pregunta es la siguiente

¿Existe algun problema con mezclar codigo con sql y con dbf? Los datos de los clientes estarían en dbf pero los datos de los tickets estarían en sql. No puedo pasar los clientes a sql porque el resto de los módulos deberían seguir trabajando con dbf.

Otro problema que al que no encuentro solución, es como abordo el tema de la concurrencia. Dado que el sistema muestra los tickets pendientes de gestion podría darse el caso de que un usuario iniciase la gestión de un ticket y otro usuario desde otro terminal intentase hacer lo mismo, con dbf/cdx lo tengo facil pues mientras el usuario accede al ticket lo bloqueo y el otro usuario no puede gestionarlo. He leido el tema de las transacciones pero si los dos usuarios acceden simultaneamente al mimso ticket el trabajo de uno de ellos es inutil.

¿Como se abordais la problematica de la concurrencia y el bloqueo de registros cuando estamos trabajando con sql?

Perdon por el rollazo y gracias de antemano.
Un saludo

Re: Intentando de nuevo el uso de SQL

PostPosted: Thu Oct 15, 2020 6:03 pm
by carlos vargas
investiga Transacciones.
y sobre sobre select ... for update ....
no hay problemas con manejar ambas dbf y sql.

salu2
carlos vargas

Re: Intentando de nuevo el uso de SQL

PostPosted: Fri Oct 16, 2020 1:12 am
by Armando
Hola:

Tienes un correo?

Saludos

Re: Intentando de nuevo el uso de SQL

PostPosted: Sat Oct 17, 2020 2:25 pm
by miarcod
Hola
mi correo es
miarcod@gmail.com
Un saludo

Re: Intentando de nuevo el uso de SQL

PostPosted: Sat Oct 17, 2020 7:15 pm
by Rick Lipkin
MS Access and MS Sql Server can use opportunistic locking .. Our Friend Rao has developed ADO Sql Wrappers that simplify the code below ...

Code: Select all  Expand view

oRsEmp := TOleAuto():New( "ADODB.Recordset" )
oRsEmp:CursorType     := 1        // opendkeyset
oRsEmp:CursorLocation := 3        // local cache
oRsEmp:LockType       := 3        // lockoportunistic

cSQL := "SELECT * from [Employees] Order by [Employee]"

TRY
   oRsEmp:Open(cSQL,oConnect )
CATCH oErr
   MsgInfo( "Error in Opening EMPLOYEES table" )
   RETURN(.F.)
END TRY

 


Simplified Sql Wrappers from Rao in your FW folder

source\function\AdoFuncs.prg

Rick Lipkin

Re: Intentando de nuevo el uso de SQL

PostPosted: Mon Nov 02, 2020 7:13 pm
by miarcod
Hola de nuevo
Acabo de probar el codigo

Code: Select all  Expand view
SELECT * from mi_tabla  WHERE id=25 FOR UPDATE


para cargar en un dialogo los datos que se quieren modificar. Hasta que el usuario libere este registro no se debería poder modificar.

Pero si desde otro terminal ejecuto la misma sentencia me deja hacerlo también.

¿Como hacer para evitar que un segundo usuario pueda acceder a la misma fila de la tabla en modo modificación?