Ver Mensaje Individual
  #12  
Antiguo 21-10-2015
ciskokkid ciskokkid is offline
Registrado
NULL
 
Registrado: may 2012
Posts: 4
Reputación: 0
ciskokkid Va por buen camino
otra forma de llenar el combobox a partir de un clientdataset

no quiero decir que las formas anteriores de solucionarlo no son validas, solo quiero aportar una forma diferente de hacerlo,
llegue hasta aqui buscando como llenar un combobox desde un clientdataset, no me apetece hacer otra consulta sql con distinct porque estoy partiendo del hecho que ya tengo la informacion en un clientdataset, solo quiero que el combobox coincida con la informacion del clientdataset que estoy mostrando en un grid

este es mi codigo
Código Delphi [-]


begin
   // hago la consulta ,  el clientdataset obtiene la informacion del query a traves de un datasetprovider
   adoquery1.Close;
   adoquery1.SQL.Text:='select c.sucursal, c.id, c.mov, c.movid, c.fechaemision ' +
                       ' , c.proveedor,prov.nombre , c.usuario,  c.referencia, ' +
                       ' c.importe, c.moneda, c.tipocambio, c.condicion,  c.autorizacion' +
                       ' from compra c ' +
                       ' join prov on prov.proveedor=c.proveedor ' +
                       ' where c.mov='      + quotedstr('ECN') +
                       ' and c.estatus='    + quotedstr('SINAFECTAR') +
                       ' order by c.sucursal,c.proveedor';
   adoquery1.Prepared:=true;
   adoquery1.Open;

   // ahora limpio el combobox, recorro el clientdataset y simplemente voy comprobando si el valor "usuario"
   // no esta en el combo lo agrego

   cbUsuario.clear;
   cbUsuario.Items.Add('TODOS');              // este sera el primer valor
   clientdataset1.First;
   while not clientdataset1.Eof do
   begin
       if cbUsuario.items.indexOf(clientdataset1.FieldByName('usuario').AsString)<=0 then
          cbUsuario.Items.Add(clientdataset1.fieldByName('usuario').asstring);
       clientdataset1.Next;
   end;
   cbUsuario.ItemIndex:=0;                          // para que  por default ponga  por defecto el primer valor
   cbUsuario.style:=csDropDownList;             //  para que el usuario no agregue mas valores al combo

end

la informacon consultada son pocos registros, no mas de 50, de esta manera evito enviar otra consulta por separada al servidor sql
Responder Con Cita