Si no tienes inconveniente, copio aqui el contenido de lo que has compartido, para que no se pierda. gracias
Code: Select all | Expand
/*---------------------------------------------------- |
* Función: Programa Principal del serverSQL
-----------------------------------------------------*/
#Include "FiveWin.Ch"
#Include "BtnGet.Ch"
#Include "Image.Ch"
#Include "SSay.Ch"
#include "error.ch"
#Include "SQLRDD.Ch"
#Include "MySQL.Ch"
#Define ST_ZOOMED 2
#Define CLR_WINDOW 16
#define NTRIM(n) ( LTrim( Str( n ) ) )
#define SIZE_INIT NIL
#define SIZE_RESTORED 0
#define SIZE_MINIMIZED 1
#define SIZE_MAXIMIZED 2
REQUEST DbfCDX, DbfFpt
REQUEST SQLRDD, SR_MYSQL, SR_ODBC, SR_PGS
EXTERNAL OrdKeyCount, OrdKeyGoTo, OrdKeyNo
EXTERNAL DBPACK, DBZAP
static oTray, oIcon, nSizeType
//--- Rutina Principal ------------------------------------------------------
*--------------------------------------------------------------*
FUNCTION SERVERPyME(_SETINI, _TIPC, _COPIAPEN, _POS, _SQUEMA)
*--------------------------------------------------------------*
PUBLIC hRec, dDate, cIni, cDir, cPrt, oBtn, cSnds, cNomemp, cNumempre:=0, PcName:=Space(50), nEmpresa:=0, VtaMayoreo:= .F., _CAMBIOURGENTE:=.F.
PUBLIC oBar, oIcon, nClr, cFntW, oFont, lMod:=.F., aDbfs, _VER_POS:=" VER: 5.3u 04 de Marzo del 2013", _VERSION:="5.3u", _ULTVERSION:="5.3u"
PUBLIC cConn, cDriver, cTipocom:=_TIPC, oRlj
PUBLIC oBmp, cBmp, aEje, oEje, cUAct, lInit
PUBLIC TRA_NUMTRA:=0, ODTRA, ODTRD
// datos para el server
PUBLIC aData , nMain, nData, oItemMian, oBtnsMain, cShema, lEventoActivo:=.F., oTimer, lFinalizaAplicacion:= .F., cTitulo:=""
PUBLIC cUTem, cData, cPar:="/SQL/L", SetINI:=".\", __ACTVER:="", CDXRDD:="DBFCDX", P_oMSG:=NIL, P_ELMSG:="", P_oPREV, oWseguimiento
PUBLIC cMain, cDBMS, cHost:= "LAN", cUsID, cPsID, oConn, oConx ,oConempx, cIPExternal:="", IPRemoteServer:="", cUserdir:="", oPosCon:=NIL
// Variables para la conexion a la Base de Datos
PUBLIC nCnxPrs,nCnxRmt, nCnxCrp
PUBLIC aCnxRmt,nCnx
PUBLIC xCnxLAN,nCnxCrp
PUBLIC n_Err, lTdsEmp:=.F.
PUBLIC _SOLOLOCAL:=.F., OTIME, nPOSLIN:=0
PUBLIC cFormaPagoObligatoria:="NO", USR_PUEDOAUTORIZAR:=.F., aAlumnos:={}
** OBJETOS DE TABLAS
PUBLIC oDmsgs
** COLOR DE LOS BROWSES
PUBLIC nClrBlack:=nRGB( 000,000,000 ) //CLR_BLACK
PUBLIC nClrWhite:=nRGB( 255,255,255 ) //CLR_WHITE
PUBLIC nClrYello:=nRGB( 255,255,000 ) //CLR_YELLOW
PUBLIC nClrGreen:=nRGB( 133,150,086 ) //CLR_NGREEN
PUBLIC nClrVerde:=nRGB( 128, 255, 128 ) //NCOLOR4
PUBLIC nClrRojo :=nRGB( 255, 98, 098 ) //NCOLOR7
PUBLIC nClrAzAma:=nRGB( 128, 128, 255 ) //NCOLOR9
PUBLIC nClrAzAgu:=nRGB( 064, 200, 200 ) //NCOLOR10
PUBLIC nClrCafeC:=nRGB( 180, 120, 120 ) //NCOLOR11
PUBLIC nClrVerdA:=nRGB( 214, 250, 137 ) //
** COLOR DE LOS BROWSES
PUBLIC CLR_PINK:= nRGB( 255, 128, 128 )
PUBLIC CLR_NBLUE:=nRGB( 128, 128, 192 )
PUBLIC CLR_TEST:=nRGB(89,117,191)//(109,189,91)//(225,216,96)//(156,192,129)//(185,136,182)//( 124, 197, 173 ) //( 125, 169, 196 )
PUBLIC CLR_2TEST:=nRGB(112,158,154)//(118,163,158)
PUBLIC CLR_3TEST:=nRGB(224,207,141)
PUBLIC CLR_4TEST:=nRGB(197,131,90)
PUBLIC CLR_5TEST:=nRGB(130,162,125)
PUBLIC CLR_NBROWN:=nRGB(177,140,99)//( 130, 99, 053 )
PUBLIC CLR_NGREEN:=nRGB(133,150,86)//( 133,150,014 )
PUBLIC CLR_NGRAY:=nRGB( 160, 160, 160 )
PUBLIC CLR_NPINK:=nRGB( 187,0,94 )
PUBLIC CLR_NTERRA:=nRGB( 171,35,16 )
PUBLIC CLR_NMBLUE:=nRGB( 0,0,159 )
PUBLIC CLR_NYELLOW:=nRGB( 255,255,0 )
PUBLIC CLR_BLUEPURE:=nRGB( 000,000,128 )
* Para el manejo de colores
PUBLIC _CGetRFore := RGB( 000, 000, 000 ) && NEGRO Texto de Get de Lectura
PUBLIC _CGetRBack := RGB( 192, 255, 255 ) && CYAN Fondo de Get de Lectura
PUBLIC _CGetSFore := RGB( 255, 255, 000 ) && AMARILLO Texto de Get de escritura ( Read Only )
PUBLIC _CGetSBack := RGB( 128, 128, 128 ) && GRIS Fondo de Get de escritura ( Read Only )
PUBLIC _CSayFore := RGB( 255, 000, 000 ) && ROJO Texto de Say sin caja de captura
PUBLIC _CSayBack := RGB( 192, 192, 192 ) && BLANCO OPACO Fondo de Say sin caja de captura
PUBLIC _CComboFore:= RGB( 000, 000, 128 ) && AZUL Frente del ComboBox
PUBLIC _CComboBack:= RGB( 192, 192, 192 ) && BLANCO OPACO Fondo del ComboBox
PUBLIC _CSayFore := RGB( 255, 000, 000 ) && ROJO Texto de Say sin caja de captura
PUBLIC _CSayBack := RGB( 214, 250, 137 ) && VERDE Fondo de Say sin caja de captura
PUBLIC _CComboFore:= RGB( 000, 000, 128 ) && CYAN CLARO Frente del ComboBox
PUBLIC _CCheckFore:= RGB( 000, 000, 255 ) && AZUL OBSCURO Frente del ComboBox
PUBLIC _CComboBack:= RGB( 143, 184, 224 ) && AZUL CLARO Fondo del ComboBox
PUBLIC _CSayBFore := RGB( 000, 000, 255 ) && BLANCO Texto del say
PUBLIC nColor1, nColor2,nColor3, nColor4,nColor5, nColor6, nColor7, nColor8, nColor9, nColor10, nColor11, nGCLR05, nColor12
nGCLR05:= nRGB( 223, 207, 207) //nRGB( 080, 205, 216)
nColor1 := nRGB( 255, 148, 96) // naranja
nColor2 := nRGB( 255, 255, 128) // amarillo p lido
nColor3 := nRGB( 255, 128, 128) // caqui
nColor4 := nRGB( 128, 255, 128) // verde palido
nColor5 := nRGB( 128, 255, 255) // azul palido
nColor6 := nRGB( 255, 128, 255) // lila
nColor7 := nRGB( 255, 98, 098) // rojo p lido
nColor8 := nRGB( 200, 200, 170) // color arena
nColor9 := nRGB( 128, 128, 255) // azul amanecer
nColor10:= nRGB( 184, 245, 245) // azul aguamarina
nColor11:= nRGB( 180, 120, 120) // cafe muy claro
nColor12:= nRGB( 255, 255, 210) // CREMA
PUBLIC nClr000:= nRGB( 000, 000, 000) // NEGRO
PUBLIC nClrBack:=nRGB( 143, 184, 224) // AZUL
PUBLIC nClrGet:= nRGB( 208, 225, 242) // AZUL CLARO
PUBLIC IPWEB:="127.0.0.1"
PUBLIC Database:="miDB"
PUBLIC Host:="localhost"
PUBLIC Username:="Miusuario"
PUBLIC Password:="MiPassword"
PUBLIC cMIempresa:="MI EMPRESA SA DE CV"
SET DELETED ON
RddSetDefault("SQLRDD")
cOldD:=""
aMain:={}
aData:={}
lSQL:=.T.
SET 3DLOOK ON
SET DELETED ON
SET SOFTSEEK OFF
SET EPOCH TO 1950
SET DATE FORMAT "dd/mm/yyyy"
SysRefresh()
// VERIFICA SI LA DIRECCION DEL SERVER CENTRAL ES IGUAL A LA IP DEL SERVER
RddSetDefault("SQLRDD")
nConn := SR_AddConnection(CONNECT_MYSQL,"MYSQL=127.0.0.1;UID=Miusuario;PWD=MiPassword;DTB=miDB")
nMain := nConn
oConx := nConn
SR_SetActiveConnection(nMain)
IF nMain <= 0
// FIN DE LA NUEVA RUTINA 14 DE JUNIO DEL 2012
IF nMain <= 0
MsgStop("00- No se puede establecer la conexión a " + cMain + CRLF + ;
"NO existe la base de datos MIDB " + CRLF + ;
"La clave o la password son incorrectas " ,"Error...")
PostQuitMessage(0)
RETURN -5
ENDIF
ENDIF
IF ! SR_EXISTTABLE("PRINCIPAL")
MSGSTOP("LA BASE DE DATOS ESTA INCOMPLETA " + CRLF + ;
"NO PUEDO DAR ACCESO A APLICACION ","ERROR...")
RETURN -6
ENDIF
SR_SetActiveConnection(nMain)
USE ("PRINCIPAL") ALIAS Control SHARED NEW VIA "SQLRDD"
IF Control->(LastRec()) = 0
MSGSTOP("LA BASE DE DATOS ESTA INCOMPLETA " + CRLF + ;
"NO PUEDO DAR ACCESO A APLICACION","ERROR...")
PostQuitMessage(0)
RETURN .F.
ENDIF
Control->(DBGOTOP())
LOCATE FOR ALLTRIM(Control->miempresa ) = cMIempresa
IF ! Control->(FOUND())
DBCLOSEAREA("Control")
MSGSTOP("SER003 NO Existe el Registro de miempresa","Error...")
PostQuitMessage(0)
RETURN -3
ENDIF
cShema :=Alltrim(Control->Mishema)
nData := SR_AddConnection(CONNECT_MYSQL,"MYSQL=127.0.0.1;UID=Miusuario;PWD=MiPassword;DTB=" +cShema)
cData:=cShema
DBCLOSEAREA("Control")
SR_EndConnection(nMain)
IF nData < 0
SR_END()
MsgAlert("02- No se puede establecer la conexión con "+cShema,"Verifique!")
PostQuitMessage(0)
RETURN -4
ENDIF
SR_SetActiveConnection(nData)
Open_Tabla("Parametros")
cTitulo:="ServerSQL " + _VERSION + " trabajando para " + Params->MiEmpresa
cNomemp:=ALLTRIM(Params->Nombre)
DBCLOSEAREA("Params")
SR_EndConnection(nData)
nData:= 0
SR_END()
DEFINE ICON oAppIcon RESOURCE "AppIcon"
DEFINE ICON oIcon FILE "..\fwh1204\icons\fivewin.ICO"
DEFINE ICON oIcon1 FILE "..\fwh1204\icons\folder.ico"
DEFINE FONT oFntBar NAME "Tahoma" SIZE 0,-11
DEFINE WINDOW oWnd TITLE "ServerSQL" ICON oAppIcon
SET MESSAGE OF oWnd TO "© 2009-2013"+cNInc 2007 COLOR CLR_BLACK,nColor5
oWnd:oMsgBar:KeybOn()
oWnd:oMsgBar:DateOn()
DEFINE TIMER oTimer OF oWnd INTERVAL 60000 ACTION CHECA_EVENTOS()
ACTIVATE TIMER oTimer
cHora:=time()
oWnd:oMsgBar:Refresh()
oWnd:cTitle(cTitulo)
ACTIVATE WINDOW oWnd ;
ON INIT (oTray := TTrayIcon():New( oWnd, oIcon, "ServerPyME...",;
{ || (oWnd:Show(), oWnd:Maximize(), oWnd:SetFocus()) },;
{ | nRow, nCol | MenuTray( nRow, nCol, @oTray, @oWnd ) } ), CHECA_EVENTOS() ) ;
VALID VALIDA_SALIDA() ;
ON RIGHT CLICK oTray:SetIcon( oIcon1, "Another" ) ;
ON RESIZE SHOWRESIZETYPE( nSizeType )
IF ! EMPTY(oTray)
oTray:End()
oTray:=NIL
ENDIF
PostQuitMessage(0)
__QUIT()
RETURN (NIL)
* --------------------------------------------------------------------------*
FUNCTION VALIDA_SALIDA()
* --------------------------------------------------------------------------*
LOCAL RET:=.F.
IF lEventoActivo = .T.
lFinalizaAplicacion:= .T.
RET:=.F.
ELSE
IF ! EMPTY(oTimer)
oTimer:END()
oTimer:=NIL
ENDIF
IF ! EMPTY(oTray)
oTray:End()
oTray:=NIL
ENDIF
lFinalizaAplicacion:= .T.
RET:=.T.
ENDIF
RETURN RET
* --------------------------------------------------------------------------*
FUNCTION CHECA_EVENTOS()
* --------------------------------------------------------------------------*
oWnd:setmsg("inicio a las " + cHora + " timer a las " + time())
MSGINFO("inicio a las " + cHora + " timer a las " + time())
IF lEventoActivo = .T.
RETURN
ENDIF
lEventoActivo:=.T.
IF nData <= 0
nMain := SR_AddConnection(CONNECT_MYSQL,"MYSQL=127.0.0.1;UID=Miusuario;PWD=MiPassword;DTB=miDB")
nData := SR_AddConnection(CONNECT_MYSQL,"MYSQL=127.0.0.1;UID=Miusuario;PWD=MiPassword;DTB=" +cShema )
ENDIF
SR_SetActiveConnection(nData)
oDprg:=Open_Tabla("Programa")
cFiltro:="A.`PR_FRECUENCIA` = 'D' "
SELECT(oDprg)
SR_SetFilter(cFiltro)
(oDprg)->(DBGOTOP())
DO WHILE PR_FRECUENCIA = 'D'
nHora := VAL(SUBSTR(TIME(),1,2))
IF (oDprg)->PR_ULTFECHA < DATE()
IF (oDprg)->PR_HORAINICIO = nHora
MSGINFO("Voy a Ejecutar la funcion" + (oDprg)->PR_FUNCTION)
(oDprg)->(RLOCK())
REPLACE (oDprg)->PR_ULTFECHA WITH DATE()
(oDprg)->(DBUNLOCK())
ENDIF
ENDIF
(oDprg)->(DBSKIP())
ENDDO
Close_Tabla("Programa",oDprg)
SR_EndConnection(nMain)
SR_EndConnection(nData)
SR_END()
nData:= 0
lEventoActivo:=.F.
IF lFinalizaAplicacion = .T.
IF ! EMPTY(oTimer)
oTimer:END()
oTimer:=NIL
ENDIF
IF ! EMPTY(oTray)
oTray:End()
oTray:=NIL
ENDIF
oWnd:END()
ENDIF
RETURN
* --------------------------------------------------------------------------*
FUNCTION PR_ErrorMessage( e )
* --------------------------------------------------------------------------*
local cErrorLog:=MSGErrorDialog( e )
cErrorLog += CRLF + _VER_POS + CRLF + "Ocurrio el " + DTOC(DATE()) + " a las " + TIME() + CRLF
IF SR_GetRddName() = "SQLRDD"
if ! EMPTY(SR_LastSQLError( ))
cErrorLog += CRLF + SR_LastSQLError( ) + CRLF
endif
ENDIF
return cErrorLog
FUNCTION Open_Tabla(cDbf)
LOCAL cAlias:=New_Alias(cDbf)
USE ("MITABLA") ALIAS (cAlias) SHARED NEW VIA "SQLRDD"
IF NETERR()
RET:=.F.
ENDIF
RETURN (cAlias)
STAT FUNC New_Alias(cDbfName)
static n := 0
RETURN cDbfName + StrZero( IIF(++n > 998, 0, n), 3 )
FUNCTION Close_Tabla(_A)
IF SELECT(_A) > 0
SELECT(_A)
(_A)->(DBCLOSEAREA())
ENDIF
RETURN .T.
RETURN (NIL)
FUNCTION DB_CONNECTION(_SHEMA)
LOCAL nCon:=0
DEFAULT _SHEMA:="premiumpyme"
nCon:=SR_AddConnection(CONNECT_MYSQL,"MYSQL=127.0.0.1;UID=Miusuario;PWD=MiPassword;DTB=" + _SHEMA)
RETURN nCon
FUNCTION MenuTray( nRow, nCol, oTray, oWnd )
local oMenu
MENU oMenu POPUP
MENUITEM "Show" ACTION (oWnd:Show(), oWnd:Maximize(), oWnd:SetFocus())
MENUITEM "Hide" ACTION oWnd:Hide()
SEPARATOR
MENUITEM "Cerrar ServerPyME" ACTION (lFinalizaAplicacion:= .T., oWnd:END())
ENDMENU
ACTIVATE POPUP oMenu AT nRow, nCol OF oTray:oWnd
return NIL
STATIC FUNCTION SHOWRESIZETYPE( nSizeType )
STATIC lInit := .T.
DO CASE
CASE nSizeType = SIZE_INIT
//? "SIZE_INIT"
lInit = .F.
CASE nSizeType = SIZE_RESTORED .AND. !lInit
//? "SIZE_RESTORED"
oWnd:Show()
oWnd:Maximize()
oWnd:SetFocus()
CASE nSizeType = SIZE_MINIMIZED
//? "SIZE_MINIMIZED"
oWnd:Hide()
CASE nSizeType = SIZE_MAXIMIZED
ENDCASE
RETURN NIL