Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-08-2005
Avatar de raffagia
raffagia raffagia is offline
Miembro
 
Registrado: sep 2004
Posts: 31
Poder: 0
raffagia Va por buen camino
busqueda por distintos parametros

hola, el problem ake etengo es este...
un frame ke debe mostrar productos en una grilla en funcion de lo que hayas elegido en 3 listbox.. para mi caso, PROVEEDOR; APLICACION; TIPO.
se entiende? son filtros,, ,,,
la solucion mas simple ke se me ocurrio ,, aunke la mas trabajosa, fue crear 1 cosulta para cada combinacion de seleccion( o sea,, ke elija solamente buscar por 1 det, proveedor y 1det aplicacion,, por 1 campo solo, por ninguno, por todos,,,
es mas tube ke crear tantas grillas como cnsultas,, las cuales se ponen visibles o no, segun el caso..

lo ke kise hacer era crear una sola grilla e ir cambiandole dinamicamente el DATASOURCE,, pero no me andubo.

el prpoblema es ke necesito una vez devueltos los resultados de ese filtrado, aplicar una funcion a c/u de los productos. pero como son grillas distintas y levnatan de consultas distintas... se hace tedioso...

pedron por escribir tanto, pero keria ser lo + claro posible.
uso delphi 7 y sql server..
saludos.

RAFFA
Responder Con Cita
  #2  
Antiguo 23-08-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

Es difícil ver que es lo que te confunde.

Deberías ser más sencillo el asunto, generar una consulta de acuerdo a la lista que eliges y luego mostrar en la grilla...así de sencillo.
Y con un solo TQuery¡¡¡¡¡¡

Saludos.
__________________
No todo es como parece ser...
Responder Con Cita
  #3  
Antiguo 24-08-2005
Avatar de raffagia
raffagia raffagia is offline
Miembro
 
Registrado: sep 2004
Posts: 31
Poder: 0
raffagia Va por buen camino
esta bien, yo genero una consulta distinta en funcion de lo que elige el usuario. pero la grilla solo puede tener 1 sola consulta como source. por esto tube ke hacer varias grillas e ir apagandolas o prendiendolas.

se entiende,-?
el problema de esto es ke una vez ke tengo los resultados de alguna de las grillas , independientemente de cual se tendria ke hacer lo mismo... lo uqe se hace dificil si tengo ke recorrer la consulta, dado ke no se cual es la ke debo recorrer ,, sin tener ke hacer un cASE

saludos

RAFFA
Responder Con Cita
  #4  
Antiguo 24-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por raffagia
lo ke kise hacer era crear una sola grilla e ir cambiandole dinamicamente el DATASOURCE,, pero no me andubo.
Pues debe andar sin problemas.
- Cierra el datasource del grid
- si hace falta, puedes hacer un DBgrid1.Datasource := nil;
- por código asignas el nuevo datasource.
- haces un dgrid1.RebuildColumns (no recuerdo ahora si es dgrid.Columns.Rebuildcolumns)
-abres el nuevo datasource.

En la unidad del grid, accedes siempre a los campos con Dbgrid1.Datasource.Dataset.FieldbyName, y tendrás un grid genérico para todos los Datasources que quieras.

Otra solución es mantener una consulta fija para el grid, pero cambiando el sql.text dependiendo de lo que el usuario elige. Es algo engorroso, pero puedes crearte funciones para separar el proceso:
Código Delphi [-]
query1.sql.text := CONSTANTE_SELECT_FROM + ' where ' + Fechas + Cliente;
query1.open;
Fechas y Clientes son funciones que devuelven parte de las restricciones que ha de tener la consulta.

Lo óptimo seria incluir en el select solo los campos necesarios para cada consulta; puedes tener varias constantes predefinidas (incluso en archivos .ini para modificarlas sin tener que recompilar) y deducir cual elegir segun el criterio del usuario.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 24-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por raffagia
lo uqe se hace dificil si tengo ke recorrer la consulta, dado ke no se cual es la ke debo recorrer ,, sin tener ke hacer un cASE
Create dos propiedades privadas en la ventana: TheGrid:TDBGRID, cuando abras la consulta y hagas visible el grid, asigna esa variable, es decir:

TheGrid := DBgrid2;

A partir de ahora accedes siempre por TheGrid.Datasource.Dataset.Fieldbyname.
Recuerda que esa asignación es una asignación de punteros, realmente solo hay un grid.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 24-08-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
PUes yo no entendí nada del problema. Recuerda que para cambiar el contenido de una DBGrid no cambias el DBGrid en si, sino que hay que cambiar el DataSource que tiene asignado el DBGrid. Opino lo mismo que LucasArts, con un solo DBGrid y un solo TQuery debería ser suficiente para ir mostrando cualquier combinación que haga el usuario.

Si lo que quieres hacer es una búsqueda por parámetros, pues entonces hay que consultar la ayuda del TQuery para utilizar parámetros.
Cita:
Empezado por ayuda de delphi
The following code runs an insert query to add a record for Lichtenstein into the country table.
Query2.SQL.Clear;
Query2.SQL.Add('INSERT INTO COUNTRY (NAME, CAPITAL, POPULATION)');
Query2.SQL.Add('VALUES (:Name, :Capital, :Population)');
Query2.Params[0].AsString := 'Lichtenstein';
Query2.Params[1].AsString := 'Vaduz';
Query2.Params[2].AsInteger := 420000;
Query2.ExecSQL;
Esto es para un insert, pero puedes hacer lo mismo para una consulta select, solo cambias los parámetros y vuelves a ejectuar la consulta y lixto.

Saludos
__________________

Responder Con Cita
  #7  
Antiguo 24-08-2005
Avatar de raffagia
raffagia raffagia is offline
Miembro
 
Registrado: sep 2004
Posts: 31
Poder: 0
raffagia Va por buen camino
muchismias gracias a todos,,,, pude ir cambiando el datasource. el problema era ke me faltaba poner grilla.datasource.dataset

una dudilla, como defino el ancho de las columnas ? dado ke la grilla no muestra siempre las mismas columnas.. es esto posibnble?


saludos

y garcias denuevo

RAFFA
Responder Con Cita
  #8  
Antiguo 24-08-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Revisa la propiedad Columns de tu DBGrid.
__________________

Responder Con Cita
  #9  
Antiguo 25-08-2005
Avatar de raffagia
raffagia raffagia is offline
Miembro
 
Registrado: sep 2004
Posts: 31
Poder: 0
raffagia Va por buen camino
a mano con el mouse le achico las coluimnas, pero cuando lo ejecuto las pòne del tamaño ke kiere...
no se ke pasa...
Responder Con Cita
  #10  
Antiguo 25-08-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
por código:
Código Delphi [-]
dbg.Columns.Items[0].width; //o heigth
//tambien
dbg.columns[0].width

en diseño creo que no sería conveniente ya que cambias el datasourse dependiendo de la combinación que haga el usuario.... pero si quieres probar, en al propiedad columns puedes agregar las columnas que vayas a visualizar y cada una modificarla a tu antojo.
__________________

Responder Con Cita
  #11  
Antiguo 26-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
El width que le pone automaticamente es el que indique en Campo.DisplayWidth en la definición de su tabla y/o query.

Un saludo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:38:12.


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