tomar dato de un combo de 2 columnas

5,447 views
Skip to first unread message

Saul Piña Hernandez

unread,
Apr 25, 2013, 2:29:55 PM4/25/13
to publice...@googlegroups.com
Saludos!

Tengo un combobox donde muestra el numero y el nombre de algun apoyo, por ejemplo:

1   BACHEO
2   LIMPIEZA DE TERRENOS
3   ALUMBRADO PUBLICO


Lo que intento hacer es tomar el numero segun el nombre seleccionado, pero todavia no puedo lograrlo, como debo hacerlo?

estoy intentando en el valid pero no se como hacer referencia a la columna numero.

gracias!

Jairo Miranda

unread,
Apr 25, 2013, 2:37:12 PM4/25/13
to publice...@googlegroups.com

El combo box tiene una propiedad llamada  BoundColumn , que te devuelve el no de la columna.

 

Si el objeto tiene tres columnas  entoces

 

This.BoundColumn = 1

      Thisform. Objeto .Value = This.value  && te devuelve el valor de la columna 1

This.BoundColumn = 2

      Thisform. Objeto .Value = This.value  && te devuelve el valor de la columna 2

This.BoundColumn = 3

      Thisform. Objeto .Value = This.value  && te devuelve el valor de la columna 3

 

JM

JONATAN LÓPEZ

unread,
Apr 25, 2013, 2:41:01 PM4/25/13
to publice...@googlegroups.com
Hola Saul voy a ver si puedo ayudarte yo por ejemplo hice lo siguiente en el combobox en el procedimiento click que tenia y que me mostraba solo el nombre del producto y no el codigo pero de todas formas lograba sacar el codigo y guardarlo con el siguiente codigo:
*hago una variable publica (comcod) para que lo pueda usar en todo mi formulario en donde deseo guardar
PUBLIC comcod
*le doy el valor 0 para q sea de tipo numerico
comcod=0
*selecciono la tabla en donde saco ese codigo y el cual el nombre de los productos q muestro en el combo vienen de esa tabla productos
SELECT productos
*guardo el codigo
comcod= productos.codigo
*selecciono la tabla en la que quiero guardar ese codigo
SELECT ventas
SET ORDER TO codigo
* y lo remplazo
replace cod_productos WITH comcod
Espero que te sirva de ayuda...Saludos :)

MALKASOFT ADPI: http://www.developervfp.blogspot.com/

unread,
Apr 25, 2013, 2:43:37 PM4/25/13
to publice...@googlegroups.com
Hola el BoundColumn del combobox te dice cual de las columnas sera el que tenga el valor, si te fijas en las propiedades el BoundColumn esta en 1 y es por eso que el value del combo te da el valor de la primera columna, pero si le pones 2 te dara el valor de la segunda columna, el combo es como una tabla si te sitúas en alguna posición por ejemplo en la 3 del combo, te encuentras en el tercer registro de la tabla...

Ejemplo
Mi combo
1   BACHEO
2   LIMPIEZA DE TERRENOS
3   ALUMBRADO PUBLICO
 y tu tambla tienes

Codigo, Descripcion
1   BACHEO
2   LIMPIEZA DE TERRENOS
3   ALUMBRADO PUBLICO

si escogemos el segundo valor sera lo mismo que en la tabla entonces que debemos hacer para escoger uno o mas valor, en realidad es de la tabla no del combo

Select tabla
cCodigo  = Thisform.combo.value
cDescrip = Tabla.Descripcion



Pd.: Descargate mi grilla que tiene multiples funciones como filtrar, multiseleccion, búsqueda, etc del siguiente link http://www.developervfp.blogspot.com/p/gridlibre-v35.html. Ahora también puedes bajarte mi ultima herramienta Busqueda Incremental con un TEXTBOX http://developervfp.blogspot.mx/p/busqueda-incremental-con-un-textbox.html  las herramientas viene con código fuente, ojo no hacer mal uso por favor. 


Saludos; 


Ing. Russvell Jesus Soto Gamarra 
San Juan del Rio - Queretaro - Mexico 
Nextel.: 52*133750*16
skype. : rycjesus 
rycjesusrj @ hotmail.com 

Osornino (Chile)

unread,
Apr 25, 2013, 2:57:50 PM4/25/13
to publice...@googlegroups.com
Haber sin te puedo ayudar.


Ejemplo de llenado de un combo con 3 columnas, alineadas a la izquierda

SELECT _xPredNum
GO TOP
_xLin = 0
SCAN
    _xLin  = _xLin + 1
    thisform.combo19.AddListItem(PADL(Numero      ,  6," "),_xLin,1)
    thisform.combo19.AddListItem(PADL(Propietario  ,20," "),_xLin,2)
    thisform.combo19.AddListItem(PADL(Nombre      ,20," "),_xLin,3)
ENDSCAN

* donde _xLin es la fila y los numeros 1,2,3 son las columnas.
* Para extraer los diferentes valores puedes hacer los siguiente:
* Hago un ciclo desde 1 hasta el ultimo elemento del combo (listcount)

for _x = 1 to thisform.combo19.listcount
      _columna1 = thisform.combo19.ListItem(_x,1)
      _columna2 = thisform.combo19.ListItem(_x,2)
      _columna3 = thisform.combo19.ListItem(_x,3)

endfor

Con esto puedes extraer el valor en la columna que necesites sin mover el puntero de la columna (BoundColumn)


Espero haberte ayudado.

Saludos desde Osorno, Chile

Osornino (Chile)

unread,
Apr 25, 2013, 3:05:12 PM4/25/13
to publice...@googlegroups.com

La otra opcion que te sirve para extraer el valor de las columnas según el item seleccionado es el siguiente:

Obviamente el combo debe estar distribuido en columnas.


_ValorExtraido1 = thisform.combo1.ListItem(thisform.combo1.listindex,1)  && 1ª  columna que contiene el dato a extraer
_ValorExtraido2 = thisform.combo1.ListItem(thisform.combo1.listindex,2)  && 2ª  columna que contiene el dato a extraer
_ValorExtraido3 = thisform.combo1.ListItem(thisform.combo1.listindex,3)  && 3ª  columna que contiene el dato a extraer

Saludos desde Osorno - Chile.



El jueves, 25 de abril de 2013 14:29:55 UTC-4, Saul Piña Hernandez escribió:

Viktor Velazquez

unread,
Apr 25, 2013, 3:08:16 PM4/25/13
to publice...@googlegroups.com
yo lo hago de esta forma

tomas los campos  si tomas los campos de la tabla

.rowsourcetype='tutabla.numero,apoyo'
.Rowsourcetype= 6 - Fields
.Columncount=2
.columnwiths=40,150

en el lostfocus muestras los valores

messageb(This.value)
Messageb(This.displayvalue)

Te debe dar los valores de ambas columnas..

saludos





Date: Thu, 25 Apr 2013 11:29:55 -0700
From: vfxpro...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] tomar dato de un combo de 2 columnas

Viktor Velazquez

unread,
Apr 25, 2013, 3:09:59 PM4/25/13
to publice...@googlegroups.com
correccion :

.rowsource='tutabla.numero,apoyo'

sorry



Date: Thu, 25 Apr 2013 11:29:55 -0700
From: vfxpro...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] tomar dato de un combo de 2 columnas

Saul Piña Hernandez

unread,
Apr 25, 2013, 3:12:03 PM4/25/13
to publice...@googlegroups.com
Gracias Osornino! 

Esta ultima es lo que andaba buscando:

_ValorExtraido2 = thisform.combo1.ListItem(thisform.combo1.listindex,1)

pero ahora no sé a qué le moví que cuando hago clic si me muestra las 2 columnas, pero cuando hago la seleccion solo me aparece el num y yo deseo la descripción,  y el num lo deseo para capturar y despues realizar consultas a travez de este num.

Que pasaría con el combo?

gracias a todos, me ayudaron tambien, excelentes aportaciones!


Osornino (Chile)

unread,
Apr 25, 2013, 3:19:55 PM4/25/13
to publice...@googlegroups.com
es muy probable que modificaras el BoundColumn, este te muestra (por defecto) el valor de la columna al que hace referencia.

Normalmente o por defecto es 1, de lo contrario sera el que tu le asignaste cuando lo modificaste.


Saludos desde Osorno - Chile.


El jueves, 25 de abril de 2013 14:29:55 UTC-4, Saul Piña Hernandez escribió:

YuLSoft

unread,
Apr 26, 2013, 7:15:15 PM4/26/13
to publice...@googlegroups.com
TIPO_HABILITACION (tipo_habilitacion C(02), descripcion V(60))
 
*/Mostrar Datos en Combo
*/TIPO DE HABILITACION
SELECT ALLTRIM(STR(TIPO_HABILITACION))+" - "+ALLTRIM(descripcion), TIPO_HABILITACION FROM TIPO_HABILITACION ORDER BY TIPO_HABILITACION INTO CURSOR CTIPO_HABILITACION
thisform.PgfPersonal.PagDatos_Personal.CboTIPO_HABILITACION.BoundColumn = 2 &&# Devuelve el valor de la Columna 2
thisform.PgfPersonal.PagDatos_Personal.CboTIPO_HABILITACION.BoundTo = .T.
thisform.PgfPersonal.PagDatos_Personal.CboTIPO_HABILITACION.RowSourceType = 6
thisform.PgfPersonal.PagDatos_Personal.CboTIPO_HABILITACION.RowSource = "CTIPO_HABILITACION" 
thisform.PgfPersonal.PagDatos_Personal.CboTIPO_HABILITACION.Style = 2
thisform.PgfPersonal.PagDatos_Personal.CboTIPO_HABILITACION.Refresh 
 
*/Para tomar el Dato de la Columna 2 del ComboBox
lcTIPO_HABILITACION  = thisform.pgfPersonal.PagDatos_Personal.CboTIPO_HABILITACION.Value
 
*/Para Mostrar el Dato en el ComboBox de la Columna ya guardada en la tabla Persona
thisform.pgfPersonal.PagDatos_Personal.CboTIPO_HABILITACION.Value = TIPO_HABILITACION
 
Yo lo hago de esta forma y me funciona.
Saludos.
 


 
Reply all
Reply to author
Forward
0 new messages