Pregunta Mysql al Abrir la misma tabla desde 2 PC

Pregunta Mysql al Abrir la misma tabla desde 2 PC

Postby ruben Dario » Fri Jul 08, 2011 5:18 pm

Saludos a todos.

Tengo un problema, cuando ejecuta la aplicacion unico usurio trabaja bien, cuando tengo mas de un usuario me da un error.
Apenas me estoy iniciando con Mysql , no se si estoy equivocado , la conexion tiene que ser compartida o al abrir la tabla, alquien tiene un ejemplo.

Se problema de la conexion , es de configuracion de Mysql
Segun la prueba que hice cuando ejecuto el programa abro 15 tablas cuando se ejecuta desde 2 estaciones me genera el error. Si lo ejecuta uno solo no hay problema, hice una prueba y solo abro 3 tablas y si funciona. Que puede ser.


Este es el error.

Code: Select all  Expand view

Application
===========
   Path and name: P:\plawind\plastwin.Exe (32 bits)
   Size: 1,632,256 bytes
   Time from start: 0 hours 0 mins 0 secs
   Error occurred at: 08-07-2011, 12:13:36
   Error description: Error ADODB.Recordset/6  DISP_E_UNKNOWNNAME: OPEN
   Args:
     [   1] = C   Select * from kgrupo
     [   2] = C   driver={MySQL ODBC 5.1 Driver};database=basedatm;server=192.168.16.2;uid=root;pwd=colomp1234;Port=3306;option=35
     [   3] = N   1
     [   4] = N   3

Stack Calls
===========
   Called from: source\rtl\win32ole.prg => TOLEAUTO:OPEN(0)
   Called from: K:\PROY_H~1\PRG\adoxb.prg => ADOUSE(229)
   Called from: K:\PROY_H~1\PRG\pxpmenu.prg => MAIN(324)

System
======
   CPU type:               Intel(R) Pentium(R) 4 CPU 2.80GHz 2800 Mhz
   Hardware memory: 2040 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Compiler version: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6715)
   Windows version: 5.1, Build 2600 Service Pack 3

   Windows total applications running: 0

Variables in use
================
   Procedure     Type   Value
   ==========================
   TOLEAUTO:OPEN
     Param   1:    C    "Select * from kgrupo"
     Param   2:    C    "driver={MySQL ODBC 5.1 Driver};database=basedatm;server=192.168.16.2;uid=root;pwd=colomp1234;Port=3306;option=35"
     Param   3:    N    1
     Param   4:    N    3
     Local   1:    U    
     Local   2:    C    "ADODB.Recordset"
   ADOUSE
     Param   1:    C    "kgrupo"
     Param   2:    U    
     Local   1:    U    
     Local   2:    N    3
     Local   3:    N    3
     Local   4:    N    2
   MAIN
     Local   1:    U    
     Local   2:    U    
     Local   3:    U    
     Local   4:    U    
     Local   5:    O    Class: TCURSOR
     Local   6:    U    
     Local   7:    U    
     Local   8:    U    
     Local   9:    U    
     Local  10:    U    
     Local  11:    U    
     Local  12:    U    
     Local  13:    U    
     Local  14:    U    
     Local  15:    U    
     Local  16:    C    "CATALO\"
     Local  17:    C    "
DATNOM\"
     Local  18:    C    "
DATCAR\"
     Local  19:    C    "
DATPED\"
     Local  20:    C    "
DATCONT\"
     Local  21:    C    "
DATTESO\"
     Local  22:    C    "
DATCXPA\"
     Local  23:    C    "
DATINVE\"
     Local  24:    C    "
DATCOMP\"
     Local  25:    C    "
DATSALU\"
     Local  26:    C    "
PLARPV\"
     Local  27:    C    "
DATCOTI\"
     Local  28:    C    "
.\bitmaps\"
     Local  29:    C    "
C:\TRAXLS\"
     Local  30:    C    "
FOTOOPE\"
     Local  31:    C    "
FOTOPRO\"
     Local  32:    U    
     Local  33:    C    "
FOTONOM\"
     Local  34:    U    
     Local  35:    N    200
     Local  36:    N    600
     Local  37:    U    

Linked RDDs
===========
   DBF
   DBFFPT
   DBFBLOB
   DBFCDX
   DBFNTX

DataBases in use
================

  1: => B_PARSIST                          RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                        TagName

     Relations in use

Classes in use:
===============
     1 ERROR
     2 HASHENTRY
     3 HBCLASS
     4 HBOBJECT
     5 HBDEBUGGER
     6 HBDBMENU
     7 HBDBMENUITEM
     8 HBDBWINDOW
     9 GET
    10 HBGETLIST
    11 HBDBBROWSER
    12 HBDBCOLUMN
    13 TCALC
    14 TCURSOR
    15 TWINDOW
    16 TDIALOG
    17 TBRUSH
    18 TCONTROL
    19 TBITMAP
    20 TOLEAUTO
    21 TREG32

Memory Analysis
===============
      2304 Static variables

   Dynamic memory consume:
      Actual  Value:          0 bytes
      Highest Value:          0 bytes


Codigo de Conexion

Code: Select all  Expand view

   oADOConection[nConnection] := TOLEAUTO():New("ADODB.connection")
   oADOStream         := TOLEAUTO():New("ADODB.Stream") //   oADOErrDescription := TOLEAUTO():New("ADODB.Err")
   oADOIndex          := TOLEAUTO():New("ADOX.Index")
   oADOCatalog        := TOLEAUTO():New("ADOX.Catalog")
   oADOConection[nConnection]:CommandTimeOut    := 200
   oADOConection[nConnection]:ConnectionTimeOut := 10
   oADOConection[nConnection]:CursorLocation    := adUseClient
   oADOConection[nConnection]:Mode              := adModeShareDenyNone // adModeRead 1, adModeWrite 2, adModeReadWrite 3
   oADOConection[nConnection]:Open( StrConnection )
   oADOoSql           := TOLEAUTO():New("ADODB.command")
   oADOoSql:ActiveConnection(oADOConection[nConnection])  
 


Codigo para Abrir la tabla

Code: Select all  Expand view

         oRecordSet[nRecordSet]:CacheSize      := 50
         oRecordSet[nRecordSet]:CursorLocation := adUseClient
         if lShared = .t.
            oRecordSet[nRecordSet]:CursorType  := adOpenDynamic
            oRecordSet[nRecordSet]:LockType    := adLockOptimistic
         else
            oRecordSet[nRecordSet]:CursorType  := adOpenStatic
            oRecordSet[nRecordSet]:LockType    := adLockPessimistic
         endif
         oRecordSet[nRecordSet]:Open( "Select * from " + cDatabase, StrConnection, iif(lShared=.t.,3,1), 3 )
         oRecordSet[nRecordSet]:CacheSize      := 50
         oRecordSet[nRecordSet]:PageSize       := 50 // nuevo

 


Ruben Dario Gonzalez
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1064
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Pregunta Mysql al Abrir la misma tabla desde 2 PC

Postby sjingo » Sat Jul 09, 2011 2:34 pm

Rubén

La configuración que uso para los recordsets y no me ha dado problema trabajando con varios usuarios es la siguiente:

Code: Select all  Expand view
     oRsI:CursorLocation := adUseClient
    oRsI:LockType := adLockOptimistic
    oRsI:CursorType := adOpenKeyset
    oRsI:Source :=  "SELECT * FROM insumosact where cod_ac=" +str(ncod_act)
    oRsI:ActiveConnection(oCon)
 


Para obtener más detalles del error deberías usar TRY CATCH para capturar el error del controlador de Mysql, al momento de ejecutar cualquier comando que accese a la base de datos, por ejemplo al abrir debes hacer:

Code: Select all  Expand view
    TRY
        oRsI:Open()
    CATCH oError
        MsgStop( "No se pudo abrir La Tabla Seleccionada!", CAR_VERSION)
        ShowError(oError,ocon) //Aqui mostrará el error
        RETURN(.F.)
    END


Espero haber sido de ayuda

Un saludo
Marcelo Jingo
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Re: Pregunta Mysql al Abrir la misma tabla desde 2 PC

Postby ruben Dario » Sun Jul 10, 2011 6:20 pm

Cuantas tablas tienes Abiertas , en mi caso cargo 15 y cuando ejecuto desde otra estacion me da un error es al hacer open. oRecordSet[nRecordSet]:Open( "Select * from " + cDatabase, StrConnection, iif(lShared=.t.,3,1), 3 )
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1064
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Pregunta Mysql al Abrir la misma tabla desde 2 PC

Postby sjingo » Sun Jul 10, 2011 7:50 pm

Tengo abiertas 18 tablas. Insisto en que uses TRY CATCH al usar el open() para capturar el error que devuelve MySql, eso te podría a ayudar mucho.
Marcelo Jingo
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Re: Pregunta Mysql al Abrir la misma tabla desde 2 PC

Postby ruben Dario » Mon Jul 11, 2011 8:08 pm

Marcelo gracias por su respuesta.

Tu me podrias mostrar su conexion al motor y la conexion para el uso de la tabla incluyendo el codigo de error ShowError(), para compararlo
lo raro es cuando trabaja un solo usuario no hay problema , cuando se comparte es donde me genera el error. Manejo Mysql 5.5.13 cual version maneja usted,
Porque no me captura el error lo hago asi

Code: Select all  Expand view

       TRY
        oRecordSet[nRecordSet]:CursorLocation := adUseClient
        oRecordSet[nRecordSet]:LockType       := adLockOptimistic
        oRecordSet[nRecordSet]:CursorType     := adOpenKeyset
        oRecordSet[nRecordSet]:Source         :=  "SELECT * FROM loco" //+cDatabase
        oRecordSet[nRecordSet]:ActiveConnection(StrConnection)
        oRecordSet[nRecordSet]:Open()
       CATCH oError
          MsgStop( "No se pudo abrir La Tabla Seleccionada!" )
          ShowError(oError) //Aqui mostrará el error
          RETURN(.F.)
       END


Static Function ShowError(oError)
LOCAL oTmp
   FOR EACH oTmp IN  oRecordSet[nRecordSet]:oError  // se me queda aqui
       MsgInfo( "Descripción : "  + oError:Description      + CRLF + ;
                "Error Nativo : " + Str(oError:NativeError) + CRLF + ;
                "Número Error : " + Str(oError:Number)      + CRLF + ;
                "Origen : "       + oError:Source           + CRLF + ;
                "Estado SQL : "   + oError:SQLState  )
   NEXT


 
  Return Nil

 


Code: Select all  Expand view

Application
===========
   Path and name: K:\proy_harb\plastwin.Exe (32 bits)
   Size: 1,632,768 bytes
   Time from start: 0 hours 0 mins 22 secs
   Error occurred at: 11-07-2011, 15:02:12
   Error description: Error ADODB.Recordset/6  DISP_E_UNKNOWNNAME: OERROR
   Args:

Stack Calls
===========
   Called from: source\rtl\win32ole.prg => TOLEAUTO:OERROR(0)
   Called from: K:\PROY_H~1\PRG\adoxb.prg => SHOWERROR(371)
   Called from: K:\PROY_H~1\PRG\adoxb.prg => ADOUSE(249)
   Called from: K:\PROY_H~1\PRG\pxpmenu.prg => MAIN(316)

System
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1064
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Pregunta Mysql al Abrir la misma tabla desde 2 PC

Postby sysctrl2 » Tue Jul 12, 2011 7:06 pm

por eso desisti de ADO,
mejor opte por tdolphin y tmysql.
saludos.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 982
Joined: Mon Feb 05, 2007 7:15 pm

Re: Pregunta Mysql al Abrir la misma tabla desde 2 PC

Postby jbrita » Wed Jul 13, 2011 1:33 pm

Amigo yo lo0 hago asi.

conexion:
xConnStr:= "DRIVER={MYSQL ODBC 3.51 Driver}; SERVER="+aHost+"; DATABASE="+aDBName+";UID="+aUser+";PWD="+aPsw


MSGRUN( "Conectando comunicación con el SERVIDOR, espere...",NIL,{|| MyConeccion(xConnStr)} )



la funcion:
FUNCTION MyConeccion(xConnStr)
*-------------------------
Local oError,lRet:=.t.
Local cCtes,ccProv
oConexion := tOleAuto():New("ADODB.Connection")
oADOStream := TOLEAUTO():New("ADODB.Stream")
oADOCatalog:= TOLEAUTO():New("ADOX.Catalog")

oConexion:ConnectionString := xConnStr

TRY
oConexion:Open()
lError:=.T.

CATCH oError
lRet:=.f.
lError:=.f.

MsgStop("No Hay Conexion Con El Servidor","Operación Cancelada")
END

RETURN lRet

para abrir las tablas

cProv_Gen:=ADO_USE("CARTOLA_PROV","rut_prov",.T.)

Function ADO_Use( cTabla,cOrder,cLimit,cSelect)
DEFAULT cLimit:=.F.
DEFAULT cSelect:="*"

if cTabla = NIL
oRecordSet[nRecordSet]:Close()
oRecordSet[nRecordSet]:End()
else
AADD( aRecordSet, cTabla )
cRecordSet := cTabla
nRecordSet := len( aRecordSet )
If cLimit
oRecordSet[nRecordSet]:= TOleAuto():New( "ADODB.Recordset" )
oRecordSet[nRecordSet]:CursorLocation := adUseClient
oRecordSet[nRecordSet]:CursorType := adOpenStatic
oRecordSet[nRecordSet]:LockType := adLockPessimistic
oRecordSet[nRecordSet]:Open( "Select "+ cSelect +" from " + cTabla + " ORDER BY "+cOrder+" LIMIT 50" , oConexion,1, 3 )
Else
oRecordSet[nRecordSet]:= TOleAuto():New( "ADODB.Recordset" )
oRecordSet[nRecordSet]:CacheSize := 50
oRecordSet[nRecordSet]:CursorLocation := adUseClient
oRecordSet[nRecordSet]:CursorType := adOpenStatic
oRecordSet[nRecordSet]:LockType := adLockPessimistic
oRecordSet[nRecordSet]:Open( "Select "+ cSelect+" from " + cTabla + " ORDER BY "+cOrder , oConexion,1, 3 )

Endif
endif

return oRecordSet[nRecordSet]


Saludos
jbrita
 
Posts: 490
Joined: Mon Jan 16, 2006 3:42 pm

Re: Pregunta Mysql al Abrir la misma tabla desde 2 PC

Postby ruben Dario » Fri Jul 15, 2011 10:06 pm

Gracias Compañero Voy a probarlo,
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1064
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 77 guests