Re: Llenar GETS desde xbrowse (SOLUCIONADO)
- 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)
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.)
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
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Re: Llenar GETS desde xbrowse
Debes asignar el valor de:
CODBCO := BCO->BCO_CODIGO
...etc
Antes de pintar el Get.
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...
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...
- 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
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.)
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
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Re: Llenar GETS desde xbrowse
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.
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
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Re: Llenar GETS desde xbrowse
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...
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...
- 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
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
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
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
- 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
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
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
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
- 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
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.)
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
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Re: Llenar GETS desde xbrowse
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.)
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
- 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
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
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: Llenar GETS desde xbrowse
Compuin
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
ARTU01
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
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
- 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
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.)
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
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Re: Llenar GETS desde xbrowse
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...
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...
- 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
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](http://img806.imageshack.us/img806/6605/modificar.jpg)
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
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Re: Llenar GETS desde xbrowse
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...
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...