FUNCTION DPMYSQLBD(cDb,cIp,cLogin,cPass,nPort,lError,lCreate,lAdd)
LOCAL oDb,oMySql,nAt
DEFAULT cIp :=oDp:cIp ,;
cLogin :=oDp:cLogin,;
cPass :=oDp:cPass ,;
nPort :=oDp:nPort ,;
cDb :=oDp:cDsnData,;
lError :=.T.,;
lCreate :=.F.,;
lAdd :=.F. // Agrega lista de Tablas ADD para Refrescar tiempo y reconectar
DEFAULT oDp:aDPMYSQLBD:={}
cIp :=ALLTRIM(cIp )
cLogin :=ALLTRIM(cLogin)
cPass :=ALLTRIM(cPass )
nAt :=ASCAN(oDp:aDPMYSQLBD,{|a,n| a[1]==cIp .AND. a[2]==cDb})
IF nAt>0
oDb:=oDp:aDPMYSQLBD[nAt,3]
ENDIF
/
cDb,cIp,cLogin,cPass,nPort,lError,lCreate,"MYSQLDB",GETPROCE()
// oMySql :=EJECUTAR("DPMYSQLSTART",cIp,cLogin,cPass,nPort,lError)
oMySql :=DPMYSQLSTART(cIp,cLogin,cPass,nPort,lError)
// IF oDp:nVersion<6
// oDp:oMySqlCon:=DPMYSQLSTART(cIp,cLogin,cPass,nPort,lError)
// ENDIF
IF oMySql=NIL
RETURN NIL
ENDIF
IF !oMySql:ExistDb(cDb) .AND. lCreate
//? "SERA CREADA BD EN SERVIDOR ",cDb,oMySql:cHost
oMySql:CreateDB(cDb)
ENDIF
IF !oMySql:ExistDb(cDb)
MensajeErr("Base de Datos "+cDb+" no Existe en Servidor: "+oMySql:cHost)
RETURN NIL
ENDIF
// jn 09/09/2016
// ? "my opendatabase ya no esta funcionando"
oDb:=TMSDataBase():New( oMySql, cDb, .t. )
IF lAdd
MYADD_DATABASE(oDb) // Reemplaza utilizar oDb:=MyOpenDataBase(cDb,.f.,oMySql) // Refresca las conexiones (usuarios Dormidos)// ? oMySql:ClassName(),"DPMYSQLBD",cDb
ENDIF
// oDb:=MyOpenDataBase(cDb,.f.,oMySql) // Refresca las conexiones (usuarios Dormidos)
// "my opendatabase ya no esta funcionando"
oDb:Use()
oDb:Select()
/*
IF !oDb:oConnect:lConnected
oDb:oConnect:ReConnect()
ENDIF
*/
AADD(oDp:aDPMYSQLBD,{cIp,cDb,oDb,oMySql})
RETURN oDb
FUNCTION DPMYSQLSTART(cIp,cLogin,cPass,nPort,lError)
LOCAL lHayError:=.F. ,oMySqlCon:=NIL,nAt,oDataBase
DEFAULT cIp :=oDp:cIp ,;
cLogin :=oDp:cLogin,;
cPass :=oDp:cPass ,;
nPort :=oDp:nPort ,;
lError:=.T.
DEFAULT oDp:aMySql:={}
cIp :=ALLTRIM(cIp )
cLogin :=ALLTRIM(cLogin)
cPass :=ALLTRIM(cPass )
nAt:=ASCAN(oDp:aMySql,{|a,n| cIp=a[1] })
IF nAt>0
oMySqlCon:=oDp:aMySql[nAt,2]
// Cinco Minutos y Cierre la Conección, y vuelve a conectarse
IF ABS(SECONDS()-oDp:aMySql[nAt,3])>(60*60*5)
oMySqlCon:CLOSE()
oMySqlCon:=NIL
ARREDUCE(oDp:aMySql,nAt)
// AADD(oDp:aMySql,{cIp,oMySqlCon,SECONDS()})
ELSE
oDp:aMySql[nAt,3]:=SECONDS()
ENDIF
ENDIF
IF ValType(oMySqlCon)="O"
IF oMySqlCon:oError:GetErrNo()=2003 .AND. UPPE(cIp)="LOCALHOST"
lHayError:=.T.
MsgRun("Instalando Servicio","Por Favor Espere",{||WaitRun("MYSQL\DPMYSQLSTART.BAT",0)})
ENDIF
IF oMySqlCon:oError:GetErrNo()=2013
oMySqlCon:Close()
oMySqlCon:ReConnect()
ENDIF
IF !lHayError .AND. !oMySqlCon:lConnected
// oMySqlCon:ReConnect()
lHayError:=.T.
ENDIF
IF lHayError
ARREDUCE(oDp:aMySql,nAt)
RETURN NIL
ENDIF
RETURN oMySqlCon
ENDIF
CursorWait()
oMySqlCon:= TMSConnect():New() // Inicia el objeto Conexion
oMySqlCon:SetAutoError( lError )
__objAddData(oMySqlCon, "nSeconds" )
oSend(oMySqlCon, "nSeconds",0)
__objAddData(oMySqlCon, "nTimeMax" )
oSend(oMySqlCon, "nTimeMax",5*(60*60))
IF oMySqlCon:Connect( cIp, cLogin , cPass , NIL, IF( nPort=3306 , NIL , nPort ))
AADD(oDp:aMySql,{cIp,oMySqlCon,SECONDS()})
ELSE
oMySqlCon:Close()
MensajeErr( "No hay conexion con "+cIp )
RETURN NIL
ENDIF
RETURN oMySqlCon