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