FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ADO MYSQL se cae con 2 usuarios modificando mismo registro
Posts: 185
Joined: Thu Nov 17, 2005 12:48 AM
ADO MYSQL se cae con 2 usuarios modificando mismo registro
Posted: Thu Oct 13, 2011 05:39 PM

Ayuda Estimados,

Tengo una aplicacion con ADO y MySql todo va bién hasta que 2 usuarios modifican el mismo registro del recordset, y ahi el programa se cae en el usuario que grabó al final.
GRACIAS de antemano por cualquier ayuda.

estoy definiedo el bloqueo como sale a continuación:

oCmd := TOLEAUTO():New("adodb.command")
oCmd :ActiveConnection(oCon)
oRS := TOleAuto():New("adodb.recordset")
oRS :CursorLocation := adUseClient
oRS :LockType := adLockOptimistic <------------ TIPO DE BLOQUEO
oRS :CursorType := adOpenKeyset
oRs:ActiveConnection(oCon)
oRs:Source := "SELECT * FROM clientes ORDER BY NomCuenta "

Luis Alfonso Fuentes Guerrero

FWH 11.06 xHarbour 1.2.1 BCC55 WorkShop
Posts: 337
Joined: Fri Oct 07, 2005 02:44 PM
Re: ADO MYSQL se cae con 2 usuarios modificando mismo registro
Posted: Thu Oct 13, 2011 06:21 PM

Luis,

¿ Que mensaje te muestra el ado ?, te comento que yo tengo sistemas con ado y mysql con hasta 20 usuarios concurrentes sin problemas.

Atte.,

Lautaro Moreira

Hola,

Soy un Contador que por necesidad aprendio a programar y se quedo programando.
Posts: 185
Joined: Thu Nov 17, 2005 12:48 AM
Re: ADO MYSQL se cae con 2 usuarios modificando mismo registro
Posted: Thu Oct 13, 2011 06:45 PM
Lautaro,
(mi correo:luisalfonsofuentesg@gmail.com para una asesoria $$ ?)
Este es el error:

Application
===========
Path and name: C:\SISTEMAS\TARGET\SISGES.Exe (32 bits)
Size: 2,473,984 bytes
Time from start: 0 hours 4 mins 52 secs
Error occurred at: 13/10/2011, 15:37:41
Error description: Error adodb.recordset/6 DISP_E_UNKNOWNNAME: MOVE
Args:
[ 1] = N 0

Stack Calls
===========
Called from: source\rtl\win32ole.prg => TOLEAUTO:MOVE(0)
Called from: C:\SISTEMAS\TARGET\mancli.prg => SKIPPER(167)
Called from: C:\SISTEMAS\TARGET\mancli.prg => (b)MANCLI(98)
Called from: .\source\classes\WBROWSE.PRG => TWBROWSE:SKIP(1733)
Called from: .\source\classes\WBROWSE.PRG => TWBROWSE:PAINT(757)
Called from: .\source\classes\WBROWSE.PRG => TWBROWSE:DISPLAY(2277)
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT(1630)
Called from: .\source\classes\WBROWSE.PRG => TWBROWSE:HANDLEEVENT(1656)
Called from: .\source\classes\WINDOW.PRG => _FWH(3443)
Called from: => DIALOGBOXINDIRECT(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(277)
Called from: .\source\function\ERRSYSW.PRG => ERRORDIALOG(394)
Called from: .\source\function\ERRSYSW.PRG => (b)ERRORSYS(31)
Called from: source\rtl\win32ole.prg => TOLEAUTO:_SORT(0)
Called from: C:\SISTEMAS\TARGET\mancli.prg => EDITA_MAR(242)
Called from: C:\SISTEMAS\TARGET\mancli.prg => (b)MANCLI(87)
Called from: .\source\classes\WINDOW.PRG => TWINDOW:LDBLCLICK(1902)
Called from: .\source\classes\CONTROL.PRG => TCONTROL:LDBLCLICK(1685)
Called from: .\source\classes\WBROWSE.PRG => TWBROWSE:LDBLCLICK(1114)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT(1670)
Called from: .\source\classes\WBROWSE.PRG => TWBROWSE:HANDLEEVENT(1656)
Called from: .\source\classes\WINDOW.PRG => _FWH(3443)
Called from: => DIALOGBOX(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(277)
Called from: C:\SISTEMAS\TARGET\mancli.prg => MANCLI(130)
Called from: C:\SISTEMAS\TARGET\sisges.prg => (b)MAIN(198)
Called from: .\source\classes\TOOLBAR.PRG => TTOOLBAR:COMMAND(219)
Called from: .\source\classes\WINDOW.PRG => TWINDOW:COMMAND(1051)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: .\source\classes\WINDOW.PRG => _FWH(3443)
Called from: => WINRUN(0)
Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE(995)
Called from: C:\SISTEMAS\TARGET\sisges.prg => MAIN(262)
Called from: C:\SISTEMAS\TARGET\sisges.prg => INICIO(107)

este es el codigo de la rutina de grabación:
Code (fw): Select all Collapse
    
        IF lNuevo
             oRS:AddNew()
        ENDIF

        nBookMark:=oRs:BookMark                                            
        oRS:Fields("nomcuenta"):value     := cliente
        oRS:Fields("nomcontacto"):value  := contacto
        oRS:Fields("cargo"):value             := cargo
        oRS:Fields("email1email2"):value := email1_2
        oRS:Fields("telefono"):value        := telefono
        oRS:Fields("direccion"):value       := direccion
        oRS:Fields("pais"):value               := pais
        oRS:Fields("ciudad"):value           := ciudad
        oRS:Fields("asignado_a"):value    := asignadoa
        oRS:Sort:="nomcuenta"

        oRs:BookMark:=nBookMark                                            
                                                          

        oRS:Update()
Luis Alfonso Fuentes Guerrero

FWH 11.06 xHarbour 1.2.1 BCC55 WorkShop
Posts: 337
Joined: Fri Oct 07, 2005 02:44 PM
Re: ADO MYSQL se cae con 2 usuarios modificando mismo registro
Posted: Thu Oct 13, 2011 08:27 PM
Luis

El
Code (fw): Select all Collapse
   ... 
   oRs:Update()
   ...


muevelo a antes de
Code (fw): Select all Collapse
  ...
  oRs:Sort:="nomcuenta"
  ...


No puedes mover la posicion del recordset antes de hacer el update, ya que el move implica update y luego haces el update nuevamente y ahi salta el error.

Saludos,

Lautaro Moreira
Hola,

Soy un Contador que por necesidad aprendio a programar y se quedo programando.
Posts: 185
Joined: Thu Nov 17, 2005 12:48 AM
Re: ADO MYSQL se cae con 2 usuarios modificando mismo registro
Posted: Thu Oct 13, 2011 08:54 PM
GRacias Lautaro, pero se me cae igual:(


Code (fw): Select all Collapse
IF lNuevo
     oRS:AddNew()
ENDIF

nBookMark:=oRs:BookMark                        
oRS:Fields("nomcuenta"):value       := cliente
oRS:Fields("nomcontacto"):value     := contacto
oRS:Fields("cargo"):value           := cargo
oRS:Fields("email1email2"):value    := email1_2
oRS:Fields("telefono"):value        := telefono
oRS:Fields("direccion"):value     := direccion
oRS:Fields("pais"):value          := pais
oRS:Fields("ciudad"):value        := ciudad
oRS:Fields("asignado_a"):value    := asignadoa
oRS:Update()
oRS:Sort:="nomcuenta"

oRs:BookMark:=nBookMark
Luis Alfonso Fuentes Guerrero

FWH 11.06 xHarbour 1.2.1 BCC55 WorkShop
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: ADO MYSQL se cae con 2 usuarios modificando mismo registro
Posted: Fri Oct 14, 2011 12:58 PM

Lafug.

Local oErrorAdo

...
...
...
...
...
...

       TRY
           oRs:Update()
       CATCH oErrorAdo
             MsgAlert(oErrorAdo)
       END

Con esto capturas el error desde ADO y puedes ver que es lo que realmente esta sucediendo.
Seria bueno que copiaras aqui la estructura de la tabla completa, y supongo que lo que estas grabando pertenece solo a una tabla ?

Saludos

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650

Continue the discussion