FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Validar un Get (SOLUCIONADO)
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Validar un Get (SOLUCIONADO)
Posted: Mon Feb 14, 2011 01:48 AM
Hola amigos,

Tengo una funcion que valida si un campo o registro ya existe, la cual no esta funcionando.

Aca el codigo del GET

cCODANT := BANCO->BCO_CODIGO
@ 1,1 GET oCodigo VAR CODBCO OF oDlg SIZE 40, 10 ;
VALID IF(ALLTRIM(cCODANT) <> ALLTRIM(BANCO->BCO_CODIGO), CHKBANCO(BANCO->BCO_CODIGO,LVAN), .T.)

Y aca la funcion

STATIC FUNCTION CHKBANCO( COD,LVAN )
LOCAL nRegAnt := BANCO->(RECNO())
IF BANCO->(DBSEEK( COD ))
MsgBeep()
MsgStop("El C贸digo del Banco ya se encuentra Registrado" + CHR(13)+;
"C贸digo: "+BANCO->BCO_CODIGO,"Inclusi贸n Inv谩lida de Usuario")
RETURN(.F.)
ENDIF

BANCO->(DBGOTO(nRegAnt))

RETURN(.T.)


Como ven, deberia indicar que el codigo ya existe, pero no es asi.

Agradeciendoo de antemano.

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Validar un Get
Posted: Mon Feb 14, 2011 02:27 AM
Prueba de esta manera a ver si te sirve.....

cCODANT := BANCO->BCO_CODIGO
@ 1,1 GET oCodigo VAR CODBCO OF oDlg SIZE 40, 10 ;
VALID CHKBANCO(CODBCO, cCODant)



STATIC FUNCTION CHKBANCO( COD, cCODant)
LOCAL nRegAnt := BANCO->(RECNO())
BANCO->( GOTOP( ) )

IF BANCO->(DBSEEK( COD ))
MsgBeep()
MsgStop("El C贸digo del Banco ya se encuentra Registrado" + CHR(13)+;
"C贸digo: "+BANCO->BCO_CODIGO,"Inclusi贸n Inv谩lida de Usuario")
RETURN(.F.)
ENDIF

BANCO->(DBGOTO(nRegAnt))

RETURN(.T.)

=====>

Bayron Landaverry
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Validar un Get
Posted: Mon Feb 14, 2011 02:32 AM

Bayron

Me arroja lo siguiente

Error. Unresolved external '_HB_FUN_GOTOP' referenced from

??

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Validar un Get
Posted: Mon Feb 14, 2011 02:34 AM
Mejor de esta manera para que tengas un ejemplo completo....

Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "XBrowse.ch"

STATIC CODBCO, NOMBCO, CTABCO, CTACTA, GRA, NREG, oDlg, oBrw
STATIC TNUEVO := .T.

FUNCTION MAIN()
聽 聽 LOCAL oWnd, oBar, oMeter, oText

聽 聽 SET Deleted On
聽 聽 SET _3DLOOK ON

聽 聽 lMkDir("DATA")

聽 聽 IF .NOT. FILE ("DATA\BANCO.DBF")
聽 聽 聽 聽 DbCreate( "DATA\BANCO", { { "BCO_CODIGO", "C", 12, 0 },;
聽 聽 聽 聽 聽 聽 { "BCO_DESCRI", "C", 30, 0 },;
聽 聽 聽 聽 聽 聽 { "BCO_CUENTA", "C", 20, 0 } } )

聽 聽 ENDIF

聽 聽 USE DATA\BANCO ALIAS BCO NEW
聽 聽 index on BCO->BCO_CODIGO to DATA\BANCO

聽 聽 DEFINE WINDOW oWnd

聽 聽 聽 聽 DEFINE BUTTONBAR oBar OF oWnd

聽 聽 聽 聽 DEFINE BUTTON OF oBar ACTION CBANCO(.T.)
聽 聽 聽 聽 DEFINE BUTTON OF oBar ACTION CBANCO(.F.)

聽 聽 聽 聽 oBrw := TXBrowse():New( oWnd )
聽 聽 聽 聽 oBrw:blDblClick := { | nRow, nCol, nKey | CBANCO(.F.)}
聽 聽 聽 聽 oBrw:bKeyDown := { | nKey, nFlags | CBANCO( .F., oBrw )}

聽 聽 聽 聽 oBrw:SetRDD()
聽 聽 聽 聽 oBrw:CreateFromCode()
聽 聽 聽 聽 oWnd:oClient := oBrw

聽 聽 ACTIVATE WINDOW oWnd ;
聽 聽 聽 聽 ON INIT oBrw:SetFocus()

RETURN (.T.)

FUNCTION CBANCO(TNUEVO)
聽 聽 STATIC oDlg, oGet, oCodigo, oNombre, oNumero, oCuenta, oBtn

聽 聽 SetGetColorFocus() // change GET colors when focused

聽 聽 SET 3DLook OFF

聽 聽 BCONUEVO(TNUEVO)

聽 聽 DEFINE DIALOG oDlg ;
聽 聽 聽 聽 TITLE IF(TNUEVO, "Incluir Cuenta Bancaria","Modificar Cuenta Bancaria")
聽 聽 聽 聽 
聽 聽 聽 聽 cCODANT := BCO->BCO_CODIGO

聽 聽 聽 聽 @ 1,1 GET oCodigo VAR CODBCO OF oDlg SIZE 40, 10 VALID CHKBANCO(CODBCO, cCODant)
聽 聽 聽 聽 @ 2,1 GET oNombre VAR NOMBCO OF oDlg SIZE 40, 10
聽 聽 聽 聽 @ 3,1 GET oNumero VAR CTABCO OF oDlg SIZE 40, 10

聽 聽 聽 聽 @ 3.3,1 BUTTON oBtn PROMPT "&Grabar" OF oDlg ;
聽 聽 聽 聽 聽 聽 ACTION (GRABA(.T., TNUEVO), oDlg:END(), oBrw:Refresh())

聽 聽 聽 聽 @ 3.3,10 BUTTON oBtn PROMPT "&Salir" OF oDlg ;
聽 聽 聽 聽 聽 聽 ACTION oDlg:END()

聽 聽 ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

STATIC FUNCTION BCONUEVO(TNUEVO)

聽 聽 IF TNUEVO
聽 聽 聽 聽 NREG:=BCO->(RECNO())
聽 聽 聽 聽 CODBCO := SPACE(12)
聽 聽 聽 聽 NOMBCO := SPACE(30)
聽 聽 聽 聽 CTABCO := SPACE(30)

聽 聽 ELSE
聽 聽 
聽 聽 聽 聽 NREG:=BCO->(RECNO())
聽 聽 聽 聽 CODBCO := BCO->BCO_CODIGO
聽 聽 聽 聽 NOMBCO := BCO->BCO_DESCRI
聽 聽 聽 聽 CTABCO := BCO->BCO_CUENTA
聽 聽 ENDIF

RETURN (.T.)

STATIC FUNCTION GRABA(GRA, TNUEVO)

聽 聽 IF GRA
聽 聽 聽 聽 IF TNUEVO
聽 聽 聽 聽 聽 聽 BCO->(DBGOTO(NREG))
聽 聽 聽 聽 聽 聽 BCO->(DBAPPEND())

聽 聽 聽 聽 ENDIF

聽 聽 聽 聽 BCO->(RLOCK())
聽 聽 聽 聽 BCO->BCO_CODIGO := CODBCO
聽 聽 聽 聽 BCO->BCO_DESCRI := NOMBCO
聽 聽 聽 聽 BCO->BCO_CUENTA := CTABCO
聽 聽 聽 聽 BCO->(DBUNLOCK())

聽 聽 ENDIF

RETURN (.T.)

STATIC FUNCTION CHKBANCO( COD, cCODant)
LOCAL nRegAnt := BCO->(RECNO())
BCO->( dbGOTOP( ) ) 

IF BCO->(DBSEEK( COD ))
MsgBeep()
MsgStop("El C贸digo del Banco ya se encuentra Registrado" + CHR(13)+;
"C贸digo: "+BCO->BCO_CODIGO,"Inclusi贸n Inv谩lida de Usuario")
RETURN(.F.)
ENDIF

BCO->(DBGOTO(nRegAnt))

RETURN(.T.)

=====>

Bayron Landaverry
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Validar un Get
Posted: Mon Feb 14, 2011 02:35 AM

Funciono cambiando solo esto

VALID CHKBANCO(CODBCO, cCODant)

Mantuve la funcion inicial y valido. Ahora como logro limpiar el campo para agregar el nuevo registro y asi no tenga que hacerlo el usuario??

Atento a tus valiosos comentarios

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Continue the discussion