No puedo rellenar el picklist de un dbgrid
Publicado por Madrigal (5 intervenciones) el 03/04/2006 03:54:55
Antes que nada muchas gracias por atender mi pregunta. Estoy programando una aplicación de control de ventas e inventarios, cada producto tiene opción a 3 precios de venta diferentes. En el módulo de facturación ocupo una DBGrid en la cual la columna corespondiente al campo de "Precio Unitario" (el precio de venta del producto) maneja el modo cbsAuto, el picklist lo trato de rellenar en tiempo de ejecución con los 3 precios de venta que vienen en el registro del producto a vender. El problema es que cuando quiere comenzar a limpiar el picklist, con el solo hecho de hacer mención a el, inmediatamente provoca un error y ya no deja hacer nada. Este es el error:
"access violation at address 004D7C5F in module 'refac.exe'. Read of address 0000033C"
El código que empleo para rellenar la picklist es el siguiente:
procedure TModDatos.TRenglonesFacturasCodigoChange(Sender: TField);
begin
if TProductos.FindKey ([TRenglonesFacturasCodigo.Value]) then
begin
TRenglonesFacturasDescripcion.Value := TProductosDescripcion.Value;
MDIVentas.DBGrid1.Columns[3].PickList.Clear;
MDIVentas.DBGrid1.Columns.Items[3].PickList.Add (TProductosVenta1.AsString);
MDIVentas.DBGrid1.Columns.Items[3].PickList.Add (TProductosVenta2.AsString);
MDIVentas.DBGrid1.Columns.Items[3].PickList.Add (TProductosVenta3.AsString);
end
else
ShowMessage ('Producto no encontrado');
end;
Los campos "TProductosVenta1" hasta "TProductosVenta3" son del tipo moneda (currency), cabe señalar que ya he empleado el método de conversión "CurrToStr", lo cambié precisamente por estar probando cual me funcionaba.
El valor "Columns[3]" es el correspondiente a la columna que debe desplegar los precios de venta en el picklist, pero no se puede, ya probé todo lo habido y por haber y no hallo la explicación, si alguien sabe que ocurre por favor digamelo porque ya me urge terminar este proyecto.
"access violation at address 004D7C5F in module 'refac.exe'. Read of address 0000033C"
El código que empleo para rellenar la picklist es el siguiente:
procedure TModDatos.TRenglonesFacturasCodigoChange(Sender: TField);
begin
if TProductos.FindKey ([TRenglonesFacturasCodigo.Value]) then
begin
TRenglonesFacturasDescripcion.Value := TProductosDescripcion.Value;
MDIVentas.DBGrid1.Columns[3].PickList.Clear;
MDIVentas.DBGrid1.Columns.Items[3].PickList.Add (TProductosVenta1.AsString);
MDIVentas.DBGrid1.Columns.Items[3].PickList.Add (TProductosVenta2.AsString);
MDIVentas.DBGrid1.Columns.Items[3].PickList.Add (TProductosVenta3.AsString);
end
else
ShowMessage ('Producto no encontrado');
end;
Los campos "TProductosVenta1" hasta "TProductosVenta3" son del tipo moneda (currency), cabe señalar que ya he empleado el método de conversión "CurrToStr", lo cambié precisamente por estar probando cual me funcionaba.
El valor "Columns[3]" es el correspondiente a la columna que debe desplegar los precios de venta en el picklist, pero no se puede, ya probé todo lo habido y por haber y no hallo la explicación, si alguien sabe que ocurre por favor digamelo porque ya me urge terminar este proyecto.
Valora esta pregunta


0