FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour FWH64 : ERROR SE SALE DEL SISTEMA
Posts: 230
Joined: Thu Sep 17, 2015 11:40 PM

FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Mon Aug 19, 2024 02: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ú
+51983478218
carlosalbatun@gmail.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Mon Aug 19, 2024 02: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
Posts: 230
Joined: Thu Sep 17, 2015 11:40 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Mon Aug 19, 2024 03: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 "&amp;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 "&amp;Editar"                                             ;

  TOOLTIP { "Editar los datos del  personal", "Mantenimiento" };

  ACTION AddReg(.F.)

DEFINE BUTTON OF oBar ;

  FILE ".\img\no.bmp" TOP ;

  PROMPT "&amp;Borrar" ;

  TOOLTIP { "Eliminar el registro del personal", "Mantenimiento" };

  ACTION DelReg()

DEFINE BUTTON OF oBar ;

  FILE ".\img\exit.bmp"                  ;

  PROMPT "&amp;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ú
+51983478218
carlosalbatun@gmail.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Mon Aug 19, 2024 03: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
Posts: 230
Joined: Thu Sep 17, 2015 11:40 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Tue Aug 20, 2024 04:21 AM

te envie a tu email el proyecto. Gracias

Carlos Atuncar - CaSoftSystem
Chincha - Perú
+51983478218
carlosalbatun@gmail.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Tue Aug 20, 2024 07: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
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Tue Aug 20, 2024 02:09 PM
Code (fw): Select all Collapse
#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
Posts: 230
Joined: Thu Sep 17, 2015 11:40 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Tue Aug 20, 2024 02: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

Carlos Atuncar - CaSoftSystem
Chincha - Perú
+51983478218
carlosalbatun@gmail.com
Posts: 230
Joined: Thu Sep 17, 2015 11:40 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Tue Aug 20, 2024 02: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ú
+51983478218
carlosalbatun@gmail.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Tue Aug 20, 2024 04: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
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Tue Aug 20, 2024 05:14 PM
yo uso así
Code (fw): Select all Collapse
 MSGRUN( "Guardando datos", "Usuario un momento por favor", {|| GuardaDatos()  } )
Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Tue Aug 20, 2024 05:16 PM
Este ejemplo funciona bien construyendo con FWH\samples\buildx64.bat
Code (fw): Select all Collapse
#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
Posts: 230
Joined: Thu Sep 17, 2015 11:40 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: 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ú
+51983478218
carlosalbatun@gmail.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Wed Aug 21, 2024 03: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
Posts: 230
Joined: Thu Sep 17, 2015 11:40 PM

Re: FWH64 : ERROR SE SALE DEL SISTEMA

Posted: Wed Aug 21, 2024 04:18 AM

Solucionado esta corriendo OK, por el momento no usar hb_gcAll()

Carlos Atuncar - CaSoftSystem
Chincha - Perú
+51983478218
carlosalbatun@gmail.com