Devolver Valor a una Columna del Xbrowse Antes de Validar

Devolver Valor a una Columna del Xbrowse Antes de Validar

Postby leandro » 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: Select all  Expand view
  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.

Image

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
Last edited by leandro on Thu Jun 02, 2011 2:57 pm, edited 2 times in total.
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1482
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Devolver Valor a un Get del Xbrowse

Postby armando.lagunas » Thu Jun 02, 2011 1:19 pm

leandro:

creo que aqui puede ser:

Code: Select all  Expand view

// 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
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: Devolver Valor a un Get del Xbrowse

Postby leandro » Thu Jun 02, 2011 2: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: Select all  Expand view
REDEFINE BTNGET oCta VAR vCta ID 4006 OF oCuadr1 RESOURCE "Bbusc" UPDATE VALID (oLamcla:valicap(13),oLamcla:vSVCom) ACTION oLamcla:busqueda(13)


Image

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

Code: Select all  Expand view

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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1482
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Devolver Valor a una Columna del Xbrowse Antes de Validar

Postby jbrita » Thu Jun 02, 2011 3: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
jbrita
 
Posts: 486
Joined: Mon Jan 16, 2006 3:42 pm

Re: Devolver Valor a una Columna del Xbrowse Antes de Validar

Postby leandro » Thu Jun 02, 2011 4: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: Select all  Expand view
valor:=oGet:Value()


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

Code: Select all  Expand view
oGet:Value():=valor


Pero no funciona :( me arroja el siguiente error:

Code: Select all  Expand view
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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1482
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Devolver Valor a una Columna del Xbrowse Antes de Validar

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

Re: Devolver Valor a una Columna del Xbrowse Antes de Validar

Postby leandro » Thu Jun 02, 2011 5: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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1482
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Devolver Valor a una Columna del Xbrowse Antes de Validar

Postby fgondi » Fri Jun 03, 2011 8:41 am

Si no he entendido mal, al pulsar en el botón del get muestras un cuadro de dialogo con las cuentas
Code: Select all  Expand view
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: Select all  Expand view
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
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 14 guests