FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Devolver Valor a una Columna del Xbrowse Antes de Validar
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Devolver Valor a una Columna del Xbrowse Antes de Validar
Posted: Wed Jun 01, 2011 10:25 PM
Amigos del foro tengan buen dia:

Estoy capturando datos en un xbrowse editable, defino la columna de la siguiente manera:

Code (fw): Select all Collapse
   oCol = oLamcla:oBrwCapt:AddCol()
   oCol:bStrData     = { || d_captu->Cuent }
   oCol:cHeader      = "Cuenta"
   oCol:nEditType    = EDIT_GET_BUTTON //EDIT_GET
   oCol:bEditValid   = { | oGet1, oCol | pValCapCue(oGet1,oCol,oSay1) }
   oCol:bEditBlock   = { | oGet1, oCol | pBusCapCue(oGet1,oCol) }
   oCol:bOnPostEdit  = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oLamcla:oBrwCapt:Refresh() ),), If( nKey == VK_RETURN, d_captu->Cuent := xVal,) }
   oCol:nWidth       = 75


Al hacer clik sobre el boton se muestra un cuadro de dialgo para seleccionar la cuenta.



Uploaded with ImageShack.us

La pregunta es la siguiente ¿Como hago para devolver el valor al GET del xbrowse?, en este momento estoy devolviendo el valor a la dbf y refresco el xbrowse, pero estoy teniendo problemas al momento de validar los datos.

Espero haberme hecho entender de antemano gracias
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM
Re: Devolver Valor a un Get del Xbrowse
Posted: Thu Jun 02, 2011 01:19 PM
leandro:

creo que aqui puede ser:

Code (fw): Select all Collapse
// original
   oCol:bOnPostEdit  = { | oCol, [b]xVal[/b], nKey | If( RecCount() == 0, ( DbAppend(), oLamcla:oBrwCapt:Refresh() ),), If( nKey == VK_RETURN, d_captu->Cuent := [b]xVal[/b],) }

// lo que creo que puede resultar...

   oCol:bOnPostEdit  = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oLamcla:oBrwCapt:Refresh() ),), If( nKey == VK_RETURN, ( d_captu->Cuent := cuenta->codigo, oLamcla:oBrwCapt:Refresh()),) }


asumo de que la referencia d_captu->cuent es donde almacenaras el resultado de la búsqueda en el otro xbrowse.
al hacer referencia xVal en el codeblock, evalúa el campo original y siempre te va a retornar blanco.

pero al asignarle el valor del campo directamente, que asumo que es el código del otro xbrowse, que lo he llamado cuenta->codigo, debería de funcionar bien al hacer un refresh(), como te lo he referenciado.

espero haberte ayudado.

Saludos
SkyPe: armando.lagunas@hotmail.com

Mail: armando.lagunas@gmail.com
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Devolver Valor a un Get del Xbrowse
Posted: Thu Jun 02, 2011 02:56 PM
Gracias Armando por Contestar, pero creo q no supe hacer la pregunta...

Bueno voy a hacer la pregunta explicando como lo hacia con BTNGET Antes de intentar capturar los datos directo en el xbrowse. Definia un cuadro de dialogo con varios BTNGET, si el usario no conoce el codigo de la cuenta contable hacia click sobre el boton del GET y se abre un cuadro de dialogo en donde puede seleccionar la cuenta; despues de Seleccionar la cuenta le devolvia el valor a la variable del BTNGET y posteriormente procedia con la validación.

Así definia el BTNGET
Code (fw): Select all Collapse
 REDEFINE BTNGET oCta VAR vCta ID 4006 OF oCuadr1 RESOURCE "Bbusc" UPDATE VALID (oLamcla:valicap(13),oLamcla:vSVCom) ACTION oLamcla:busqueda(13)




Después que el usuario seleccionaba la cuenta le devolvia el valor a la variable del BTNGET de la siguiente manera:

Code (fw): Select all Collapse
vCta := oConsBU:Fields("p_cuenta"):Value
oCta :refresh()

y listo quedaba actualizada la variable vCta del BTNGET antes de proceder con la validacion. Lo que quiero hacer es lo mismo pero directo sobre el xbrowse, ¿Se puede hacer?
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Re: Devolver Valor a una Columna del Xbrowse Antes de Validar
Posted: Thu Jun 02, 2011 03:28 PM

Leandro yo lo hago asi pero con array:

oBrw:aCols[1]:cHeader := 'Codigo'
oBrw:aCols[1]:cEditPicture := '!!!!!!!!!!!!!'
oBrw:aCols[1]:bClrEdit := oBrw:bClrStd
oBrw:aCols[1]:bOnPostEdit := { | oCol, xVal, nKey | If( nKey == VK_RETURN,"",),oBrw:GoRight(),oBrw:GoRight() }
oBrw:aCols[1]:nEditType := EDIT_GET_BUTTON
oBrw:aCols[1]:bEditValid := { | oGet, oCol | BuscarProd( oGet,oCol,oBrw,aDatos,oDlg1 ) }
oBrw:aCols[1]:bEditBlock := {|| LeerCodigo(oDlg1,oBrw,aDatos),oBrw:GoRight(),oBrw:GoRight() }
oBrw:aCols[1]:nDataStrAlign:= AL_LEFT
oBrw:aCols[1]:nHeadStrAlign:= AL_CENTER
oBrw:aCols[1]:bF2 := {|| LeerCodigo(oDlg1,oBrw,aDatos),oBrw:GoRight(),oBrw:GoRight() }
oBrw:aCols[1]:nWidth := 100
oBrw:aCols[1]:bLClickHeader:= {|r,c,f,o|LeerCodigo(oDlg1,oBrw,aDatos),oBrw:GoRight(),oBrw:GoRight() }
oBrw:aCols[1]:oHeaderFont := oFnt

STATIC FUNCTION BuscarProd( oGet,oCol,oBrw,aDatos,oDlg )
*-----------------------------------
Local m_codi :=oGet:Value
Local oDlg1
Local unicompra:=0
LOCAL aGets:= Array(10)
Local xMa_Comp,xMa_Flet,xMa_Desc1,xMa_Desc2,xMa_Desc3,xMa_Pcom,xExi_Suc
xMa_Comp :=0
xMa_Flet :=0
xMa_Desc1 :=0
xMa_Desc2 :=0
xMa_Desc3 :=0
xMa_Pcom :=0

If oGet:Value#" "

xExi_Suc:=oServer:Query("SELECT * FROM exi_suc Where ma_arti='"+AllTrim(m_codi)+"' ORDER BY ma_arti")
xExi_Suc:GoTop()
If (xExi_Suc:Reccount) == 0
MsgAlert( "Codigo de Producto "+AllTrim(m_codi)+ " no Existe",oApp:cVersion)
SQL CLOSE xExi_Suc
Return .F.
Else
aDatos[oBrw:nArrayAt,1]:=SQLField(xExi_Suc,"ma_arti")
aDatos[oBrw:nArrayAt,2]:=SQLField(xExi_Suc,"ma_des1")
uniCompra:=SQLField(xExi_Suc,"ma_con_com")
If unicompra=0 //Por Defecto cuando es cero lo toma como uno
aDatos[oBrw:nat,9]:=1
Else
aDatos[oBrw:nat,9]:=uniCompra
Endif
oBrw:GoRight()
oBrw:GoLeft()
Endif
SQL CLOSE xExi_Suc
Else
m_Codi:=LeerCodigo(oDlg,oBrw,aDatos)
If ! EMPTY(m_codi)
xExi_Suc:=oServer:Query("SELECT * FROM exi_suc Where ma_arti='"+AllTrim(m_codi)+"' ORDER BY ma_arti")
xExi_Suc:GoTop()

 If (xExi_Suc:Reccount) #0
       aDatos[oBrw:nArrayAt,1]:=m_codi
 Endif
 SQL CLOSE xExi_Suc

Endif
Endif
oBrw: SETFOCUS()
RETURN .T.

todo va aca en donde cargo el Get

Saludos

Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Devolver Valor a una Columna del Xbrowse Antes de Validar
Posted: Thu Jun 02, 2011 04:13 PM
JBrita Gracias por contestar, eso que haces con el ARRAY yo lo hago con la dbf y me funciona perfecto cuando es un registro nuevo, el problema es cuando necesito modificar los datos, por eso necesito devolverle el valor de la variable a la columna (GET).

Pero Leyendo tu codigo me encontre con esto.

Code (fw): Select all Collapse
valor:=oGet:Value()


La idea es hacer esto pero a la inversa, así:

Code (fw): Select all Collapse
oGet:Value():=valor


Pero no funciona :-) me arroja el siguiente error:

Code (fw): Select all Collapse
Descripción del Error:
___________________________________________________

Error BASE/1005
Class: 'NUMERIC' has no property: VALUE
   Args:
     [   1] = N   3932161
     [   2] = C   111005


Saludos
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Devolver Valor a una Columna del Xbrowse Antes de Validar
Posted: Thu Jun 02, 2011 04:26 PM

Leandro...

El objeto GET no se crea sino hasta que se activa el modo de edicion, cuando sales de modo edicion se libera el objeto GET, cada celda lee directamente del dataset que tengas asignado, si trabajas directamente con una DBF debes cambiar el valor en tu registro para que se muestra en el xbrowse...
de igual forma si estas trabajando con algun otro dataset (arrays, recordet, tmysql, dolphin) debes actualizar el valor directamente desde la fuente del mismo

Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Devolver Valor a una Columna del Xbrowse Antes de Validar
Posted: Thu Jun 02, 2011 05:10 PM

Ok daniel mas claro no me pudo haber quedado. Gracias

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 694
Joined: Fri Oct 07, 2005 06:58 AM
Re: Devolver Valor a una Columna del Xbrowse Antes de Validar
Posted: Fri Jun 03, 2011 08:41 AM
Si no he entendido mal, al pulsar en el botón del get muestras un cuadro de dialogo con las cuentas
Code (fw): Select all Collapse
 oCol:bEditBlock   = { | oGet1, oCol | pBusCapCue(oGet1,oCol) }

pBusCapCue llama a ese cuadro de dialogo


1º - Para grabar un valor en un get se utiliza
Code (fw): Select all Collapse
oGet:cText( valor )


2º - Para el caso que cuentas, yo lo que hago es que la función devuelva el valor que quiero grabar en el get
Haz que pBusCapCue retorne el valor que quieres devolver al get.
Un saludo

Fernando González Diez

ALSIS Sistemas Informáticos

Continue the discussion