Ver Mensaje Individual
  #7  
Antiguo 20-02-2014
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Reputación: 14
bulc Va por buen camino
Qué sistema de bases de datos usas?

Cita:
Empezado por apicito Ver Mensaje
He estado leyendo varios tutoriales sobre DBExpress pero no acabo de entender cual es la dinámica adecuada para trabajar con estos componentes. Sobre un ejemplo de formulario de edición real voy a explicar mis dudas haber si alguien me puede echar una mano para entenderlos.
En el formulario tengo cuatro conjuntos de componentes DBExpress, compuestos cada uno por TSQLQuery, TDataSetProvider, TClientDataset y TDataSource.
Un conjunto apuntando al registro que quiero editar "Expte" y los otros 3 para rellenar 3 DBLookupComboBox (Tipo,Zona y Estado).
En el onShow del formulario cargo los combos y dependiendo de una variable Modo [ (A) Append y (M) Edit ] edito un registro. Este es el código:
Código Delphi [-]
procedure TAveriasExpteEdit.UniFormShow(Sender: TObject);
begin

   CargaTipos;
   CargaZonas;
   CargaEstados;

   cdsExpte.Close;
   queryExpte.CommandText := 'select * from AVEAVEDIA where AVEDIA_CODIGO=:codigo';
   cdsExpte.Params.ParamByName('codigo').AsInteger := Codigo;
   cdsExpte.Open;
   case Modo of
    'A' : cdsExpte.Append;
    'M' : cdsExpte.Edit;
   end;

end;
y cargo los datos de los combos:
Código Delphi [-]
procedure TAveriasExpteEdit.CargaTipos;
begin
  cdsTipo.Close;
  queryTipo.CommandText :=  'select AVETIP_CODIGO,AVETIP_DESCRIP,AVETIP_ACTIVO '+
                   'from AVEAVETIP where AVETIP_ACTIVO=1 order by AVETIP_DESCRIP';
  cdsTipo.Open;
end;
Cuestiones:
1. Está bien que las operaciones de apertura y cierre se hagan sobre el ClientDataset?
2. El CommandText y la carga de parametros (cdsExpte.Params.ParamByName('codigo').AsInteger := Codigo;) debe aplicarse sobre el TSQLQuery o sobre el clientDataSet?
3. En definitiva, como de correcto es el código que he puesto arriba?:
Un saludo.
¿Usas Firebird?
Responder Con Cita