Ver Mensaje Individual
  #10  
Antiguo 20-02-2021
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Reputación: 12
giulichajari Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Puedes probar con algo así:

Código Delphi [-]
while not DataModule1.cdsproductos.eof do
begin
  Form3.gpedidotemp.Columns[1].PickList.Add(DataModule1.cdsproductos.FieldByName('codigo').AsString) ;
  DataModule1.cdsproductos.Next;
end;

Si te sigue dando un "Access Violation" evalua si alguno de los elementos de la línea no está asignado.
Hola German ,funciono de la siguiente manera:

Código Delphi [-]
procedure TPEDIDO.FormCreate(Sender: TObject);
var
idpedido:integer;
begin
Position := poScreenCenter;
//obtengo el pedido actual

if DBEdit1.Text<>'' then
begin
//hago la consulta con este id y obtengo el detalle
  idpedido:=StrToInt(DBEdit1.Text);
  DataModule1.qdetpedido.Close;
DataModule1.qdetpedido.ParamByName('idp').AsInteger:=idpedido;
DataModule1.qdetpedido.ExecSQL();
end;
  DataModule1.cdsproductos.First;

 while not DataModule1.cdsproductos.eof do
   begin
     PEDIDO.gpedidotemp.Columns[2].PickList.Add(DataModule1.cdsproductosCodigo.AsString) ;


       DataModule1.cdsproductos.Next;
   end;
end;

En el evento OnCreate del formulario donde esta la grilla.


Por lo menos una parte ya hice. Lo que hago con button5 es agregar un nuevo pedido.
Código SQL [-]
procedure TPEDIDO.Button5Click(Sender: TObject);
var
intUltimo:integer;
begin
//añado nuevo pedido
DataModule1.cdspedidos.Open;
DataModule1.cdspedidos.Insert;
intUltimo:=DataModule1.cdspedidos.RecordCount + 1;
DBEdit1.Text:=IntToStr(intUltimo);
//lo registro
DataModule1.cdspedidos.ApplyUpdates(0);

//lo asigno al detalle
DataModule1.qdetpedido.Close;
 DataModule1.qdetpedido.ParamByName('idp').AsInteger:=intUltimo;
  DataModule1.qdetpedido.ExecSQL;


end;

Pero la grilla de detalle de pedido no se borra. Esta grilla tiene una DatSource asociado a un TClientDataSet, y todo proviene de un query:

Código SQL [-]
select * from detallepedido where detallepedido.Idpedido=:idp;

Es decir lo que intento hacer es seleccionar de acuerdo al pedido en cuestion su detalle.
¿Cual es la manera de borrar la grilla y resetearla?
Responder Con Cita