Ayuda con grid

(14:17) Helida Castillo: tengo un grid de 5 columnas en la cuales solo 4 columnas m van a enviar datos a mi tabla entradas (osea le asigno en el controlsource el campo correspondiente en que quiero que guarden) pero en la columna que sobra solo quiero mostrar la descripción de un producto a partir del código que se esta guardando en la columna que ocupo para el código (osea no le asigno un campo en el controlsource), esa descripción viene de la tabla inventario, que se relaciona con la tabla entradas por el código
gracias por su ayuda

1 Respuesta

Respuesta
1

Espero poder ayudarte.

Mmm según lo que leo, imagino que quieres escribir un código de producto en una columna del grid y que en otra, al apretar enter (por ejemplo) te aparezca la descripción del producto asociado a ese código. ¿Es así? Espero que si.

De ser así, la solución es fácil. (Si no es así, corrígeme y aclarame):

En el evento KeyPress del Text1 de la columna donde ingresas el código, escribí algo así:

(Vamos a suponer que la columna donde escribís el código es column1 y donde quieres ver al descripción es column5, tu adecualo.):

LOCAL lnCodigo

lnCodigo = THISFORM.Grid1.Column1.Text1.Value

SELECT inventario

GO TOP

LOCATE FOR inventario.código = lnCodigo

**--Si hay coincidencias

IF FOUND()

**--Cargamos la descripción

THISFORM.Grid1.Column5.Value = inventario.descripción

THISFORM.Refresh

ELSE

MESSAGEBOX("El código de producto no está registrado".)

ENDIF

Proba y me avisas! :) :) :)

gracias por contes

si asies el lo encuentra =pero me marca un error

LOCAL lnCodigo
lnCodigo = THISFORM.grdEntradas_det.Column1.Text1.Value
SELECT inventar
GO TOP
LOCATE FOR inventar.ccodigo = lnCodigo
**--Si hay coincidencias
IF FOUND()
**--Cargamos la descripción

_________________________errrorr_______ property value is not found
THISFORM.grdEntradas_det.Column2.Value =inventar.cdescri


THISFORM.Refresh
ELSE
MESSAGEBOX("El código de producto no está registrado")
ENDIF

a si ya se por que

THISFORM.grdEntradas_det.Column2.Text1.Value =inventar.cdescri

me faltaba el .text1

pero no me lo muestro

mas bien me pone cero en la columna donde quiero poner la secripcion

ayuda revennn :a

¿Marca cero? Anda a las propiedades de la columna descripción del grid y verifica que en la propiedad format e inputmask no tenga nada. Igual hace para el text1 de esa columna. ¿El tipo de datos del campo cdescri es carácter? De ser así, coloca así la linea:

THISFORM.grdEntradas_det.Column2.Text1.Value = ALLTRIM(inventar.cdescri)

ya revise todo lo que me dijiste pero nada

la consulta

si encuentra la descripción del grupo pero

pero siempre me manda un cero en la columna1 del texto 1

lo raro es que en tiempo de ejecución trate de escribir letras en la columna donde quiero que aparezca la descripción y no medeja , solo números

ya verifique bien y nada

Mmmm que extraño. ¿Ho hay nada en controlSource del text tampoco? Debería funcionar man! :O :O :O Para probar que si encuentra la coincidencia... intenta mostrarla en un messagebox, así:

coloca esta linea justo después de IF FOUND()

Messagebox(inventar. Cdescri)

Y luego el resto. Cuando ejecutes... debe aparecer en un mensaje la descripción del producto. Si aparece significa que no es un problema con los datos si no con el control text o column del grid. Si te da 0 es porque es un problema de datos y hay que ver donde es.

Avisame...

si ya lo hice y si me muestra la descripción del grupo en el mensaje

el formulario es para entradas del producto

en le grid están los detalles del producto

prácticamente tengo el ecabezado del producto y en le grid los detalles del producto

código _ descripcion___cantidad___precuiunitario_ total

-------- --------------- ------------ ----------------- -------

--------- - ---------------- -------------- ------------------ -------

yo a go la búsqueda en text1 de la columna 1 para que automática mente me muestra la descripción del producto en la columna 2 del txt

la columna 1 esta enlazada a mi código de mi tabla detalles del priducto

la columna 2 no esta enlazada a ninguna tabla por que dice el profe que es solo consulta

no se por que rayos no me lo muestra y lo raro es que la columna 2

esta como que fuera numérica

men si tiene un ejemplo como hacer eso me seria de gran ayuda

gracias por seguir mi caso

¿La columna 2 (descripción) esta como que fuera numérica? ¿A qué te refieres con eso? ¿OO?

Si te lo muestra a través de la función messagebox (podes ver la descripción) el problema debe ser de tipo de formato del control donde se mostrara. ¿Cómo enlanzas el grid a los campos? ¿Por medio de controlsource? ¿Usas la propiedad recordsource del grid? Tal vez ahí esta el problema. Avisame como lo haces.. para poder conlcuir un poco mejor que es lo que impide que veas la descripción.

muchas gracias revenn una vez mas

por tu tiempo

gracias por contestar y si en efecto era el controlsource que esta en lazado a mi tabla de detalle y me agarraba la columna que era numérica a pesar que en la columna 2 la tenia sin en lazar

que raro no ?

Un placer saludarte.

¿Has podido resolver el problema si? ¿Ya podes ver la descripción en la columna?

En el libro "1001 things you wanted to know about visual foxpro" hay un capitulo completo dedicado al control grid, denominado "the grid: the misunderstood control" (grid: el control incomprendido). El control grid a veces puede convertirse en un dolor de cabeza si no se manipula bien. Esto debido a que fue diseñado como una ventana o extensión de una fuente de datos, sea un cursor temporal o una tabla física .dbf. Esto contrasta un poco con la POO.

En grid debe enlazarse por completo a una fuente y si en sus columnas existe algún que no se a "alimentada" por la misma fuente que el resto, debe también "declararse". El control trae sus propiedades RecordSource para llamar a la fuente principal que lo alimenta. Si vos declaras la fuente (tabal o cursor) el grid va a reemplazar las columnas por los campos de dicha fuente...! Si la propiedad columncount = -1, entonces el grid tomara todas los campos de la fuente. Si vos declaras un numero especifico de columnas para el grid... entonces se mostraran los campos en conteo de izquierda a derecha hasta donde hayas establecido.

Si en cada columna del grid, en la propiedad controlsource vos estableces el nombre del campo... esa columna va a tomar ese campo y mostrara los datos asociados. Si no lo haces... el grid automáticamente toma el campo que tenga el mismo numero en orden de izquierda a derecha y lo muestra...! Eso es lo que te paso a vos.

Lo que yo aconsejo y me ha funcionado de maravilla es no programar las propiedades RECORDSOURCE, CONTROLSOURCE del grid y sus columns desde la ventana de propiedades. Si no... crear un método personalizado en tu form llamado por ejemplo "cargargrid" y ahí programar todo el enlace.

**--Liberamos el grid para evitar deformación visual

**--al cambiar consulta

THISFORM.Grid1.RecordSource = " "

SELECT cursor

GO TOP

**--Reenlazamos

THISFORM.Grid1.RecordSource = "cursor"

**--

THISFORM.Column1.ControlSource = "cursor.campo1"

**--Resto de columnas aquí.

THISFORM.Grid1.Refresh

**--//

Ves! Así puedo cambiar entre consultas el grid y no da problemas. Es mas funcional.

Luego en el init del form... o en un comando para generar la consulta del cursor, solo voy recargando los datos... lo que cambia es la fuente. Por ejemplo si por medio de un select cargo los datos con un determinado filtro en un cursor llamado "cursor"... luego solo reenlazo el cursor al grid... como te mostré antes, y ya.. se muestra todo sin problemas.

Ves! :)

Bien... si has podido resolver la duda... te pido finalices la pregunta. Si no.. avisame para ayudarte. Cualquier cosa,,, puedes hacerme las consultas que quieras.

muchas gracias por libro "1001 things you wanted to know about visual foxpro"

voy a tener que leer mas

si al parecer da problemas al enlasar las columnas de diferentes tablas

ya pude solucionarlo sin en lazar y solo cargar los daros a través de los métodos

muchas gracias revenn una vez mas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas