Ver Mensaje Individual
  #6  
Antiguo 30-10-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Cita:
Empezado por Bauhaus1975 Ver Mensaje
yo intento no tener funciones 'sueltas', sólo métodos de clase.
Entonces creas una clase llamada TVentanaAdmin con el método AbrirVentana (no tomes al pié de la letra lo que digo, ya que para que se entienda, omito algunos detalles de implementación ).

Cita:
Empezado por Bauhaus1975 Ver Mensaje
Haria falta para ello tener definido para cada entidad (cliente, factura etc) que parametros son necesarios para búsquedas rápidas.
Si sigues la metodología que digo, siempre buscarás por el campo principal de la tabla.

La ventana de búsqueda, puede tener un método llamado "LookUp" que hace un fieldbyname sobre el query de búsqueda, devolviendo un Variant por ejemplo. De esta forma la ventana de búsqueda puede devolver en tiempo de ejecución cualquier campo del dataset.

Otra forma de afrontar las búsquedas, es usando una tabla de configuración, por ejemplo la tabla config tiene dos campos de tipo string:
Código:
codigo                     Valor
-------------------------------------------------------------------------
ClientesSQL                select * from Vistaclientes where %s
ClientesFieldsSearch       Nombre,Dni,Domicilio,Telefono
FacturaSQL                 select * from Vistafacturas where %s order by numFactura
FacturaFieldsSearch        numFactura,Cliente,fecha
De esta forma una ventana general de búsqueda puede cargar dinámicamente los campos y SQLs, formateándolo sin importar en qué tabla está buscando. Como ves, uso una Vista (view si el motor lo soporta), donde se muestra el nombre del cliente que obviamente la tabla Facturas no lo tendrá (solo guardará el IDCliente).

"FieldsSearch" puede cargarse en el commaText de un ComboBox, por ejemplo, para que el usuario decida el campo de búsqueda y pueda añadir varios criterios a la vez.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita