Re: Llenar GETS desde xbrowse (SOLUCIONADO)

Re: Llenar GETS desde xbrowse (SOLUCIONADO)

Postby Compuin » Sun Feb 13, 2011 7:05 pm

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
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Llenar GETS desde xbrowse

Postby Bayron » Sun Feb 13, 2011 7:30 pm

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
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Llenar GETS desde xbrowse

Postby Compuin » Sun Feb 13, 2011 7:39 pm

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
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Llenar GETS desde xbrowse

Postby Pedro » Sun Feb 13, 2011 7:40 pm

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
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Llenar GETS desde xbrowse

Postby Bayron » Sun Feb 13, 2011 7:51 pm

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 view  RUN
ACTIVATE DIALOG oDlg CENTERED;
     ON INIT ( BCONUEVO(TNUEVO) )


Si eso no funciona, hazlo asi:

Code: Select all  Expand view  RUN
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
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Llenar GETS desde xbrowse

Postby Compuin » Sun Feb 13, 2011 8:07 pm

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
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Llenar GETS desde xbrowse

Postby Compuin » Sun Feb 13, 2011 8:24 pm

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
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Llenar GETS desde xbrowse

Postby Compuin » Sun Feb 13, 2011 9:40 pm

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
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Llenar GETS desde xbrowse

Postby artu01 » Sun Feb 13, 2011 9:59 pm

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
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Llenar GETS desde xbrowse

Postby Compuin » Sun Feb 13, 2011 10:09 pm

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
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Llenar GETS desde xbrowse

Postby Daniel Garcia-Gil » Sun Feb 13, 2011 11:03 pm

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
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Llenar GETS desde xbrowse

Postby Compuin » Sun Feb 13, 2011 11:55 pm

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
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Llenar GETS desde xbrowse

Postby Bayron » Mon Feb 14, 2011 12:17 am

De esta manera funciona para mi....

Code: Select all  Expand view  RUN
#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
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Llenar GETS desde xbrowse

Postby Compuin » Mon Feb 14, 2011 12:22 am

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

Code: Select all  Expand view  RUN


#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
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Llenar GETS desde xbrowse

Postby Bayron » Mon Feb 14, 2011 12:26 am

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...
User avatar
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 83 guests