Importar datos de Tabla relac sobre dbGrid/dbEdit

Estoy realizando un programa de Ggestión con Delphi7 - Firebird utilizando FIBPlus y DevExpressQG5.
Tengo un formulario en el que aparece una relación Maestro Detalle y en la Tabla Detalle mediante un DBlookupComboBox accedo a una tercera tabla (por ejemplo Artículos) de la que selecciono un valor, precisaría saber como en ese momento puedo hacer para que además de tomar ese valor del mismo registro Artículos del que lo he seleccionado pueda cargar otros datos, por ejemplo el precio neto y/o el literal de ese articulo.
Asimismo algo parecido debo hacer en un form con los DBEdit.
Lo he intentado pero siempre se sitúa en el primer registro de la tabla Artículos, he intentado buscar por los libros de que dispongo, las ayudas de los paquetes y a través de internet y parece ser que nadie lo ha preguntado o que es tan obvio que no se comenta.

1 respuesta

Respuesta
1
Ok, supongo que tu problema es master detail, es decir como hacer para que si seleccionar un registro del master, automáticamente te muestre los detalles de ese registro detalle, si es así, entonces haz lo siguiente.
Suponiendo que tienes 2 TQuery el master y el detail, y cada uno de ellos los enlazas a un DBGRid, para lo cual vas a tener un DataSource para cada uno, correcto...
Entonces en dataSource que esta conectado al master, tiene un evento llamado OnDataChange este evento se dispara cada ves que te mueves de registro, entonces dentro de este evento activaras tu TQuery detalle, suponiendo que el TQuery detalle tenga un parámetro el cual es la relación que hay entre los dos digamos un id.
El código seria más o menos así:
QueryDetalle.Active := false;
QueryDetalle.Params[0].Value := QueryMasterID.Value;
QueryDetalle.Active := true;
Entonces cada vez que te cambies en el master te mostrara los detalles de ese master.
Espero que esa sea tu duda, si no explícamela mejor...
No me he explicado bien.
En el datamodule tengo los FibDataset, DataSource y FibTransaction y las relaciones y navegación funcionan correctamente, al añadir un registro a través de un parámetro 'MAS_' en el Insert del SQL del Detalle me incluye el código del Master correctamente detalle, todo ok hasta ahí.
Ahora bien la Tabla Detalle por ejemplo tiene estos campos (CodID, CodArticulo, Descripción, Precio Neto) al acceder para añadir o editar un registro de la tabla Detalle el Cod de Artículo esta enlazado con la Tabla Artículos (FibDataSet, Datasource pero no es ni la Tabla Maestro ni la Detalle) a través de un dbLookcombobox me visualiza los códigos-descripción de Artículos, es ahí cuando selecciono uno y en ese momento querría traerme los datos de descripción e importe Neto y meterlos en la Tabla Detalle pero no se como hacerlo.
Yo imagino que en el Evento OnChange de la columna enlazada al DBLookComboBox debería localizar ese código en Artículos y copiar los campos, a no ser que modificanbo alguna propiedad que desconozco al acceder a través del DBLookupComboBox pueda hacer que el puntero sobre Artículos quede situado en el registro del que he seleccionado el código, no se.
Gracias.
El DBLookupCombobox tiene un evento llamado onCloseUp ahí puedes hacerlo, este evento se dispara cuando tu seleccionas una registro, entonces ahí puedes hacer otro query para traerte los demás datos que ocupas e insertarlos al detalle.
Ahora si este DBLookupCombo esta conectado a un dataSource es decir a parte de tener su listSource tiene también un dataSource y lo puedes usar para insertar o modificar algún valor, entonces utiliza los eventos del dataset que esta conectado al datasource, como el beforePost, evento que se ejecuta antes de grabar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas