Ver Mensaje Individual
  #6  
Antiguo 11-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
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;
 //Fill the string listwhile not Query.EOF dobegin
 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;
Responder Con Cita