Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Filtro en dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=77622)

gianfranco_tont 12-02-2012 16:07:36

Filtro en dbgrid
 
Tengo un from con un dbgrid inegrado con un clientdataset, provaider y un datasouce y por supuesto una adotable, estoy trabajando con sqlserver. Mi pregunta es como hacho para que en una celda pueda yo filtrar y seleccionar atravez de un like los datos de otra tabla. Ejemplo en el grid de facturación debo poder seleccionar un producto de la tabla de producto y que me traiga en el grid el costo unitario, el codigo y la descripción del producto almacenado en la misma tabla.

Caral 12-02-2012 16:29:08

Hola
El dbgrid MUESTRA el contenido de lo que necesites.
NO me parece buena practica mostrar el contenido de una tabla, cambiar un dato y mostrar el contenido de otra tabla.
Lo mas sencillo y logico es buscar el dato de otras maneras y si tienes que mostrarlos en ese dbrid hacerlo por lo menos con un masterdetail.
Saludos

gianfranco_tont 12-02-2012 17:11:27

Eso ya se puso difícil, bueno realmente quisiera que dentro del grid en una celda en especifico el usuario pueda accionar el eclipse y abrir una consulta con un like y al seleccionar la linea de la consulta me traiga el codigo y la descripción para que el usuario coloque solo la cantidad.
Lo que tu me esta recomendando no tengo ni idea como hacerlo.
Oye! Gracias por tu pronta respuesta. Gracias a este foro estoy avanzando con mi programa.

Caral 12-02-2012 17:14:48

Hola
Lo mas seguro es que no estoy entendiendo lo que necesitas hacer.
Saludos

gianfranco_tont 12-02-2012 17:21:05

Cita:

Empezado por gianfranco_tont (Mensaje 424926)
Tengo un from con un dbgrid inegrado con un clientdataset, provaider y un datasouce y por supuesto una adotable, estoy trabajando con sqlserver. Mi pregunta es como hacho para que en una celda pueda yo filtrar y seleccionar atravez de un like los datos de otra tabla. Ejemplo en el grid de facturación debo poder seleccionar un producto de la tabla de producto y que me traiga en el grid el costo unitario, el codigo y la descripción del producto almacenado en la misma tabla.

Quiero hacer un formulario de factura. Donde en el grid tengo: codigo, descripción, cantidad, total entre otros, ahora bien quiero que cuando el usuario ingrese al modulo de facturación y coloque el mouse en la columna codigo abra una consulta utilizando un like y cuando el usuario selecione la fila de la consulta me llene la celda codigo,descripción para que solo el usuario coloque la cantidad.

Caral 12-02-2012 17:25:03

Hola
Creo que seria bueno que vieras este tutorial que hice de facturacion, tal vez te de ideas.
Revisa la parte del uso que hago del dbgrid, creo que es mas logico.
Saludos

gianfranco_tont 12-02-2012 18:06:39

Seguramente no me estoy explicando bien. Bueno pero puede decirme como hago para darle una función a buttonstyle cbsellipsis en una columna de un grid? Es allí donde quiero lograr lo que te comente. Al usuario presionar el cdsellipsis debe poder seleccionar un producto de una tabla y traerlo hasta el grid

Caral 12-02-2012 20:37:15

Hola
Código Delphi [-]
If dbgrid1.Columns[0].ButtonStyle = cbsEllipsis then
   showmessage('hola');
Saludos

Caral 12-02-2012 21:35:11

Hola
Aqui te dejo un ejemplo de como usar el boton elipse que quieres, ademas de otras cosas.:)
En la primera columna, IDUsuario, esta el boton, si lo presionas saldra un form con un memo.
Es muy sencillo el uso, revisalo.
Saludos

Neftali [Germán.Estévez] 13-02-2012 13:13:54

+1

Fantástico ejemplo Carlos.
Si no te molesta lo subo al FTP.

Caral 13-02-2012 14:45:54

Hola
Con gusto amigo, aunque es un ejemplo sencillito, a lo novato.
Saludos

gianfranco_tont 13-02-2012 18:15:50

Una pregunta?

Puedo usar un TDBLOOKUPCOMBO o TDBCOMBOBOX en una celda de un dbgrid?
si la respuesta es si como lo hago?

El TDBLOOKUPCOMBO o TDBCOMBOBOX deben estar conectado a una tabla y al selecionar la linea del TDBLOOKUPCOMBO o TDBCOMBOBOX debe traerme el codigo en la celda del dbgrid.

Caral 13-02-2012 18:18:45

Hola
El dbgrid tiene un combobox, es lo mismo, solo hay que llenarlo con los datos de la tabla.
Osea, SI se puede.
COMO ???: Depende de como lo quieras hacer ya que el dbgrid se supone que estara lleno, no??.
Saludos

gianfranco_tont 13-02-2012 18:24:45

El dbgrid no esta lleno, esta completamente vacio y conectado a clientdataset. ahora por la opción que tu me indicas (PICKLIST) solo me mostrara lo que yo le escribo alli, mas sin embargo yo quiero que me muestre la información de una tabla en especifico.

Caral 13-02-2012 18:39:04

Hola
Hay que tener en cuenta que es cada cosa.
1- El dbgrid tiene celdas, en ellas se puede colocar un boton, un combobox o nada.
2- Cada celda se puede manejar como se necesite.
3- Si se quiere, por ejemplo, llenar el combobox que tiene el dbgrid entonces se utiliza la propiedad PickList (efectivamente).
4- Para llenar ese combobox con la informacion de una tabla entonces se puede, por ejemplo, hacer esto:
Código Delphi [-]
   AdoQuery1.SQL.Text := 'Select Nombre From Usuarios '; // selecciono el nombre de la tabla usuarios
   AdoQuery1.Active := True; // activo el sql
   While not AdoQuery1.Eof do  // recorro la tabla hasta el final
   begin
     DBGrid1.Columns[0].PickList.add(AdoQuery1.Fields[0].Text); // INSERTO EN EL PICKLISI DEL DBGRID LOS DATOS
     AdoQuery1.Next; // sigo insertando hasta que encuentre el ultimo
   end;
   AdoQuery1.Active := False;  // cierro la consulta
Osea: Muy facil, no?.
Saludos

gianfranco_tont 13-02-2012 20:22:54

excelente esa es la mejor opcion, de verdad gracias.

gianfranco_tont 13-02-2012 20:32:22

pero ahora tengo una duda: donde coloco esta funcion? onshow, oncellclick? en donde.

Caral 13-02-2012 20:40:38

Hola
No es una funcion.
Colócalo en el evento ONShow del form que contiene el dbgrid.
Saludos

gianfranco_tont 13-02-2012 20:43:07

perfecto pero donde llamo el picklist?

Caral 13-02-2012 20:46:07

Hola
No entiendo ?.
A ver si es lo que imagino:
El picklist esta en el campo que tiene el dbgrid.
Si le das dobleclick al dbgrid te sale una pantalla, ahi deben estar los campos que tendra el dbgrid.
Escoge el campo que necesites que tenga el combobox y pon en su propiedad Buttonstile cbsAuto.
No se si es lo que preguntas ?.
Saludos


La franja horaria es GMT +2. Ahora son las 18:25:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi