Cita:
Empezado por Neftali [Germán.Estévez]
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;
if DBEdit1.Text<>'' then
begin
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?