Ver Mensaje Individual
  #10  
Antiguo 30-11-2004
rochi rochi is offline
Miembro
 
Registrado: nov 2004
Ubicación: mvd, uruguay
Posts: 57
Reputación: 20
rochi Va por buen camino
Question

Hola, gracias por tu sugerencia. En realidad hice algo bastante similar. Estoy trabajando con Firebird y los componentes IBX.
Para los datos uso un IBDataSet, y para las consultas un IBQuery.

Pero tengo otro problema....lo comentaré brevemente y lo mas claro que pueda a ver si alguien puede ayudarme.

IBQuery: realiza las consultas y toma como parámetro lo digitado en un TEDit.


El código es:
procedure TFABMProducto.edSearchChange(Sender: TObject);
begin
if Length(edSearch.Text) > 0 then
if self.ComboBox.ItemIndex >= 0 then
EjecQry
else
Application.MessageBox('No seleccionó criterio de búsqueda','Atención',MB_OK)
else
Application.MessageBox('No ingresó texto de búsqueda','Atención',MB_OK)
end;


procedure TFABMProducto.EjecQry;
begin

//nom_param es una propiedad, ya inicializada antes.
DMDSProducto.ibqry.Close;

DMDSProducto.ibqry.paramByName(nom_param).AsString:= UpperCase(edSearch.Text)+'%';

if Not DMDSProducto.ibqry.Prepared then
DMDSProducto.ibqry.Prepare;

DMDSProducto.ibqry.Open;

end;

IBQuery está asociado a un DataSource propio ds_qry e IBProducto asociado a uno diferente, ds.

El resultado de esta consulta va a un DBLookUpListBox.
A medida que voy digitando, el mismo se 'llena' con los resultados ejecutados por la consulta.

Inicialización del DBLookListBox:

DBLookupListBox.DataField := 'Nro_prod';
DBLookupListBox.KeyField := 'Nro_prod';
DBLookupListBox.ListField := 'Nom_prod';

O sea que el DBLookupListBox tiene el nombre de los productos.

Por otro lado tengo los DBEdit, los cuales despliegan los campos del IBProducto (TIBDAtaset).
Ahora bien, siempre que selecciono alguno de los nombres de la lista, el DBEdit correspondiente al código que tiene asociado al nombre seleccionado, cambia correctamente, como debe ser. Es decir, si selecciono un nombre cuyo código es 5 el DBEdit despliega 5, pero el nombre no lo cambia cuando debería, queda el que estaba al inicio de la consulta.

Ejemplo:Supongamos que inicialmente tienen DBNro_Prod = 1
DBNom_prod = producto 1

Si me posiciono en la lista de nombres en el producto_n los valores son: DBNro_Prod = n
DBNom_prod = producto 1
O sea, no hubo un cambio acompasado en el nombre del producto.
Hice un Refresh en el evento ONClick del DBLookListBox para que refrescara los datos, pero no hace caso.
¿Qué estoy haciendo mal y/o que debería corregir?

gracias, rochi
Responder Con Cita