FWH64 : ERROR SE SALE DEL SISTEMA
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
FWH64 : ERROR SE SALE DEL SISTEMA
Saludos estoy comenzando a desarrollar mis aplicaciones en 64bts con la version fwh 64 - 2407 todo va bien hasta en un punto que recolecto los datos desde mi dialogo y doy aceptar para guardarlos en la base de datos y se sale el sistema no me arroja ningún error el mismo procedimiento lo estoy probando con otra version de FHW 32 bits la 2012 y si guarda la info en la base de datos y no se sale. es problema con la version ?
- Antonio Linares
- Site Admin
- Posts: 42268
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: FWH64 : ERROR SE SALE DEL SISTEMA
Estimado Carlos,
Por favor comprueba si se genera un fichero hb_out.log y de ser asi copia aqui el contenido
Puedes asi mismo copiar aqui el código PRG para reproducirlo ? gracias
Por favor comprueba si se genera un fichero hb_out.log y de ser asi copia aqui el contenido
Puedes asi mismo copiar aqui el código PRG para reproducirlo ? gracias
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
Re: FWH64 : ERROR SE SALE DEL SISTEMA
Saludos Antonio, no genera ningún archivo , este es mi prg todo normal hasta que llamo el dialogo y le doy aceptar debería guardarme la info en la base pero no registra nada, y he notado que dando ESC tambien pasa el mismo comportamiento. Lo estoy avanzando en la version FWH 2210 de 32bist y todo trabaja normal.
#include "fivewin.ch"
#include "xbrowse.ch"
#include "colores.ch"
Static aWnd,oBrw,oQry
Procedure personal
local cMsg,oIco,oWait,oCols
local oFont,oBold,eFont
WaitOn("Espere un momento por favor...",@oWait )
SysRefresh()
If !CheckConect()
WaitOff( @oWait )
MsgStop("Falla de conexion al servidor, reintente !!!","STOP" )
Return
Endif
HB_GCALL( .F. ) // limpiamos la memoria
cMsg := "SELECT p.*,CONCAT(apellido_p,' ',apellido_m,' ',nombres) AS nombresx FROM personal p ORDER BY nombresx"
oQry := oServer:RowSet( cMsg )
DEFINE ICON oIco FILE ".\img\user.ico"
DEFINE FONT oFont NAME "Segoe UI" SIZE 0,-10
DEFINE FONT oBold NAME 'Segoe UI' SIZE 0,-12 BOLD
DEFINE FONT eFont NAME 'Lucida Console' SIZE 0,-12
If oWnd:nWidth<=850
xWind:= 830
Else
xWind:= 830
EndIf
aCols := {;
{"id" ,"ID" ,NIL,60,AL_LEFT},;
{"codigo" ,"CODIGO",NIL,80,AL_LEFT},;
{"nombresx","APELLIDOS Y NOPMBRES",NIL,200,AL_LEFT},;
{"cargo" ,"PUESTO",NIL,100,AL_LEFT},;
{"horario_1" ,"INGRESO",NIL,80,AL_LEFT},;
{"horario_2" ,"SALIDA" ,NIL,80,AL_LEFT},;
{"horario_3" ,"INICIO",NIL,80,AL_LEFT},;
{"horario_4" ,"FINAL" ,NIL,80,AL_LEFT};
}
DEFINE WINDOW aWnd FROM 0,0 TO oWnd:nHeight-225,xWind PIXEL MDICHILD OF oWnd ;
TITLE "MANTENIMIENTO DE PERSONAL" ICON oIco ;
COLOR CLR_BLACK,RGB(250,250,250) STYLE nOr( WS_CAPTION, WS_VISIBLE , WS_SYSMENU)// , WS_POPUP
@0,0 XBROWSE oBrw OF aWnd ;
DATASOURCE oQry ;
COLUMNS aCols ;
LINES CELL FASTEDIT PIXEL
WITH OBJECT oBrw
:bClrRowFocus := oBrw:bClrSelFocus
:nRowHeight := 25
:nHeaderLines := 4
:nHeaderHeight := 60
:oHeaderFonts := oFont
:nFooterHeight := 20
:nFooterLines := 2
:oFooterFonts := eFont
:nFreeze := 3
:nStretchCol := 3
:lAllowColHiding := .F.
:lAllowColSwapping := .F.
:lDisplayZeros := .F.
:lRecordSelector := .F.
:lHScroll := .F.
:l2007 := .F.
:lFooter := .T.
:lDrawBorder := .T.
:lAllowColReGroup := .T.
:lColDividerComplete := .T.
:SetGroupHeader( 'Jornada', 5,6, oFont )
:SetGroupHeader( 'Refrigerio', 7,8, oFont )
:bClrHeader := {|| { nRGB(000,000,000), METRO_EXCEL1 } }
:bClrSel := { || { CLR_BLACK, CLR_HGRAY } }
:bClrStd = { || If( oBrw:KeyNo() % 2 == 0,{CLR_BLACK, RGB( 198, 255, 198 ) },{CLR_BLACK, RGB( 232, 255, 232 ) } ) }
:bClrFooter := { || { CLR_WHITE,METRO_WORD1 } }
:bClrEdits := { || { CLR_BLACK, CLR_YELLOW }}
END
AEval( oBrw:aCols, { | o | o:nHeadStrAlign := AL_CENTER,o:oDataFont := oFont } )
oBrw:CreateFromCode()
aWnd:oClient := oBrw
BrwBtnBar()
WaitOff( @oWait )
ACTIVATE WINDOW aWnd ON INIT oBrw:SetFocus()
return
Static Procedure BrwbtnBar()
local oBar, oBtn,oBold
DEFINE BUTTONBAR oBar OF oBrw:oWnd SIZE 75,75 3D 2015 HEIGHT 96
/*
oBold := oBar:oFont:Bold()
oBar:oGrpFont := oBold
oBar:bClrGrad := RGB( 68, 68, 68 )
*/
DEFINE BUTTON OF oBar ;
FILE ".\img\new.bmp" TOP ;
PROMPT "&Nuevo" ;
GROUP LABEL "MANTENIMIENTO" ;
COLORS CLR_BLACK, CLR_HRED ;
TOOLTIP { "Crear nuevo personal", "Mantenimiento" } ;
ACTION AddReg(.T.)
DEFINE BUTTON OF oBar ;
FILE ".\img\edit.bmp" TOP ;
PROMPT "&Editar" ;
TOOLTIP { "Editar los datos del personal", "Mantenimiento" };
ACTION AddReg(.F.)
DEFINE BUTTON OF oBar ;
FILE ".\img\no.bmp" TOP ;
PROMPT "&Borrar" ;
TOOLTIP { "Eliminar el registro del personal", "Mantenimiento" };
ACTION DelReg()
DEFINE BUTTON OF oBar ;
FILE ".\img\exit.bmp" ;
PROMPT "&Salir" ;
ACTION (oQry:End(),aWnd:End(),aWnd:=NIL);
TOOLTIP { "Cerrar Ventana", "Mantenimiento" } BTNRIGHT FLAT
AEval( oBar:aControls, { |oBtn| oBtn:bColorMap := { |o| If( o:lMOver, { CLR_BLACK, CLR_HRED }, nil ) } } )
return oBar
Static Procedure AddReg(modo)
local oDlg,oGet[10],oWait
local cGet[10]
local lRet := .F.
If modo
cGet[01] := Space(11)
cGet[02] := Space(20)
cGet[03] := Space(30)
cGet[04] := Space(30)
cGet[05] := Space(90)
cGet[06] := Space(50)
cGet[07] := Space(10)
cGet[08] := Space(10)
cGet[09] := Space(10)
cGet[10] := Space(10)
Else
cGet[01] := oQry:codigo
cGet[02] := oQry:nombres
cGet[03] := oQry:apellido_p
cGet[04] := oQry:apellido_m
cGet[05] := oQry:direccion
cGet[06] := oQry:cargo
cGet[07] := oQry:horario_1
cGet[08] := oQry:horario_2
cGet[09] := oQry:horario_3
cGet[10] := oQry:horario_4
EndIf
DEFINE DIALOG oDlg RESOURCE "personal"
REDEFINE GET oGet[01] VAR cGet[01] ID 100 OF oDlg VALID GetCodigo(cGet[01],modo)
REDEFINE GET oGet[02] VAR cGet[02] ID 101 OF oDlg PICTURE "@!"
REDEFINE GET oGet[03] VAR cGet[03] ID 102 OF oDlg PICTURE "@!"
REDEFINE GET oGet[04] VAR cGet[04] ID 103 OF oDlg PICTURE "@!"
REDEFINE GET oGet[05] VAR cGet[05] ID 104 OF oDlg
REDEFINE GET oGet[06] VAR cGet[06] ID 105 OF oDlg
REDEFINE GET oGet[07] VAR cGet[07] ID 106 OF oDlg PICTURE "99:99:99"
REDEFINE GET oGet[08] VAR cGet[08] ID 107 OF oDlg PICTURE "99:99:99"
REDEFINE GET oGet[09] VAR cGet[09] ID 108 OF oDlg PICTURE "99:99:99"
REDEFINE GET oGet[10] VAR cGet[10] ID 109 OF oDlg PICTURE "99:99:99"
REDEFINE BUTTON ID 200 OF oDlg ACTION ( lRet := .T.,oDlg:End())
REDEFINE BUTTON ID 201 OF oDlg ACTION ( lRet := .F.,oDlg:End())
ACTIVATE DIALOG oDlg CENTERED
If lRet
If CheckConect()
WaitOn("Espere, un momento por favor...",@oWait )
If modo
cMsg := "INSERT INTO personal SET "
Else
cMsg := "UPDATE personal SET "
Endif
cMsg += "codigo = "+ClipValue2Sql( cGet[01] )
cMsg += ",nombres = "+ClipValue2Sql( cGet[02] )
cMsg += ",apellido_p = "+ClipValue2Sql( cGet[03] )
cMsg += ",apellido_m = "+ClipValue2Sql( cGet[04] )
cMsg += ",direccion = "+ClipValue2Sql( cGet[05] )
cMsg += ",cargo = "+ClipValue2Sql( cGet[06] )
cMsg += ",horario_1 = "+ClipValue2Sql( cGet[07] )
cMsg += ",horario_2 = "+ClipValue2Sql( cGet[08] )
cMsg += ",horario_3 = "+ClipValue2Sql( cGet[09] )
cMsg += ",horario_4 = "+ClipValue2Sql( cGet[10] )
If !modo
cMsg += " WHERE id="+ClipValue2Sql( oQry:id )
EndIf
oServer:Execute( cMsg )
If modo
oQry:ReQuery()
Else
oQry:ReSync()
EndIf
oBrw:Refresh()
WaitOff( @oWait )
Else
MsgStop("Verifique su conexion al servidor....","Stop" )
Endif
EndIf
Return
Static Procedure DelReg
local cMsg
If MsgYesNo("Desea Eliminar este registro ? ","Confirme" )
If CheckConect()
cMsg := "DELETE FROM personal WHERE id="+ClipValue2Sql( oQry:id )
oQry:Execute( cMsg )
oQry:ReQuery()
oBrw:Refresh()
Endif
EndIf
Return
Static Function GetCodigo( cCodigo,modo )
local cMsg,cQry
local lRet := .T.
If CheckConect()
cMsg := "SELECT * FROM personal WHERE codigo="+ClipValue2Sql( cCodigo )
if !modo
cMsg += " AND id != "+ClipValue2Sql( oQry:id )
Endif
cQry := oServer:Query( cMsg )
If cQry:lastrec()>0
lRet := .F.
MsgStop("Codigo ingresado ya existe !!!","Stop" )
EndIf
cQry:End()
EndIf
Return lRet
#include "fivewin.ch"
#include "xbrowse.ch"
#include "colores.ch"
Static aWnd,oBrw,oQry
Procedure personal
local cMsg,oIco,oWait,oCols
local oFont,oBold,eFont
WaitOn("Espere un momento por favor...",@oWait )
SysRefresh()
If !CheckConect()
WaitOff( @oWait )
MsgStop("Falla de conexion al servidor, reintente !!!","STOP" )
Return
Endif
HB_GCALL( .F. ) // limpiamos la memoria
cMsg := "SELECT p.*,CONCAT(apellido_p,' ',apellido_m,' ',nombres) AS nombresx FROM personal p ORDER BY nombresx"
oQry := oServer:RowSet( cMsg )
DEFINE ICON oIco FILE ".\img\user.ico"
DEFINE FONT oFont NAME "Segoe UI" SIZE 0,-10
DEFINE FONT oBold NAME 'Segoe UI' SIZE 0,-12 BOLD
DEFINE FONT eFont NAME 'Lucida Console' SIZE 0,-12
If oWnd:nWidth<=850
xWind:= 830
Else
xWind:= 830
EndIf
aCols := {;
{"id" ,"ID" ,NIL,60,AL_LEFT},;
{"codigo" ,"CODIGO",NIL,80,AL_LEFT},;
{"nombresx","APELLIDOS Y NOPMBRES",NIL,200,AL_LEFT},;
{"cargo" ,"PUESTO",NIL,100,AL_LEFT},;
{"horario_1" ,"INGRESO",NIL,80,AL_LEFT},;
{"horario_2" ,"SALIDA" ,NIL,80,AL_LEFT},;
{"horario_3" ,"INICIO",NIL,80,AL_LEFT},;
{"horario_4" ,"FINAL" ,NIL,80,AL_LEFT};
}
DEFINE WINDOW aWnd FROM 0,0 TO oWnd:nHeight-225,xWind PIXEL MDICHILD OF oWnd ;
TITLE "MANTENIMIENTO DE PERSONAL" ICON oIco ;
COLOR CLR_BLACK,RGB(250,250,250) STYLE nOr( WS_CAPTION, WS_VISIBLE , WS_SYSMENU)// , WS_POPUP
@0,0 XBROWSE oBrw OF aWnd ;
DATASOURCE oQry ;
COLUMNS aCols ;
LINES CELL FASTEDIT PIXEL
WITH OBJECT oBrw
:bClrRowFocus := oBrw:bClrSelFocus
:nRowHeight := 25
:nHeaderLines := 4
:nHeaderHeight := 60
:oHeaderFonts := oFont
:nFooterHeight := 20
:nFooterLines := 2
:oFooterFonts := eFont
:nFreeze := 3
:nStretchCol := 3
:lAllowColHiding := .F.
:lAllowColSwapping := .F.
:lDisplayZeros := .F.
:lRecordSelector := .F.
:lHScroll := .F.
:l2007 := .F.
:lFooter := .T.
:lDrawBorder := .T.
:lAllowColReGroup := .T.
:lColDividerComplete := .T.
:SetGroupHeader( 'Jornada', 5,6, oFont )
:SetGroupHeader( 'Refrigerio', 7,8, oFont )
:bClrHeader := {|| { nRGB(000,000,000), METRO_EXCEL1 } }
:bClrSel := { || { CLR_BLACK, CLR_HGRAY } }
:bClrStd = { || If( oBrw:KeyNo() % 2 == 0,{CLR_BLACK, RGB( 198, 255, 198 ) },{CLR_BLACK, RGB( 232, 255, 232 ) } ) }
:bClrFooter := { || { CLR_WHITE,METRO_WORD1 } }
:bClrEdits := { || { CLR_BLACK, CLR_YELLOW }}
END
AEval( oBrw:aCols, { | o | o:nHeadStrAlign := AL_CENTER,o:oDataFont := oFont } )
oBrw:CreateFromCode()
aWnd:oClient := oBrw
BrwBtnBar()
WaitOff( @oWait )
ACTIVATE WINDOW aWnd ON INIT oBrw:SetFocus()
return
Static Procedure BrwbtnBar()
local oBar, oBtn,oBold
DEFINE BUTTONBAR oBar OF oBrw:oWnd SIZE 75,75 3D 2015 HEIGHT 96
/*
oBold := oBar:oFont:Bold()
oBar:oGrpFont := oBold
oBar:bClrGrad := RGB( 68, 68, 68 )
*/
DEFINE BUTTON OF oBar ;
FILE ".\img\new.bmp" TOP ;
PROMPT "&Nuevo" ;
GROUP LABEL "MANTENIMIENTO" ;
COLORS CLR_BLACK, CLR_HRED ;
TOOLTIP { "Crear nuevo personal", "Mantenimiento" } ;
ACTION AddReg(.T.)
DEFINE BUTTON OF oBar ;
FILE ".\img\edit.bmp" TOP ;
PROMPT "&Editar" ;
TOOLTIP { "Editar los datos del personal", "Mantenimiento" };
ACTION AddReg(.F.)
DEFINE BUTTON OF oBar ;
FILE ".\img\no.bmp" TOP ;
PROMPT "&Borrar" ;
TOOLTIP { "Eliminar el registro del personal", "Mantenimiento" };
ACTION DelReg()
DEFINE BUTTON OF oBar ;
FILE ".\img\exit.bmp" ;
PROMPT "&Salir" ;
ACTION (oQry:End(),aWnd:End(),aWnd:=NIL);
TOOLTIP { "Cerrar Ventana", "Mantenimiento" } BTNRIGHT FLAT
AEval( oBar:aControls, { |oBtn| oBtn:bColorMap := { |o| If( o:lMOver, { CLR_BLACK, CLR_HRED }, nil ) } } )
return oBar
Static Procedure AddReg(modo)
local oDlg,oGet[10],oWait
local cGet[10]
local lRet := .F.
If modo
cGet[01] := Space(11)
cGet[02] := Space(20)
cGet[03] := Space(30)
cGet[04] := Space(30)
cGet[05] := Space(90)
cGet[06] := Space(50)
cGet[07] := Space(10)
cGet[08] := Space(10)
cGet[09] := Space(10)
cGet[10] := Space(10)
Else
cGet[01] := oQry:codigo
cGet[02] := oQry:nombres
cGet[03] := oQry:apellido_p
cGet[04] := oQry:apellido_m
cGet[05] := oQry:direccion
cGet[06] := oQry:cargo
cGet[07] := oQry:horario_1
cGet[08] := oQry:horario_2
cGet[09] := oQry:horario_3
cGet[10] := oQry:horario_4
EndIf
DEFINE DIALOG oDlg RESOURCE "personal"
REDEFINE GET oGet[01] VAR cGet[01] ID 100 OF oDlg VALID GetCodigo(cGet[01],modo)
REDEFINE GET oGet[02] VAR cGet[02] ID 101 OF oDlg PICTURE "@!"
REDEFINE GET oGet[03] VAR cGet[03] ID 102 OF oDlg PICTURE "@!"
REDEFINE GET oGet[04] VAR cGet[04] ID 103 OF oDlg PICTURE "@!"
REDEFINE GET oGet[05] VAR cGet[05] ID 104 OF oDlg
REDEFINE GET oGet[06] VAR cGet[06] ID 105 OF oDlg
REDEFINE GET oGet[07] VAR cGet[07] ID 106 OF oDlg PICTURE "99:99:99"
REDEFINE GET oGet[08] VAR cGet[08] ID 107 OF oDlg PICTURE "99:99:99"
REDEFINE GET oGet[09] VAR cGet[09] ID 108 OF oDlg PICTURE "99:99:99"
REDEFINE GET oGet[10] VAR cGet[10] ID 109 OF oDlg PICTURE "99:99:99"
REDEFINE BUTTON ID 200 OF oDlg ACTION ( lRet := .T.,oDlg:End())
REDEFINE BUTTON ID 201 OF oDlg ACTION ( lRet := .F.,oDlg:End())
ACTIVATE DIALOG oDlg CENTERED
If lRet
If CheckConect()
WaitOn("Espere, un momento por favor...",@oWait )
If modo
cMsg := "INSERT INTO personal SET "
Else
cMsg := "UPDATE personal SET "
Endif
cMsg += "codigo = "+ClipValue2Sql( cGet[01] )
cMsg += ",nombres = "+ClipValue2Sql( cGet[02] )
cMsg += ",apellido_p = "+ClipValue2Sql( cGet[03] )
cMsg += ",apellido_m = "+ClipValue2Sql( cGet[04] )
cMsg += ",direccion = "+ClipValue2Sql( cGet[05] )
cMsg += ",cargo = "+ClipValue2Sql( cGet[06] )
cMsg += ",horario_1 = "+ClipValue2Sql( cGet[07] )
cMsg += ",horario_2 = "+ClipValue2Sql( cGet[08] )
cMsg += ",horario_3 = "+ClipValue2Sql( cGet[09] )
cMsg += ",horario_4 = "+ClipValue2Sql( cGet[10] )
If !modo
cMsg += " WHERE id="+ClipValue2Sql( oQry:id )
EndIf
oServer:Execute( cMsg )
If modo
oQry:ReQuery()
Else
oQry:ReSync()
EndIf
oBrw:Refresh()
WaitOff( @oWait )
Else
MsgStop("Verifique su conexion al servidor....","Stop" )
Endif
EndIf
Return
Static Procedure DelReg
local cMsg
If MsgYesNo("Desea Eliminar este registro ? ","Confirme" )
If CheckConect()
cMsg := "DELETE FROM personal WHERE id="+ClipValue2Sql( oQry:id )
oQry:Execute( cMsg )
oQry:ReQuery()
oBrw:Refresh()
Endif
EndIf
Return
Static Function GetCodigo( cCodigo,modo )
local cMsg,cQry
local lRet := .T.
If CheckConect()
cMsg := "SELECT * FROM personal WHERE codigo="+ClipValue2Sql( cCodigo )
if !modo
cMsg += " AND id != "+ClipValue2Sql( oQry:id )
Endif
cQry := oServer:Query( cMsg )
If cQry:lastrec()>0
lRet := .F.
MsgStop("Codigo ingresado ya existe !!!","Stop" )
EndIf
cQry:End()
EndIf
Return lRet
- Antonio Linares
- Site Admin
- Posts: 42268
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: FWH64 : ERROR SE SALE DEL SISTEMA
Carlos,
Situa MsgInfo( 1 ), MsgInfo( 2 ), ..., etc en las lineas de tu programa para que localices la línea exacta en que la aplicación se sale
También es util si muestras un pantallazo de como está la aplicación y marcas en que botón pulsas
Aguardo tus noticias
Situa MsgInfo( 1 ), MsgInfo( 2 ), ..., etc en las lineas de tu programa para que localices la línea exacta en que la aplicación se sale
También es util si muestras un pantallazo de como está la aplicación y marcas en que botón pulsas
Aguardo tus noticias
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
Re: FWH64 : ERROR SE SALE DEL SISTEMA
te envie a tu email el proyecto. Gracias
- Antonio Linares
- Site Admin
- Posts: 42268
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: FWH64 : ERROR SE SALE DEL SISTEMA
Estimado Carlos,
Tu que conoces bien la estructura de tu aplicación, es preciso que hagas esto:
> Situa MsgInfo( 1 ), MsgInfo( 2 ), ..., etc en las lineas de tu programa para que localices la línea exacta en que la aplicación se sale
Tienes que localizar la línea en donde sale
gracias
Tu que conoces bien la estructura de tu aplicación, es preciso que hagas esto:
> Situa MsgInfo( 1 ), MsgInfo( 2 ), ..., etc en las lineas de tu programa para que localices la línea exacta en que la aplicación se sale
Tienes que localizar la línea en donde sale
gracias
Re: FWH64 : ERROR SE SALE DEL SISTEMA
Code: Select all | Expand
#include "fivewin.ch"
#include "xbrowse.ch"
// #include "colores.ch"
#define METRO_EXCEL1 RGB( 33,115, 70 )
#define METRO_WORD1 RGB( 43, 87,154 )
STATIC aWnd, oBrw, oQry, oWnd
PROCEDURE Personal
LOCAL cMsg, oIco, oWait, oCols, aCols
LOCAL oFont, oBold, eFont, oServer, xWind
hb_gcAll( .F. ) // limpiamos la memoria
WaitOn( "Espere un momento por favor...", @oWait )
// SysRefresh() ???
IF !CheckConect()
WaitOff( @oWait )
MsgStop( "Falla de conexion al servidor, reintente !!!", "STOP" )
RETURN
ENDIF
cMsg := "SELECT p.*,CONCAT(apellido_p,' ',apellido_m,' ',nombres) AS nombresx FROM personal p ORDER BY nombresx"
oQry := oServer:RowSet( cMsg )
IF oWnd:nWidth <= 850
xWind := 830
ELSE
xWind := 830
ENDIF
aCols := { ;
{ "id", "ID", NIL, 60, AL_LEFT }, ;
{ "codigo", "CODIGO", NIL, 80, AL_LEFT }, ;
{ "nombresx", "APELLIDOS Y NOPMBRES", NIL, 200, AL_LEFT }, ;
{ "cargo", "PUESTO", NIL, 100, AL_LEFT }, ;
{ "horario_1", "INGRESO", NIL, 80, AL_LEFT }, ;
{ "horario_2", "SALIDA", NIL, 80, AL_LEFT }, ;
{ "horario_3", "INICIO", NIL, 80, AL_LEFT }, ;
{ "horario_4", "FINAL", NIL, 80, AL_LEFT };
}
DEFINE ICON oIco FILE ".\img\user.ico"
DEFINE FONT oFont NAME "Segoe UI" SIZE 0, - 10
DEFINE FONT oBold NAME 'Segoe UI' SIZE 0, - 12 BOLD
DEFINE FONT eFont NAME 'Lucida Console' SIZE 0, - 12
DEFINE WINDOW aWnd FROM 0, 0 TO oWnd:nHeight - 225, xWind PIXEL MDICHILD ;
OF oWnd TITLE "MANTENIMIENTO DE PERSONAL" ICON oIco ;
COLOR CLR_BLACK, RGB( 250, 250, 250 ) ;
STYLE nOr( WS_CAPTION, WS_VISIBLE, WS_SYSMENU ) // , WS_POPUP
@0, 0 XBROWSE oBrw OF aWnd DATASOURCE oQry COLUMNS aCols ;
LINES CELL FASTEDIT PIXEL
WITH OBJECT oBrw
:bClrRowFocus := oBrw:bClrSelFocus
:nRowHeight := 25
:nHeaderLines := 4
:nHeaderHeight := 60
:oHeaderFonts := oFont
:nFooterHeight := 20
:nFooterLines := 2
:oFooterFonts := eFont
:nFreeze := 3
:nStretchCol := 3
:lAllowColHiding := .F.
:lAllowColSwapping := .F.
:lDisplayZeros := .F.
:lRecordSelector := .F.
:lHScroll := .F.
:l2007 := .F.
:lFooter := .T.
:lDrawBorder := .T.
:lAllowColReGroup := .T.
:lColDividerComplete := .T.
:SetGroupHeader( 'Jornada', 5, 6, oFont )
:SetGroupHeader( 'Refrigerio', 7, 8, oFont )
:bClrHeader := { || { nRGB( 000, 000, 000 ), METRO_EXCEL1 } }
:bClrSel := { || { CLR_BLACK, CLR_HGRAY } }
:bClrStd := { || IF( oBrw:KeyNo() % 2 == 0, { CLR_BLACK, RGB( 198, 255, 198 ) }, { CLR_BLACK, RGB( 232, 255, 232 ) } ) }
:bClrFooter := { || { CLR_WHITE, METRO_WORD1 } }
:bClrEdits := { || { CLR_BLACK, CLR_YELLOW } }
END
AEval( oBrw:aCols, {| o | o:nHeadStrAlign := AL_CENTER, o:oDataFont := oFont } )
oBrw:CreateFromCode()
aWnd:oClient := oBrw
BrwBtnBar() // FUNCIONA CORRECTO?
WaitOff( @oWait ) // Muestre esto, pls;
ACTIVATE WINDOW aWnd MAXIMIZED ;
ON INIT( oBrw:SetFocus() )
hb_gcAll( .T. ) // limpiamos la memoria
RETURN
STATIC PROCEDURE BrwbtnBar() // FUNCIONA BIEN?
LOCAL oBar, oBtn, oBold
DEFINE BUTTONBAR oBar OF oBrw:oWnd SIZE 75, 75 3D HEIGHT 96 2015
DEFINE BUTTON OF oBar FILE ".\img\new.bmp" TOP PROMPT "&Nuevo" ;
GROUP LABEL "MANTENIMIENTO" COLORS CLR_BLACK, CLR_HRED ;
TOOLTIP { "Crear nuevo personal", "Mantenimiento" } ;
ACTION AddReg( .T. )
DEFINE BUTTON OF oBar FILE ".\img\edit.bmp" TOP PROMPT "&Editar" ;
TOOLTIP { "Editar los datos del personal", "Mantenimiento" } ;
ACTION AddReg( .F. )
DEFINE BUTTON OF oBar FILE ".\img\no.bmp" TOP PROMPT "&Borrar" ;
TOOLTIP { "Eliminar el registro del personal", "Mantenimiento" } ;
ACTION DelReg()
DEFINE BUTTON OF oBar FILE ".\img\exit.bmp" PROMPT "&Salir" ;
ACTION ( oQry:End(), aWnd:End(), aWnd := NIL ) ;
TOOLTIP { "Cerrar Ventana", "Mantenimiento" } BTNRIGHT FLAT
AEval( oBar:aControls, {| oBtn | oBtn:bColorMap := {| o | If( o:lMOver, { CLR_BLACK, CLR_HRED }, NIL ) } } )
//ATUNCAR.prg(137) Warning W0006 Procedure returns value
RETURN( oBar )
STATIC PROCEDURE AddReg( modo )
LOCAL oDlg, oGet[ 10 ], oWait, cMsg, oServer
LOCAL cGet[ 10 ]
LOCAL lRet := .F.
IF modo // inc // .T.
cGet[ 01 ] := Space( 11 )
cGet[ 02 ] := Space( 20 )
cGet[ 03 ] := Space( 30 )
cGet[ 04 ] := Space( 30 )
cGet[ 05 ] := Space( 90 )
cGet[ 06 ] := Space( 50 )
cGet[ 07 ] := Space( 10 )
cGet[ 08 ] := Space( 10 )
cGet[ 09 ] := Space( 10 )
cGet[ 10 ] := Space( 10 )
ELSE // alt // .F.
cGet[ 01 ] := oQry:codigo
cGet[ 02 ] := oQry:nombres
cGet[ 03 ] := oQry:apellido_p
cGet[ 04 ] := oQry:apellido_m
cGet[ 05 ] := oQry:direccion
cGet[ 06 ] := oQry:cargo
cGet[ 07 ] := oQry:horario_1
cGet[ 08 ] := oQry:horario_2
cGet[ 09 ] := oQry:horario_3
cGet[ 10 ] := oQry:horario_4
ENDIF
DEFINE DIALOG oDlg RESOURCE "personal"
REDEFINE GET oGet[ 01 ] VAR cGet[ 01 ] ID 100 OF oDlg UPDATE ;
VALID GetCodigo( cGet[ 01 ], modo )
REDEFINE GET oGet[ 02 ] VAR cGet[ 02 ] ID 101 OF oDlg PICTURE "@!" UPDATE
REDEFINE GET oGet[ 03 ] VAR cGet[ 03 ] ID 102 OF oDlg PICTURE "@!" UPDATE
REDEFINE GET oGet[ 04 ] VAR cGet[ 04 ] ID 103 OF oDlg PICTURE "@!" UPDATE
REDEFINE GET oGet[ 05 ] VAR cGet[ 05 ] ID 104 OF oDlg UPDATE
REDEFINE GET oGet[ 06 ] VAR cGet[ 06 ] ID 105 OF oDlg UPDATE
REDEFINE GET oGet[ 07 ] VAR cGet[ 07 ] ID 106 OF oDlg PICTURE "99:99:99" UPDATE
REDEFINE GET oGet[ 08 ] VAR cGet[ 08 ] ID 107 OF oDlg PICTURE "99:99:99" UPDATE
REDEFINE GET oGet[ 09 ] VAR cGet[ 09 ] ID 108 OF oDlg PICTURE "99:99:99" UPDATE
REDEFINE GET oGet[ 10 ] VAR cGet[ 10 ] ID 109 OF oDlg PICTURE "99:99:99" UPDATE
REDEFINE BUTTON ID 200 OF oDlg ACTION ( lRet := .T., oDlg:End() )
REDEFINE BUTTON ID 201 OF oDlg ACTION ( lRet := .F., oDlg:End() ) CANCEL
ACTIVATE DIALOG oDlg CENTERED
IF lRet
IF CheckConect()
WaitOn( "Espere, un momento por favor...", @oWait ) // ???
IF modo
cMsg := "INSERT INTO personal SET "
ELSE
cMsg := "UPDATE personal SET "
ENDIF
cMsg += "codigo = " + ClipValue2Sql( cGet[ 01 ] )
cMsg += ",nombres = " + ClipValue2Sql( cGet[ 02 ] )
cMsg += ",apellido_p = " + ClipValue2Sql( cGet[ 03 ] )
cMsg += ",apellido_m = " + ClipValue2Sql( cGet[ 04 ] )
cMsg += ",direccion = " + ClipValue2Sql( cGet[ 05 ] )
cMsg += ",cargo = " + ClipValue2Sql( cGet[ 06 ] )
cMsg += ",horario_1 = " + ClipValue2Sql( cGet[ 07 ] )
cMsg += ",horario_2 = " + ClipValue2Sql( cGet[ 08 ] )
cMsg += ",horario_3 = " + ClipValue2Sql( cGet[ 09 ] )
cMsg += ",horario_4 = " + ClipValue2Sql( cGet[ 10 ] )
IF !modo
cMsg += " WHERE id=" + ClipValue2Sql( oQry:id ) // ???
ENDIF
oServer:Execute( cMsg )
IF modo
oQry:ReQuery()
ELSE
oQry:ReSync()
ENDIF
oBrw:Refresh()
WaitOff( @oWait ) // ????
ELSE
MsgStop( "Verifique su conexion al servidor....", "Stop" )
ENDIF
ENDIF
RETURN
STATIC PROCEDURE DelReg
LOCAL cMsg
IF MsgYesNo( "Desea Eliminar este registro ? ", "Confirme" )
IF CheckConect()
cMsg := "DELETE FROM personal WHERE id=" + ClipValue2Sql( oQry:id )
oQry:Execute( cMsg )
oQry:ReQuery()
oBrw:Refresh()
ENDIF
ENDIF
RETURN
STATIC FUNCTION GetCodigo( cCodigo, modo )
LOCAL cMsg, cQry, oServer
LOCAL lRet := .T.
IF CheckConect()
cMsg := "SELECT * FROM personal WHERE codigo=" + ClipValue2Sql( cCodigo )
IF !modo
cMsg += " AND id != " + ClipValue2Sql( oQry:id )
ENDIF
cQry := oServer:Query( cMsg )
IF cQry:LastRec() > 0
lRet := .F.
MsgStop( "Codigo ingresado ya existe !!!", "Stop" )
ENDIF
cQry:End()
ENDIF
RETURN( lRet )
/*
Error: Unresolved external '_HB_FUN_WAITON'
Error: Unresolved external '_HB_FUN_CHECKCONECT'
Error: Unresolved external '_HB_FUN_WAITOFF'
Error: Unresolved external '_HB_FUN_CLIPVALUE2SQL'
*/
// FIN / END
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
Re: FWH64 : ERROR SE SALE DEL SISTEMA
Hecho el seguimiento encontre que en este primera parte proboca el error esta funcion :
function WaitOff( oWait )
?"a1"
IF valtype(oWait) != 'U' /* waiton has to be called first! */
?"b1"
*oWait:end()
?"b2"
oWait := NIL
?"b3"
ENDIF
sysRefresh()
?"a2"
RETURN NIL
comente esa linea y paso pero al cerrar manualmente el dialogo de espera que se inicia en esta funcion :
function waitOn( cCaption, oWait, cTitle ) //simula un waiton de grump
LOCAL nWidth
local lVal := .t.
local oBrush
local oImage, lSetAlpha := .t.
local bAction := { || .t. }
default cTitle := "Usuario, un momento por favor"
DEFINE BRUSH oBrush COLOR RGB( 192, 216, 255 ) //rosa
IF cCaption == NIL
DEFINE DIALOG oWait ;
FROM 0,0 TO 5, Len( cTitle ) + 4 ;
STYLE nOr( DS_MODALFRAME, WS_POPUP ) TRANSPARENT //BRUSH oBrush
ELSE
DEFINE DIALOG oWait ;
FROM 0,0 TO 6, Max( Len( cCaption ), Len( cTitle ) ) + 4 ;
TITLE cTitle ;
STYLE DS_MODALFRAME TRANSPARENT //BRUSH oBrush
ENDIF
oWait:cMsg := cCaption
nWidth := oWait:nRight - oWait:nLeft
ACTIVATE DIALOG oWait CENTER ;
ON PAINT oWait:Say( 1, 0, xPadC( oWait:cMsg, nWidth ) ) ;
NOWAIT
SysRefresh()
return (lVal)
al cerrar el dialogo de sale el sistema ahora comente el uso de ambas funciones en mi proceso y la no ocuerre en esa parte nada entro a la opcion modificar paso todos los GET y al dar aceptar se sale no llega al "x1"
REDEFINE BUTTON ID 200 OF oDlg ACTION ( lRet := .T.,oDlg:End())
REDEFINE BUTTON ID 201 OF oDlg ACTION ( lRet := .F.,oDlg:End())
ACTIVATE DIALOG oDlg CENTERED
?"x1"
If lRet
?"z5"
If CheckConect()
?"z6"
*WaitOn("Espere, un momento por favor...",@oWait )
If modo
cMsg := "INSERT INTO personal SET "
Else
cMsg := "UPDATE personal SET "
Endif
cMsg += "codigo = "+ClipValue2Sql( cGet[01] )
cMsg += ",nombres = "+ClipValue2Sql( cGet[02] )
cMsg += ",apellido_p = "+ClipValue2Sql( cGet[03] )
cMsg += ",apellido_m = "+ClipValue2Sql( cGet[04] )
cMsg += ",direccion = "+ClipValue2Sql( cGet[05] )
cMsg += ",cargo = "+ClipValue2Sql( cGet[06] )
cMsg += ",horario_1 = "+ClipValue2Sql( cGet[07] )
cMsg += ",horario_2 = "+ClipValue2Sql( cGet[08] )
cMsg += ",horario_3 = "+ClipValue2Sql( cGet[09] )
cMsg += ",horario_4 = "+ClipValue2Sql( cGet[10] )
If !modo
cMsg += " WHERE id="+ClipValue2Sql( oQry:id )
EndIf
oServer:Execute( cMsg )
?"z1"
If modo
oQry:ReQuery()
Else
oQry:ReSync()
EndIf
?"z2"
oBrw:Refresh()
?"z3"
*WaitOff( @oWait )
Else
MsgStop("Verifique su conexion al servidor....","Stop" )
Endif
EndIf
Return
function WaitOff( oWait )
?"a1"
IF valtype(oWait) != 'U' /* waiton has to be called first! */
?"b1"
*oWait:end()
?"b2"
oWait := NIL
?"b3"
ENDIF
sysRefresh()
?"a2"
RETURN NIL
comente esa linea y paso pero al cerrar manualmente el dialogo de espera que se inicia en esta funcion :
function waitOn( cCaption, oWait, cTitle ) //simula un waiton de grump
LOCAL nWidth
local lVal := .t.
local oBrush
local oImage, lSetAlpha := .t.
local bAction := { || .t. }
default cTitle := "Usuario, un momento por favor"
DEFINE BRUSH oBrush COLOR RGB( 192, 216, 255 ) //rosa
IF cCaption == NIL
DEFINE DIALOG oWait ;
FROM 0,0 TO 5, Len( cTitle ) + 4 ;
STYLE nOr( DS_MODALFRAME, WS_POPUP ) TRANSPARENT //BRUSH oBrush
ELSE
DEFINE DIALOG oWait ;
FROM 0,0 TO 6, Max( Len( cCaption ), Len( cTitle ) ) + 4 ;
TITLE cTitle ;
STYLE DS_MODALFRAME TRANSPARENT //BRUSH oBrush
ENDIF
oWait:cMsg := cCaption
nWidth := oWait:nRight - oWait:nLeft
ACTIVATE DIALOG oWait CENTER ;
ON PAINT oWait:Say( 1, 0, xPadC( oWait:cMsg, nWidth ) ) ;
NOWAIT
SysRefresh()
return (lVal)
al cerrar el dialogo de sale el sistema ahora comente el uso de ambas funciones en mi proceso y la no ocuerre en esa parte nada entro a la opcion modificar paso todos los GET y al dar aceptar se sale no llega al "x1"
REDEFINE BUTTON ID 200 OF oDlg ACTION ( lRet := .T.,oDlg:End())
REDEFINE BUTTON ID 201 OF oDlg ACTION ( lRet := .F.,oDlg:End())
ACTIVATE DIALOG oDlg CENTERED
?"x1"
If lRet
?"z5"
If CheckConect()
?"z6"
*WaitOn("Espere, un momento por favor...",@oWait )
If modo
cMsg := "INSERT INTO personal SET "
Else
cMsg := "UPDATE personal SET "
Endif
cMsg += "codigo = "+ClipValue2Sql( cGet[01] )
cMsg += ",nombres = "+ClipValue2Sql( cGet[02] )
cMsg += ",apellido_p = "+ClipValue2Sql( cGet[03] )
cMsg += ",apellido_m = "+ClipValue2Sql( cGet[04] )
cMsg += ",direccion = "+ClipValue2Sql( cGet[05] )
cMsg += ",cargo = "+ClipValue2Sql( cGet[06] )
cMsg += ",horario_1 = "+ClipValue2Sql( cGet[07] )
cMsg += ",horario_2 = "+ClipValue2Sql( cGet[08] )
cMsg += ",horario_3 = "+ClipValue2Sql( cGet[09] )
cMsg += ",horario_4 = "+ClipValue2Sql( cGet[10] )
If !modo
cMsg += " WHERE id="+ClipValue2Sql( oQry:id )
EndIf
oServer:Execute( cMsg )
?"z1"
If modo
oQry:ReQuery()
Else
oQry:ReSync()
EndIf
?"z2"
oBrw:Refresh()
?"z3"
*WaitOff( @oWait )
Else
MsgStop("Verifique su conexion al servidor....","Stop" )
Endif
EndIf
Return
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
Re: FWH64 : ERROR SE SALE DEL SISTEMA
he probado con la version 2404 y 2407 pasa lo mismo y hasta este momento veo que es al cerrar los dialogos en cada paso de oDlg:End() o oWait:End() es que se sale del sistema.
estoy usando windows 11
estoy usando windows 11
- Antonio Linares
- Site Admin
- Posts: 42268
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: FWH64 : ERROR SE SALE DEL SISTEMA
Carlos,
De momento, como solución provisional, cambia oWait:End() por oWait:Hide()
ya que podemos reproducir el error vamos a investigarlo
gracias
De momento, como solución provisional, cambia oWait:End() por oWait:Hide()
ya que podemos reproducir el error vamos a investigarlo
gracias
Re: FWH64 : ERROR SE SALE DEL SISTEMA
yo uso así
Code: Select all | Expand
MSGRUN( "Guardando datos", "Usuario un momento por favor", {|| GuardaDatos() } )
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
- Antonio Linares
- Site Admin
- Posts: 42268
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: FWH64 : ERROR SE SALE DEL SISTEMA
Este ejemplo funciona bien construyendo con FWH\samples\buildx64.bat
Code: Select all | Expand
#include "FiveWin.ch"
function Main()
local oWnd, oDlg
DEFINE WINDOW oWnd
@ 2, 2 BUTTON "Test" ACTION ( oDlg := Test(), SysWait( 5 ), oDlg:End() ) SIZE 80, 20
ACTIVATE WINDOW oWnd
return nil
function Test()
local oDlg
DEFINE DIALOG oDlg
ACTIVATE DIALOG oDlg NOWAIT
return oDlg
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
Re: FWH64 : ERROR SE SALE DEL SISTEMA
Lo he probado y si funciona el ejemplo, he comparado el bat con mi archivo de entorno del xmate y he dejado las lib segun el bat pero el problema persiste, creo que volvere a 32 bits
- Antonio Linares
- Site Admin
- Posts: 42268
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: FWH64 : ERROR SE SALE DEL SISTEMA
Problema localizado:
Es un bug de xHarbour 64 bits en la función hb_gcAll()
Vamos a solucionarlo
Si se quita la llamada a hb_gcAll() en el método End() de la Clase TDialog, todo funciona bien.
Asi que vamos a ver por que xHarbour 64 bits falla ahi
Es un bug de xHarbour 64 bits en la función hb_gcAll()
Vamos a solucionarlo
Si se quita la llamada a hb_gcAll() en el método End() de la Clase TDialog, todo funciona bien.
Asi que vamos a ver por que xHarbour 64 bits falla ahi
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
Re: FWH64 : ERROR SE SALE DEL SISTEMA
Solucionado esta corriendo OK, por el momento no usar hb_gcAll()