FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Re: Llenar GETS desde xbrowse (SOLUCIONADO)
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Llenar GETS desde xbrowse (SOLUCIONADO)
Posted: Sun Feb 13, 2011 07: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.)

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Llenar GETS desde xbrowse
Posted: Sun Feb 13, 2011 07:30 PM
Debes asignar el valor de:

CODBCO := BCO->BCO_CODIGO
...etc

Antes de pintar el Get.

=====>

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: Llenar GETS desde xbrowse
Posted: Sun Feb 13, 2011 07: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 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Llenar GETS desde xbrowse
Posted: Sun Feb 13, 2011 07: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
Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Llenar GETS desde xbrowse
Posted: Sun Feb 13, 2011 07: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 (fw): Select all Collapse
ACTIVATE DIALOG oDlg CENTERED;
聽 聽 聽ON INIT (聽BCONUEVO(TNUEVO) )


Si eso no funciona, hazlo asi:

Code (fw): Select all Collapse
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
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: Llenar GETS desde xbrowse
Posted: Sun Feb 13, 2011 08: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 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Llenar GETS desde xbrowse
Posted: Sun Feb 13, 2011 08: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 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Llenar GETS desde xbrowse
Posted: Sun Feb 13, 2011 09: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 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 400
Joined: Fri May 11, 2007 08:20 PM
Re: Llenar GETS desde xbrowse
Posted: Sun Feb 13, 2011 09: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
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Llenar GETS desde xbrowse
Posted: 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 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Llenar GETS desde xbrowse
Posted: 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
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Llenar GETS desde xbrowse
Posted: 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 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Llenar GETS desde xbrowse
Posted: Mon Feb 14, 2011 12:17 AM
De esta manera funciona para mi....

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

聽 聽 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
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: Llenar GETS desde xbrowse
Posted: Mon Feb 14, 2011 12:22 AM
Bayron wrote:De esta manera funciona para mi....

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

聽 聽 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



Uploaded with ImageShack.us

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Llenar GETS desde xbrowse
Posted: Mon Feb 14, 2011 12:26 AM

Sip, estoy verificando...

=====>

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...