Buenas tardes,
Tengo una Clase que utilizo para generar y manejar el Browser, de esta forma:
include "Fivewin.ch"
include "xbrowse.ch"
MEMVAR oApp
CLASS TClientes
DATA oWin
DATA oBar
DATA oBtn
DATA oFont
DATA cTitle
DATA oBrw
DATA oCol
DATA oDbf
DATA cAlias
DATA oFr
METHOD New() CONSTRUCTOR
METHOD Activar()
METHOD Borrar()
END CLASS
METHOD New() CLASS TClientes
::oDbf:= Abrir ( "CLIENTES", {} )
::cAlias := ::oDbf:cAlias
::cTitle := "Clientes"
..
..
..
RETURN Self
Desde mi Browser quiero llamar un dialogo para Incluir y Modificar los registros, el cual se va a encontrar en otro .PRG como una funcion, de esta forma:
FUNCTION Clientes ( lNuevo )
LOCAL oDlg, oFont, oFld, oGet[30]
LOCAL cTitle, cAlias, oFecha
LOCAL aStatus := { "ACTIVO", "INACTIVO", "SUSPENDIDO" }, oCbx, cStatus := ""
LOCAL lGrabar := .F.
DEFAULT lNuevo := .F.
IF !lNuevo
IF oClientes:oDbf:EOF()
MsgStop ( "Error, tabla vacia" )
ENDIF
oClientes:oDbf:LOAD()
cTitle:= "Modificar " + oClientes:cTitle
ELSE
oClientes:oDbf:GOBOTTOM()
oClientes:oDbf:BLANK()
cTitle := "Incluir " + oClientes:cTitle
ENDIF
DEFINE DIALOG oDlg NAME "CLIENTES" TITLE cTitle
REDEFINE GET oGet[1] VAR ::oDbf:CLI_CODIGO ID 101 OF oDlg WHEN lNuevo ;
VALID ( ::oDbf:CLI_CODIGO := StrZero((VAL( ::oDbf:CLI_CODIGO ) +1),
, oGet[1]:Refresh(), .T. )
REDEFINE GET oGet[3] VAR ::oDbf:CLI_NOMBRE ID 103 OF oDlg PICTURE "@"
..
..
..
REDEFINE BUTTON ID 201 OF oDlg ;
ACTION ( lGrabar := .T., oDlg:END() ) ;
MESSAGE " Grabar Registro"
REDEFINE BUTTON ID 202 OF oDlg ;
ACTION ( oDlg:END() ) ;
MESSAGE " Cancelar y Cerrar Formulario"
oDlg:lHelpIcon := .F.
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT ( STATUSBAR( oDlg ), oGet[3]:SetFocus())
IF lGrabar
IF lNuevo
oClientes:oDbf:APPEND()
ENDIF
oClientes:oDbf:SAVE()
oClientes:oBrw:Refresh()
ENDIF
RETURN NIL
Se esta presentando el problema que hace la insersion de registros muy lento para una DBF.
Que esta mal en el codigo anterior? No logro dar con el problema
FWH 25.12
Harbour/Hbmk2
Microsoft Visual C++
MySql 8.0
Antigravity