Re: Llenar GETS desde xbrowse (SOLUCIONADO)

User avatar
Compuin
Posts: 1250
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada
Has thanked: 7 times
Been thanked: 3 times

Re: Llenar GETS desde xbrowse (SOLUCIONADO)

Post by Compuin »

Buenas tardes amigos,

Tengo un browse que me permite incluir registros en un DBF. Al hacer Doble Click me deberia mostrar los datos del registro en un dialogo llenando los Gets del mismo. Solo me presenta el Get vacio.

Agradezco cualquier aporte ya que no veo el error que este comentiendo

Gracias de antemano

Aca el codigo que uso

#include "FiveWin.ch"
#include "XBrowse.ch"

STATIC CODBCO, NOMBCO, CTABCO, CTACTA, GRA
STATIC lAceptar := .F.

FUNCTION MAIN()
LOCAL oWnd, oBar, oBrw, oDlg, oMeter, oText
CODBCO := SPACE(12)
NOMBCO := SPACE(30)
CTABCO := SPACE(30)

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

DEFINE WINDOW oWnd

DEFINE BUTTONBAR oBar OF oWnd

DEFINE BUTTON OF oBar ACTION CBANCO()

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

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

ACTIVATE WINDOW oWnd ;
ON INIT oBrw:SetFocus()

RETURN NIL

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

SET _3DLOOK ON

SetGetColorFocus() // change GET colors when focused

DEFINE DIALOG oDlg ;

@ 1,1 GET oCodigo VAR CODBCO OF oDlg SIZE 40, 10
@ 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)

@ 3.3,8 BUTTON oBtn PROMPT "&Modificar" OF oDlg ;
ACTION GRABA(.F., TNUEVO)

ACTIVATE DIALOG oDlg CENTERED

RETURN (lAceptar)

STATIC FUNCTION BCONUEVO(TNUEVO)

IF TNUEVO
CODBCO := BCO->BCO_CODIGO
NOMBCO := BCO->BCO_DESCRI
CTABCO := BCO->BCO_CUENTA
ENDIF

IF !TNUEVO

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

msginfo("Mi Mensaje...!")

RETURN (.T.)

STATIC FUNCTION GRABA(TNUEVO)

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

msginfo("Mi Mensaje...!")

RETURN (.T.)
Last edited by Compuin on Mon Feb 14, 2011 12:41 am, edited 1 time in total.
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
User avatar
Bayron
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Llenar GETS desde xbrowse

Post by Bayron »

Debes asignar el valor de:

CODBCO := BCO->BCO_CODIGO
...etc

Antes de pintar el Get.
=====>

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

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
User avatar
Compuin
Posts: 1250
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada
Has thanked: 7 times
Been thanked: 3 times

Re: Llenar GETS desde xbrowse

Post by Compuin »

Esta parte del codigo tiene lo sugerido por ti

STATIC FUNCTION BCONUEVO(TNUEVO)

IF !TNUEVO

CODBCO := BCO->BCO_CODIGO
NOMBCO := BCO->BCO_DESCRI
CTABCO := BCO->BCO_CUENTA
ENDIF

IF TNUEVO

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

msginfo("Mi Mensaje...!")

RETURN (.T.)
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
User avatar
Pedro
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Llenar GETS desde xbrowse

Post by Pedro »

Hola compuin
Veamos
1.- a la función CBANCO, tú envías dos parámetros, el browse y una variable lógica, pero solo recibes uno en ella, debes poner los dos parámetros el browse y la variable lógica que te indicará si es nuevo o modificar.
2.- en esa función los campos están vacíos y no llamas desde ningún sitio a la función BCONUEVO para rellenarlos
3.- en la función BCONUEVO, si es modificación, estas asignando a la tabla valores vacíos ya que las variables que usas están vacías. Se supone que aquí debes rellenar las variables con los valores de la tabla si es modificación y con valores vacíos si es un alta nueva.

STATIC FUNCTION BCONUEVO(TNUEVO)

IF TNUEVO -----------> si es nuevo
BCO->(dbAppend()) -------------> registro nuevo
CODBCO := BCO->BCO_CODIGO------>valores vacíos
NOMBCO := BCO->BCO_DESCRI
CTABCO := BCO->BCO_CUENTA
ENDIF
IF !TNUEVO-----------> si no es nuevo

CODBCO := BCO->BCO_CODIGO --------> tomamos los valores del campo
NOMBCO := BCO->BCO_DESCRI
CTABCO := BCO->BCO_CUENTA

ENDIF

4.- en la función graba tu haces un registro nuevo sí o sí, ya que haces el dbappend sin más, no haces modificación del registro que modificas, si no que grabas uno nuevo.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Bayron
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Llenar GETS desde xbrowse

Post by Bayron »

Compuin wrote:Esta parte del codigo tiene lo sugerido por ti


Correcto, pero esa funcion BCONUEVO(TNUEVO) no es leida sino hasta que presionas el BOTON Modificar

En todo caso, deberias de llamar la funcion al activar el Dialogo

Code: Select all | Expand

ACTIVATE DIALOG oDlg CENTERED;
     ON INIT ( BCONUEVO(TNUEVO) )


Si eso no funciona, hazlo asi:

Code: Select all | Expand

ACTIVATE DIALOG oDlg CENTERED;
     ON INIT ( BCONUEVO(TNUEVO), oCodigo:Refresh(), oNombre:Refresh(), oNumero:Refresh() )


Recuerda que la variable CODBCO no tiene nada que ver con el campo COD->CODBCO
=====>

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

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
User avatar
Compuin
Posts: 1250
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada
Has thanked: 7 times
Been thanked: 3 times

Re: Llenar GETS desde xbrowse

Post by Compuin »

Gracias por sus aportes,

Lo que busco es lo siguiente:

1.- En la Barra de Botones al presionar el Boton, me debe llamar el dialogo para agregar un nuevo registro. Hasta alli lo hace todo OK.

2.- La idea es que al hacer Doble Click en el browser, dicho registro se muestre en el dialogo para ser modificado cargado los campos en los Get, luego el boton del dialogo permitira grabarlo

Atento a sus comentarios
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
User avatar
Compuin
Posts: 1250
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada
Has thanked: 7 times
Been thanked: 3 times

Re: Llenar GETS desde xbrowse

Post by Compuin »

Hice modificaciones pero al ejecutar Doble click en el registro del browse que quiero modificar, no ocurre absolutamente nada, es decir, no muestra el dialogo que permita modificar

Aca el codigo:

#include "FiveWin.ch"
#include "XBrowse.ch"

STATIC CODBCO, NOMBCO, CTABCO, CTACTA, GRA
STATIC TNUEVO := .F.

FUNCTION MAIN()
LOCAL oWnd, oBar, oBrw, oDlg, oMeter, oText
CODBCO := SPACE(12)
NOMBCO := SPACE(30)
CTABCO := SPACE(30)

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

DEFINE WINDOW oWnd

DEFINE BUTTONBAR oBar OF oWnd

DEFINE BUTTON OF oBar ACTION CBANCO(oBrw, TNUEVO)

oBrw := TXBrowse():New( oWnd )
oBrw:blDblClick := { | nRow, nCol, nKey | BCONUEVO(TNUEVO)}
oBrw:bKeyDown := { | nKey, nFlags | CBANCO(oBrw)}

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

ACTIVATE WINDOW oWnd ;
ON INIT oBrw:SetFocus()

RETURN (.T.)

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

SET _3DLOOK ON

SetGetColorFocus() // change GET colors when focused

DEFINE DIALOG oDlg ;

@ 1,1 GET oCodigo VAR CODBCO OF oDlg SIZE 40, 10
@ 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)

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

ACTIVATE DIALOG oDlg CENTERED

RETURN (TNUEVO)

STATIC FUNCTION BCONUEVO(TNUEVO)

IF TNUEVO
//BCO->(DBAPPEND())
CODBCO := BCO->BCO_CODIGO
NOMBCO := BCO->BCO_DESCRI
CTABCO := BCO->BCO_CUENTA
ENDIF

IF !TNUEVO

CODBCO := BCO->BCO_CODIGO
NOMBCO := BCO->BCO_DESCRI
CTABCO := BCO->BCO_CUENTA

ENDIF

msginfo("Mi Mensaje...!")

RETURN (.T.)

STATIC FUNCTION GRABA(TNUEVO)

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

msginfo("Mi Mensaje...!")


Atento a sus comentarios
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
User avatar
Compuin
Posts: 1250
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada
Has thanked: 7 times
Been thanked: 3 times

Re: Llenar GETS desde xbrowse

Post by Compuin »

Amigos,

Ya pudimos avanzar con el llamado y llenado de los Gets desde el browser. Ahora, una vez cambiado los campos del registro, como actualizo el mismo, ya que la funcion DBAppend() siempre me va a agregar el mismo como un registro nuevo???

Adicionalmente, cuando le doy al boton incluir en el ButtonBar, me trae los valores del registro en el cual estoy posicionado, cuando deberia estar todos los Gets en blanco.

Atento a sus comentarios, aca les dejo el codigo

#include "FiveWin.ch"
#include "XBrowse.ch"

STATIC CODBCO, NOMBCO, CTABCO, CTACTA, GRA
STATIC TNUEVO := .F.

FUNCTION MAIN()
LOCAL oWnd, oBar, oBrw, oDlg, oMeter, oText

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

DEFINE WINDOW oWnd

DEFINE BUTTONBAR oBar OF oWnd

DEFINE BUTTON OF oBar ACTION CBANCO(TNUEVO)

oBrw := TXBrowse():New( oWnd )
oBrw:blDblClick := { | nRow, nCol, nKey | CBANCO(TNUEVO, oBrw )}
oBrw:bKeyDown := { | nKey, nFlags | CBANCO(TNUEVO, 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

SET _3DLOOK ON

SetGetColorFocus() // change GET colors when focused

IIF(TNUEVO, BCONUEVO(.T.), BCONUEVO(.F.))

DEFINE DIALOG oDlg ;

@ 1,1 GET oCodigo VAR CODBCO OF oDlg SIZE 40, 10
@ 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)

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

ACTIVATE DIALOG oDlg CENTERED

RETURN (TNUEVO)


STATIC FUNCTION BCONUEVO(TNUEVO)

IF TNUEVO

CODBCO := SPACE(12)
NOMBCO := SPACE(30)
CTABCO := SPACE(30)

ENDIF

IF !TNUEVO

CODBCO := BCO->BCO_CODIGO
NOMBCO := BCO->BCO_DESCRI
CTABCO := BCO->BCO_CUENTA

ENDIF

RETURN (.T.)

STATIC FUNCTION GRABA(TNUEVO)

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

msginfo("Mi Mensaje...!")

RETURN (.T.)
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
artu01
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Llenar GETS desde xbrowse

Post by artu01 »

compuin no lo he probado pero intenta hacerlo asi



DEFINE WINDOW oWnd

DEFINE BUTTONBAR oBar OF oWnd

DEFINE BUTTON OF oBar ACTION CBANCO(.t.)

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

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

ACTIVATE WINDOW oWnd ;
ON INIT oBrw:SetFocus()

RETURN NIL

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

SET _3DLOOK ON

SetGetColorFocus() // change GET colors when focused
IIF(TNUEVO, BCONUEVO(tnuevo), BCONUEVO(tnuevo))


DEFINE DIALOG oDlg ;

@ 1,1 GET oCodigo VAR CODBCO OF oDlg SIZE 40, 10
@ 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(TNUEVO)

@ 3.3,8 BUTTON oBtn PROMPT "&Modificar" OF oDlg ;
ACTION GRABA(.F., TNUEVO)

ACTIVATE DIALOG oDlg CENTERED

RETURN (lAceptar)

STATIC FUNCTION BCONUEVO(TNUEVO)

IF TNUEVO

CODBCO := SPACE(12)
NOMBCO := SPACE(30)
CTABCO := SPACE(30)

ENDIF

IF !TNUEVO

CODBCO := BCO->BCO_CODIGO
NOMBCO := BCO->BCO_DESCRI
CTABCO := BCO->BCO_CUENTA

ENDIF

RETURN (.T.)

STATIC FUNCTION GRABA(TNUEVO)
if tnuevo
BCO->(DBAPPEND())
else
BCO->(RLOCK())
endif
BCO->BCO_CODIGO := CODBCO
BCO->BCO_DESCRI := NOMBCO
BCO->BCO_CUENTA := CTABCO
BCO->(DBUNLOCK())

msginfo("Mi Mensaje...!")

RETURN (.T.)
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
User avatar
Compuin
Posts: 1250
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada
Has thanked: 7 times
Been thanked: 3 times

Re: Llenar GETS desde xbrowse

Post by Compuin »

artu01 wrote:compuin no lo he probado pero intenta hacerlo asi


Artu01:

Sigue agregando un registro mas. No logra modificar el registro seleccionado
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Llenar GETS desde xbrowse

Post by Daniel Garcia-Gil »

Compuin

Compuin wrote:Sigue agregando un registro mas. No logra modificar el registro seleccionado

si te esta agregando un registro mas es porque estas haciendo un Append Blank (dbappend)... lo que significa que debes revisar tu codigo pues el problema esta en la logica, todos los ejemplo aca mostrados funcionan bien, verifica el proceso cuando modificas o agregas un registro

si la accion es un registro nuevo.. haces el append blank
si la accion es modificar NO HACES el append blank

mira el ejemplo que te pode Pedro y el Ejmeplo que te pone Artu01

mientras tu en la funcion grabar SIEMPRE agregas un registro en blanco (DBAPPEND)

PEDRO
Pedro wrote:IF TNUEVO -----------> si es nuevo
BCO->(dbAppend()) -------------> registro nuevo
CODBCO := BCO->BCO_CODIGO------>valores vacíos
NOMBCO := BCO->BCO_DESCRI
CTABCO := BCO->BCO_CUENTA
ENDIF
IF !TNUEVO-----------> si no es nuevo

CODBCO := BCO->BCO_CODIGO --------> tomamos los valores del campo
NOMBCO := BCO->BCO_DESCRI
CTABCO := BCO->BCO_CUENTA

ENDIF


ARTU01
artu01 wrote:if tnuevo
BCO->(DBAPPEND())
else
BCO->(RLOCK())
endif
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
Compuin
Posts: 1250
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada
Has thanked: 7 times
Been thanked: 3 times

Re: Llenar GETS desde xbrowse

Post by Compuin »

Pues no logro hacer que grabe un registro modificado, siempre toma los valores de uno pero lo agrega como nuevo. Lo he condicionado a leer si es un registro nuevo o no y aun asi no logro verlo.

Aca el codigo completo con las modificaciones sugeridas

#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

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 )}
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

IIF(TNUEVO, BCONUEVO(.T.), BCONUEVO(.F.))

DEFINE DIALOG oDlg ;
TITLE IF(TNUEVO, "Incluir Cuenta Bancaria","Modificar Cuenta Bancaria")

@ 1,1 GET oCodigo VAR CODBCO OF oDlg SIZE 40, 10
@ 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 (TNUEVO)

STATIC FUNCTION BCONUEVO(TNUEVO)

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

IF !TNUEVO
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))
ENDIF

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

ENDIF

RETURN (.T.)
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
User avatar
Bayron
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Llenar GETS desde xbrowse

Post by Bayron »

De esta manera funciona para mi....

Code: Select all | Expand

#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

    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 )}
        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")

        @ 1,1 GET oCodigo VAR CODBCO OF oDlg SIZE 40, 10
        @ 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))
        ENDIF

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

    ENDIF

RETURN (.T.)
=====>

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

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
User avatar
Compuin
Posts: 1250
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada
Has thanked: 7 times
Been thanked: 3 times

Re: Llenar GETS desde xbrowse

Post by Compuin »

Bayron wrote:De esta manera funciona para mi....

Code: Select all | Expand



#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

    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 )}
        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")

        @ 1,1 GET oCodigo VAR CODBCO OF oDlg SIZE 40, 10
        @ 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))
        ENDIF

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

    ENDIF

RETURN (.T.)


Corri el ejemplo que me enviates,

Pero me genera el registro nuevamente....anexo imagen

Image

Uploaded with ImageShack.us
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
User avatar
Bayron
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Llenar GETS desde xbrowse

Post by Bayron »

Sip, estoy verificando...
=====>

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

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

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