Hola a todos!
Otra vez molestando...
Quiero armar un procedimiento para no acceder directamente a Modulo.Consulta_Int y a diferencia de otro hilo que abrí, se me presenta la dificultad de que voy cambiando el valor del parámetro en el loop y no tengo la menor idea de como solucionarlo.
El código es el siguiente:
Código Delphi
[-]Grid.Perform(WM_SETREDRAW, 0, 0);
Try
Modulo.Consulta_Int.Active := FALSE;
Modulo.Consulta_Int.SQL.Clear;
Modulo.Consulta_Int.SQL.Add('SELECT Cod_Producto, Desc_Producto, Precio FROM Productos');
Modulo.Consulta_Int.SQL.Add('WHERE Cod_Producto = : pCod_Producto');
Repeat
ParseRecord(Datos[i],Delimitador, Codigo_Articulo, Precio_Articulo);
Modulo.Consulta_Int.Active := FALSE;
Modulo.Consulta_Int.Parameters.ParamByName('pCod_Producto').Value := Codigo_Articulo;
Modulo.Consulta_Int.Active := TRUE;
If not Modulo.Consulta_Int.IsEmpty then
If Modulo.Consulta_Int.FieldByName('Precio').AsString <> Precio_Articulo then
begin
Grid.Cells[0, Grid.RowCount -1] := Modulo.Consulta_Int.FieldByName('Cod_Producto').AsString;
Grid.Cells[1, Grid.RowCount -1] := Modulo.Consulta_Int.FieldByName('Desc_Producto').AsString;
Grid.Cells[2, Grid.RowCount -1] := Modulo.Consulta_Int.FieldByName('Precio').AsString;
Grid.Cells[3, Grid.RowCount -1] := Precio_Articulo;
If (TryStrToFloat(Grid.Cells[3, Grid.RowCount -1], temp) = TRUE) then
Grid.Cells[4, Grid.RowCount -1] := Format('%.2n',[((StrToFloat(Precio_Articulo) / Modulo.Consulta_Int.FieldByName('Precio').AsFloat) - 1) * 100]);
Grid.RowCount := Grid.RowCount + 1;
end
Else
Omitidos := Omitidos + 1;
i := i + 1;
Until i > Datos.Count -1;
Finally
Grid.Perform(WM_SETREDRAW, 1, 0);
Grid.Invalidate;
end;
Cualquier consejo será bienvenido.
Saludos!!!