Cita:
Empezado por Bauhaus1975
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
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