Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema -> TDataSet & DBLoockUpComboBox (https://www.clubdelphi.com/foros/showthread.php?t=75050)

n3ri 27-07-2011 00:28:19

Problema -> TDataSet & DBLoockUpComboBox
 
Saludos colegas
Debo decir que hace mucho comencé a experimentar en Delphi, pero hasta esta fecha que me surgió la oportunidad de empezar un proyecto formal con este lenguaje.

Mi problema es el siguiente:
Tengo un formulario para ingresar productos, en el cual debo especificar la familia a la que corresponde tal producto y esta acción a su vez, debe mostrar las presentaciones que corresponden a tal familia, este procedimiento lo planteo con 2 DBLoockUpComboBox y establezco las siguientes propiedades:

Cita:

comboFamilias
KeyField: id
ListField: familia
ListSource: moduloConexion.sourceFamilia

comboPresentacion
KeyField : id
ListField : presentacion
ListSource : moduloConexion.sourcePresentaciones
Los datos que deben mostrarse los obtengo a través de un DataSource conectado a un DataSet con los siguientes parámetros:

Cita:

dataFamilias
Active: True
CommandText:
Código SQL [-]
select idfam as id, nombre as familia from productos_familias
Connection: bdConexion
Cita:

dataPresentaciones
Active: True
CommandText:
Código SQL [-]
select cdp as id, presentacion from productos_presentacion presentaciones
inner join productos_familias familias
on (presentaciones.idfam = familias.idfam)
where presentaciones.idfam = :familia
Connection: bdConexion

De este modo defino el parámetro familia para el dataPresentaciones así:

familia
DataType: Smallint
Direction: pdInput
En este punto el comboFamilia me despliega correctamente las familias, ahora busco que al al seleccionar una familia el comboPresentacion me despliegue sus presentaciones correspondientes, a través del evento Click:

Código Delphi [-]
procedure TnuevoProducto.comboFamiliaClick(Sender: TObject);
begin
  keyFamilia := comboFamilia.KeyValue;
moduloConexion.dataPresentaciones.Parameters.ParamByName('familia').Value := keyFamilia;
end;

Como se puede notar, estoy tratando de enviar el parámetro familia al dataPresentaciones para que la consulta me despliegue la información que le corresponde, pero no sucede así, simplemente no despliega nada.

Pienso que estoy omitiendo alguna otra instrucción que complete el envió del parámetro ¿Ustedes que opinan? Saludos nuevamente y de antemano les agradezco infinitamente su tiempo.

juanlaplata 28-07-2011 21:14:06

Bueno, veamos si entendi, al momento q despliega correctamente las familias, hay algo en la lista de presentaciones ?
Osea, antes de elegir una familia.
Tendrias q ver si se esta haciendo un requery de moduloConexion.sourcePresentaciones
En una oportudidad tuve q hacer algo asi:
Código Delphi [-]

...Dataset.Close;
...Dataset.Params[0].AsString := .... ;
...Dataset.Open;

Suerte ...

n3ri 29-07-2011 06:11:07

¡Solucionado!
 
Gracias por la respuesta, básicamente cometía un error de novato, olvidaba poner la sentencia entre las clausulas .Close y .Open que me indicas, así:

Código Delphi [-]
  ...
  moduloConexion.dataPresentaciones.Close;
  moduloConexion.dataPresentaciones.Parameters.ParamByName('familia').Value := keyFamilia;
  moduloConexion.dataPresentaciones.Open;
  ...

nuevamente gracias y damos el tema por resuelto


La franja horaria es GMT +2. Ahora son las 16:20:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi