Cita:
Empezado por Neftali [Germán.Estévez]
No.
Yo estoy pensando en llenar las columnas del DBGrid. Pero eso sólo debes hacerlo 1 vez. No debes hacerlo por cada fila (registro).
|
Vos decis que haciendolo solo una vez al agregar un nuevo registro, apareceran los codigos?
Hasta ahora hice esto(como me habias dicho el afterOpen):
Código Delphi
[-]procedure TDataModule1.cdsptemporalAfterOpen(DataSet: TDataSet);
begin
SetupGridPickList('Codigo','Select * from productos;');
end;
Código Delphi
[-] procedure TDataModule1.SetupGridPickList(const FieldName, sql: string);
var
slPickList:TStringList;
Query : TSQLQuery;
i : integer;
begin
slPickList:=TStringList.Create;
Query := TSQLQuery.Create(self);
Query.SQLConnection :=DataModule1.CONEXION;
Query.SQL.Text := sql;
Query.Open;
Query.First;
while not Query.eof do
begin
slPickList.Add(Query.Fields[9].AsString);
Query.Next;
end;
Form3.gpedido.Columns[1].PickList:=slPickList;
end;
Pero me da access violation y no compila:
Form3.gpedido.Columns[1].PickList:=slPickList; Gpedido es la grilla en cuestion.
Por otro lado el onchange de codigo funciona perfecto:
Código Delphi
[-]procedure TDataModule1.cdsptemporalCodigoChange(Sender: TField);
var
Queryn : TSQLQuery;
i : integer;
begin
Queryn := TSQLQuery.Create(self);
Queryn.SQLConnection :=DataModule1.CONEXION;
Queryn.SQL.Text :='SELECT NomProducto,PrecioActual from productos where Codigo="'+cdsptemporalCodigo.AsString + '"';
Queryn.Open;
DataModule1.cdsptemporalidcliente.AsInteger:=DataModule1.cdsclientesIdCliente.AsInteger;
qlistapedido.ParamByName('idcl').AsInteger:=DataModule1.cdsptemporalidcliente.AsInteger;
qlistapedido.Open;
DataModule1.cdsptemporallista.AsString:=qlistapedido.Fields[1].AsString;
DataModule1.cdsptemporalPrecio.AsFloat:=Queryn.Fields[1].AsFloat;
DataModule1.cdsptemporalNomProducto.AsString:= Queryn.Fields[0].AsString;
end;