Asignar una funcion al grid1.column1.ControlSource=MiFuncion() y mostrar una columna con formato password

814 views
Skip to first unread message

Juan Pablo Carrasco M.

unread,
Jul 15, 2013, 2:33:19 PM7/15/13
to publice...@googlegroups.com
Estimados,

Necesito nuevamnet vuestra valiosa ayuda.

Tengo una grilla donde muestro los campos de una tabla, pero existe un campo que contiene el codigo del local y yo necesito mostrar el nombre del local.

Cree una funcion para desplegar el nombre pero no aparace al momento ejecutar la grilla:

thisform.grid1.column1.controlsource=datos.local
thisform.grid2.column1.controlsource=datos.local_ubicacion
thisform.grid3.column1.controlsource=datos.local_codigo
thisform.grid4.column1.controlsource=_muestraNombreLocal(local_codigo)

No funciona, ¿que puedo hacer?.

Ademas tengo una grilla donde se muestran las password de los usuarios la que me gustaria mostrar con signo *, ¿ alguien sabe como lograrlo?

Muchas gracias

Ricardo Pina

unread,
Jul 15, 2013, 2:45:30 PM7/15/13
to Grupo VFP
Hola Juan Pablo
 
Mas que una función lo que tienes que hacer es generar el cursor con el nombre del Local y para que te aparezca los * en el text de la columna tenes que poner un asterisco en la propiedad passwordchar .
 
Saludos
 
 
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Juan Pablo Carrasco M.

unread,
Jul 15, 2013, 3:25:22 PM7/15/13
to publice...@googlegroups.com
Hola Ricardo,

Mira, la propiedad PasswordChar se usa para la edicion no para el despliegue, osea que tu columna Password mostrara el contenido de la password hasta que tu la edites, en ese momento recien te mostrara * o el caracter que le asignes.

Mi curso viene de una tabla MySql y quizas generandole un store procedure podria entregarme todo lo que necesito, pero como la idea es normalizar la tabla en VFP9, se les debe asignar el codigo 999 a todos los que se encuenten ente 900 y 800, el 998 a todos los que esten entre 700 y 600 y asi suma y sigue El usuario debe realizar la mantencion y yo le quiero entregar la herramienta.

¿Se podra hacer lo que yo quiero? (asignar una funcion al controlsource de una columna en una grid y mostrar los campos password con * y/o # en la grilla)

Gracias

Ricardo Pina

unread,
Jul 15, 2013, 3:46:53 PM7/15/13
to Grupo VFP
Hola
 
La columna del password quizás lo puedas manejar con la propiedad sparse de la columna y el tema del código y nombre del local también lo puedes manejar incluyendo un combobox con el código y el nombre del local, mantienes la columna con el código y muestras el nombre con el combo.
 
Saludos

Juan Pablo Carrasco M.

unread,
Jul 15, 2013, 5:04:35 PM7/15/13
to publice...@googlegroups.com
Hola,

Bueno la propiedad Sparce para la columna Password sirvio (aunque ya no reconoce el fotmat J), OK.

Con la grilla de locales pasa lo siguiente:

En el evento load, cargo todos los registro parametrizados a una matriz bidireccional con CodigoLocal y NombreLocal.

En la matriz digo:
   en Caso CodigoLocal BetWeen 900,800 entonces 999, Administracion
   en Caso CodigoLocal BetWeen 700,600 entonces 998, Ventas
..
..
   FinCaso

Luego en la funcion que quiero implementar en la grilla digo:
   Function VerSucusal
   Pameters _codloc
   Local _nomLocal
   Set Exact On
   VerLocal=Ascan (_matrizLocales,_codloc)
   SI VerLocal <> 0
       _nomLocal=_matrizLocales(VerLocal,2)
   FinSi
   Retornar(_nomLocal)

Y _nomLocal lo quiero mostrar en la columna de la grilla

¿ Se puede hacer esto?, ¿en que estoy fallando?

El combobox no me sive pues las referencias de la tabla estan cambiada en la matriz

Gracias.

Fidel Charny

unread,
Jul 15, 2013, 5:23:04 PM7/15/13
to publice...@googlegroups.com
thisform.grid1.column1.controlsource="datos.local"
thisform.grid2.column1.controlsource="datos.local_ubicacion"
thisform.grid3.column1.controlsource="datos.local_codigo"
thisform.grid4.column1.controlsource="_muestraNombreLocal(local_codigo)"
Al menos, en el ejemplo que pasas, te faltan las comillas. Si la función es correcta, tiene que funcionar correctamente.

Juan Pablo Carrasco M.

unread,
Jul 15, 2013, 5:36:28 PM7/15/13
to publice...@googlegroups.com
Ya probe con eso:

Error del programa:
No se encuentra la variable

¿Algun otro consejo?

Gracias.

Fidel Charny

unread,
Jul 15, 2013, 6:00:15 PM7/15/13
to publice...@googlegroups.com
Que busques el error en tu función. 
En otro caso debería decir algo como: "The data source for this object must be a variable reference"

Suelo utilizar un código similar a este:
thisform.grid1.RecordSource="Mitabla"
Thisform.grid1.column1.ControlSource="SeekClien(mitabla.Idclien)"
donde Seekclien() es una funcíón de usuario, más o menos así:

FUNCTION SEEKclien(xcIdclien)
*-----------------------------------------------
local cnSal
cnsal=""
xcIdclien=alltrim(xcIdclien)
if indexseek(xcIdclien,.t.,"CLIENTES","CODIND")
CNSAL=Proper(Clientes.Nombre)
endif
return cnsal
ENDFUNC

Juan Pablo Carrasco M.

unread,
Jul 15, 2013, 6:59:47 PM7/15/13
to publice...@googlegroups.com
Ok, lo voy a correr y le comento

Gracias

mpulla

unread,
Jul 18, 2013, 8:40:32 AM7/18/13
to publice...@googlegroups.com

Hola Juan Pablo.

No manejo MySql pero creo que la sintaxis es similar.

Prueba directamente con un Sql

1.-
Select local, loca_ubicacion, local_codigo,
          Case
              When local_codigo Between  900 and 800 Then 'Administracion'
              When local_codigo Between  700 and 600 Then 'Ventas'
          End Case As Local_Nombre
From Local

2.- create otra tabla con los rangos

Select Local.local, Local.loca_ubicacion, Local.local_codigo,
          isnull(Local_Nombre.local_Nombre, 'Sin Departamento') As Local_Nombre
From Local
        left Join Local_Nombre On Local.local_codigo between Loca_Nombre.ValorIncial and Local_ValorFinal

En lo personal veo más manejable la segunda opción

Saludos.
Mauricio

Daniel Sánchez

unread,
Jul 20, 2013, 11:53:05 AM7/20/13
to Comunidad de Visual Foxpro en Español

Y cual es la idea de mostrar una columna con * para todos las filas, me parece que no va con el concepto de la grilla de facilitar el ver la informacion almacenada. Si todo va ser datos ocultos para que incluirlos en el grid.

Saludos

Reply all
Reply to author
Forward
0 new messages