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 10-07-2013
pape19 pape19 is offline
Miembro
 
Registrado: jul 2010
Posts: 96
Poder: 14
pape19 Va por buen camino
Creación automática de formulario por Query

Buenos días.

Tengo un árbol, con diferentes consultas a la base de datos. Cada consulta(IBQuery) tiene ciertos parámetros, como pueden ser, fechas, tipo de comprobante, familia de artículos, etc. Estos parámetros se pasan por la interfaz, por medio de componentes estilo Edit y LookUp, etc.

Mi problema es que para cada Query, necesito un Formulario distinto para ingresar los parámetros.

Existe algún componente, intérprete, etc; que me cree automáticamente un formulario, con los componentes necesarios, para poder ingresar los parámetros? Esto leería un código propio de la Query pero q no forma parte del SQL de la misma, donde se establecería que y cuantos componentes de cada tipo de necesitan, y con que propiedades.

Saludos
Responder Con Cita
  #2  
Antiguo 10-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Más o menos se entiendes lo que quieres, pero sería conveniente que ampliaras la información con más detalle.
Responder Con Cita
  #3  
Antiguo 11-07-2013
pape19 pape19 is offline
Miembro
 
Registrado: jul 2010
Posts: 96
Poder: 14
pape19 Va por buen camino
Ejemplo, tengo dos consultas.

Sistema de un Negocio de Electrónica.

1) Cantidad de ventas en un período.

2) Cantidad de TV LED vendidos.

Voy a tener para cada consulta, su respectivo SQL con parámetros. En la primera, los parámetros serán, Fecha_Inicio y Fecha_Fin, indicados en dos DateTimePicker en un form. La segunda, el parámetro será Tipo_Artículo (TV LED), indicados en una combo en otro form.

Es decir, hasta aca tengo 2 form, creados en tiempo de diseño, uno para cada Query. En caso de tener 1000 Querys con parámetros, debería crear 1000 forms.

Lo que quiero, es que al llamar a una Query, previamente se lea código parecido a lo siguiente(Ejemplo Query 1 mencionada):

Código Delphi [-]
<#PARAM NAME=FEC_DESDE TYPE=tdDate CAPTION="Fecha desde">
<#PARAM NAME=FEC_HASTA TYPE=tdDate CAPTION="Fecha hasta">

Donde debería haber un intérprete, que al leer eso, cree en tiempo de ejecución un form con dos datetimepicker. Quiero ahorrarme hacer el intérprete.
Responder Con Cita
  #4  
Antiguo 11-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por pape19 Ver Mensaje
Quiero ahorrarme hacer el intérprete.
Precisamente, eso es lo que sí tienes que hacer, algún "intérprete" para todos los tipos de informes.

Lo normal es tener en una tabla todos los informes y sus parámetros, tipos de datos, valores predeterminados, tipo de componente a mostrar, etc.
Y luego crear el formulario con esos datos extraidos de la tabla.

También puedes hacer algo "sencillo" de la forma en que comentas, pero tienes que hacerlo, no hay nada hecho que te solucione esa problemática. Que yo sepa.
Responder Con Cita
  #5  
Antiguo 11-07-2013
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Yo lo hice alguna vez de forma muy simple, explicarlo no va a ser fácil XD:

Primero tienes el form general que mostrará los parámetros. Dentro de él tienes un Scrollbox (por ejemplo), y ahora diseñas cada serie de parámetros en un TFrame distinto. (Quien dice TFrames, también dice una serie de paneles ocultos en el form, que los haces visible según quieras).

Por ejemplo:
- Un Frame que tenga dos TDateTimePicker, (para seleccionar las fechas inicio y fin)
- Otro frame que tenga un combo con las opciones a mostrar, etc.

Ahora en el form te creas un tipo enumerado:
Código Delphi [-]
type 
TSqlOption = (soFechas, soCombo);
TOptionToShow = set of TSqlOption ;

FormX = class(tform)
public
property Mostrar : TOptionToShow read FMostrar write SetMostrar;
Cuando quieras cear el form con distintos parámetros para el Sql, solo tienes que modificar la propiedad "Mostrar", de forma que en SetMostrar, lo que haces es crear los Frames adecuados, y ponerlos uno debajo de otro en el ScrollBox del Form.

Para hacerlo "más profesional", puedes quitar las barras del ScrollBox y hacer que el Form cambie de tamaño para acomodar todos los parámetros posibles.

Otra forma más laboriosa, fue crear un estilo a Windows XP, que te añade paneles a la izquierda de la ventana, cada uno con los TFrames que quieras añadir. Cosa que queda muy bien y es estandard.

Espero se entienda, cualquier duda, dispara.
__________________
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 11-07-2013
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Algo parecido a lo que propone Lepe...
Pones un form con un ValuelistEditor, y por cada parámetro das de alta una nueva clave. Luego, dependiendo del tipo de parámetro, juegas con las propiedades de cada uno.
Otro botón de ejecutar y hala, a correr.
Código Delphi [-]
for n:=0 to Query1.Params.Count-1 do
begin
  ValueListEditor1.InsertRow( ...);
  ValueListEditor1.ItemProps[ValueListEditor1.Items.Count-1].EditMask:= '...'; 
  ValueListEditor1.ItemProps[ValueListEditor1.Items.Count-1].PickList...;
   ...
end;

Seguramente podrás incorporar un calendario cuando el parámetro sea de tipo fecha.
También podrías cargar la picklist desde una query auxiliar para que el usuario seleccione de una lista. Por ejemplo, si quiero sacar la lista de estados de los pedidos ( que es uno de los parámetros ) pongo una query que me rellena los valores, para que el usuario no "meta la pata".

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #7  
Antiguo 11-07-2013
pape19 pape19 is offline
Miembro
 
Registrado: jul 2010
Posts: 96
Poder: 14
pape19 Va por buen camino
Gracias a todos por las respuestas, y sus buenas ideas.

Lo que necesito, es la creación de un form en ejecución cuando se llame a la consulta X; no tengo que realizar nada en tiempo de diseño. Veo con muy buenos ojos la creación de una tabla, un registro por parámetro, utilizando una clave compuesta entre nro_query y nro_parametro; y que cada vez que se llame a esa query recorrer esos registros creando los componentes en un form con los datos extraídos de la tabla.

Pruebo las opciones, y les comento como me fue; y si sale algo "aceptable" comparto.

Saludos y gracias!
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Detectar la creación de un formulario Estifmauin OOP 5 05-12-2010 21:04:17
Problema con Creacion de Formulario Efren2006 OOP 4 04-03-2009 20:38:47
Creación de formulario frholguin Varios 9 04-04-2007 22:51:50
Creación automática de componentes marcoszorrilla Trucos 0 30-06-2006 15:34:43
Creación Formulario ibarrols Varios 1 03-08-2003 17:40:45


La franja horaria es GMT +2. Ahora son las 18:39:28.


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