Page 1 of 1

Ayuda->Problema en browse con variables.

Posted: Fri Jan 12, 2007 2:03 pm
by AndresZaragoza
Un problema:

Si quiero hacer un browse con _ a visualizar que sean variables, aprace el contenido todo el blanco.
No se si estoy haciendo algo erróneo.
Gracias de antemano.

Ej NO funciona:
@ 1.65, 0.5 LISTBOX oBrw FIELDS (lpCampo1),(lpCampo2),(lpCampo3)...

en cambio, si funciona:
@ 1.65, 0.5 LISTBOX oBrw FIELDS codigo,nombre1,nombre2...

Posted: Fri Jan 12, 2007 4:41 pm
by Antonio Linares
Andrés,

Que tipo de valores (C,N,L,D) tienen las variables lpCampo1, lpCampo2, lpCampo3 ?

Browse

Posted: Fri Jan 12, 2007 5:59 pm
by AndresZaragoza
Hola Antonio,

Las variables contienen los nombres de _ a mostrar, son carácter.
Verás estoy haciendo una función genérica de búsqueda con su browse para que valga para varios ficheros: articulos, clientes.... por lo que le mando nombre de fichero y entre otras cosas más los nombres que tiene que mostrar. Te escribo el ejemplo:

=Buscar(oWnd,'Clientes',210,250,'Efth010',99,83,'cprvcod','cprvome','cprvnom'...)

FUNCTION Buscar(lpVentana,lpTitulo,lpAncho,lpAlto,lpFichero,lpAncBrw,lpAltBrw,lpCampo1,lpCampo2,lpCampo3)

@ 1.65, 0.5 LISTBOX oBrw FIELDS (lpCampo1),(lpCampo2),(lpCampo3) .... SIZE lpAncBrw, lpAltBrw....

Posted: Fri Jan 12, 2007 6:19 pm
by Antonio Linares
Andrés,

Estos nombres de variables no deben llevar comillas:

'cprvcod','cprvome','cprvnom', ...

debe ser:

cprvcod, cprvome, cprvnom, ...

Posted: Fri Jan 12, 2007 8:47 pm
by AndresZaragoza
Sigue sin funcionar.

Creo que mandandole el nombre del campo sin comillas estamos mandando el cotenido de la variable, no el nombre en si que hace falta para montar el browse, te mando el ejemplo completo (con el cambio que propones):
Gracias de nuevo


#include "FWCE.ch"

function Main()
local cText := Space( 50 )
NumReg = 0
oWnd = 0
DEFINE WINDOW oWnd TITLE "Ejemplo"

AbrirFicheros()

@ 5, 5 BUTTON "Acción" SIZE 80, 20 ACTION Avisa(oWnd, 'Clientes',210,250,'Efth010',99,83,cprvcod,cprvome,cprvnom,'Código', 'Nombre Comercial', 'Nombre Fiscal',50,200,200)
@ 7.9, 5.1 SAY NumReg OF oWnd SIZE 80, 15
@ 7, 5 BUTTON "Dime" SIZE 80, 20 ACTION prueba(NumReg)

ACTIVATE WINDOW oWnd
RETURN nil

FUNCTION prueba(nr)
@ 9.9, 5.1 SAY Nr OF oWnd SIZE 80, 15
RETURN nil


FUNCTION Avisa(lpVentana,lpTitulo,lpAncho,lpAlto,lpFichero,lpAncBrw,lpAltBrw,lpCampo1,lpCampo2,lpCampo3,lpATit1,lpATit2,lpATit3,lpAncho1,lpAncho2,lpAncho3)
*************************************************************
* lpVentana -> Ventana padre
* lpTitulo -> Título de ventana
* lpAncho -> Ancho de pantalla
* lpAlto -> Alto de pantalla
* lpFichero -> Fichero a listar
*************************************
* Si están en blanco no se ponen.
*************************************
* lpAncBrw -> Alto del browse
* lpAltBrw -> Alto del browse

* lpCampo1 -> 1 Campo en la base de datos
* lpCampo2 -> 2 Campo en la base de datos
* lpCampo3 -> 3 Campo en la base de datos
* lpATit1 -> Título del Campo 1
* lpATit2 -> Título del Campo 2
* lpATit3 -> Título del Campo 3
* lpAncho1 -> Ancho del Campo 1
* lpAncho2 -> Ancho del Campo 2
* lpAncho3 -> Ancho del Campo 3
*
************************************************************
DEFINE FONT ofontPeque NAME "Arial" SIZE 4, -8
SELECT (lpFichero)
DEFINE DIALOG dBrowse TITLE lpTitulo SIZE lpAncho, lpAlto OF lpVentana

@ 1.65, 0.5 LISTBOX oBrw FIELDS (lpCampo1),(lpCampo2),(lpCampo3) COLSIZES 50,200,200 ;
OF dBrowse HEADERS 'Código', 'Nombre Comercial', 'Nombre Fiscal' SIZE lpAncBrw, lpAltBrw

@ 107, 35 BTNBMP oCancelar FILE CurDir() + "\bmp\cancelar.bmp" SIZE 12, 12 ACTION Cancelar()
@ 107, 65 BTNBMP oAceptar FILE CurDir() + "\bmp\ok.bmp" SIZE 12, 12 ACTION Aceptar()

@ 7.9, 5.1 SAY "Cancelar Aceptar" OF dBrowse font ofontPeque SIZE 80, 15

ACTIVATE DIALOG dBrowse CENTERED
RETURN nil



FUNCTION Aceptar(lpFichero)
SELECT (lpFichero)
NumReg = RECNO()
dBrowse:End()
RETURN nil



FUNCTION CAncelar
NumReg = 0
dBrowse:End()
RETURN nil


FUNCTION AbrirFicheros
Request DbfCdx
Request DbfFpt
RddSetDefault ('DbfCdx')
Request Hb_Lang_PLWIN
Request Hb_CodePage_PLWIN

**********
* Clientes
**********
IF .NOT. USED("Efth010")
USE (CurDir()+"\Efth010") NEW
ELSE
SELECT Efth010
ENDIF
RETURN nil

Posted: Fri Jan 12, 2007 9:47 pm
by Antonio Linares
Andrés,

No había entendido bien lo que querías hacer, disculpa.

Puedes hacerlo como querías, solo cambiando esto:

=Buscar(oWnd,'Clientes',210,250,'Efth010',99,83,'cprvcod','cprvome','cprvnom'...)

FUNCTION Buscar(lpVentana,lpTitulo,lpAncho,lpAlto,lpFichero,lpAncBrw,lpAltBrw,lpCampo1,lpCampo2,lpCampo3)

@ 1.65, 0.5 LISTBOX oBrw FIELDS FieldGet( FieldPos( lpCampo1 ) ),FieldGet( FieldPos( (lpCampo2) ), FieldGet( FieldPos( (lpCampo3) ) .... SIZE lpAncBrw, lpAltBrw....

Fíjate en el uso de FieldGet() y FieldPos()

Posted: Fri Jan 12, 2007 11:00 pm
by AndresZaragoza
Gracias, lo pruebo y te comento
Un saludo

Posted: Sat Jan 13, 2007 11:37 am
by AndresZaragoza
Muy agradecido. funciona perfectamente.
Saludos