FWH64 : ERROR SE SALE DEL SISTEMA

FWH64 : ERROR SE SALE DEL SISTEMA

Postby CARLOS ATUNCAR » Mon Aug 19, 2024 2:05 am

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 ?
Carlos Atuncar - CaSoftSystem
Chincha - Perú
carlosalbatun@gmail.com
CARLOS ATUNCAR
 
Posts: 176
Joined: Thu Sep 17, 2015 11:40 pm
Location: Chincha - Peru

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby Antonio Linares » Mon Aug 19, 2024 2:49 am

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby CARLOS ATUNCAR » Mon Aug 19, 2024 3:30 am

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
Carlos Atuncar - CaSoftSystem
Chincha - Perú
carlosalbatun@gmail.com
CARLOS ATUNCAR
 
Posts: 176
Joined: Thu Sep 17, 2015 11:40 pm
Location: Chincha - Peru

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby Antonio Linares » Mon Aug 19, 2024 3:35 am

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby CARLOS ATUNCAR » Tue Aug 20, 2024 4:21 am

te envie a tu email el proyecto. Gracias
Carlos Atuncar - CaSoftSystem
Chincha - Perú
carlosalbatun@gmail.com
CARLOS ATUNCAR
 
Posts: 176
Joined: Thu Sep 17, 2015 11:40 pm
Location: Chincha - Peru

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby Antonio Linares » Tue Aug 20, 2024 7:35 am

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby karinha » Tue Aug 20, 2024 2:09 pm

Code: Select all  Expand view  RUN

#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
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby CARLOS ATUNCAR » Tue Aug 20, 2024 2:32 pm

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

Image
Carlos Atuncar - CaSoftSystem
Chincha - Perú
carlosalbatun@gmail.com
CARLOS ATUNCAR
 
Posts: 176
Joined: Thu Sep 17, 2015 11:40 pm
Location: Chincha - Peru

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby CARLOS ATUNCAR » Tue Aug 20, 2024 2:37 pm

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
Carlos Atuncar - CaSoftSystem
Chincha - Perú
carlosalbatun@gmail.com
CARLOS ATUNCAR
 
Posts: 176
Joined: Thu Sep 17, 2015 11:40 pm
Location: Chincha - Peru

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby Antonio Linares » Tue Aug 20, 2024 4:45 pm

Carlos,

De momento, como solución provisional, cambia oWait:End() por oWait:Hide()

ya que podemos reproducir el error vamos a investigarlo

gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby sysctrl2 » Tue Aug 20, 2024 5:14 pm

yo uso así
Code: Select all  Expand view  RUN

 MSGRUN( "Guardando datos", "Usuario un momento por favor", {|| GuardaDatos()  } )
 
Cesar Cortes Cruz
SysCtrl Software
Mexico

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

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby Antonio Linares » Tue Aug 20, 2024 5:16 pm

Este ejemplo funciona bien construyendo con FWH\samples\buildx64.bat

Code: Select all  Expand view  RUN
#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  
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby CARLOS ATUNCAR » Tue Aug 20, 2024 11:20 pm

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
Carlos Atuncar - CaSoftSystem
Chincha - Perú
carlosalbatun@gmail.com
CARLOS ATUNCAR
 
Posts: 176
Joined: Thu Sep 17, 2015 11:40 pm
Location: Chincha - Peru

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby Antonio Linares » Wed Aug 21, 2024 3:20 am

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 :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Postby CARLOS ATUNCAR » Wed Aug 21, 2024 4:18 am

Solucionado esta corriendo OK, por el momento no usar hb_gcAll()
Carlos Atuncar - CaSoftSystem
Chincha - Perú
carlosalbatun@gmail.com
CARLOS ATUNCAR
 
Posts: 176
Joined: Thu Sep 17, 2015 11:40 pm
Location: Chincha - Peru

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 51 guests