Saludos amigos, estoy haciendo un carrito de compras usando
10.2.1 Tokyo y
SQL Server 2014. He aqui la situacion:
Paso 1: Identificación de Componentes Involucrados:
1. cxGrid (nombre=gridCarritoCompra),
2. TVirtualTable (nombre=vt_Carrito)
3. TVirtualQuery (nombre=q_UPDParams)
4. TUniDataSource (nombre=ds_Carrito)
5. TcxTextEdit (nombre=txtCantidad)
6. TcxTextEdit (nombre=txtPrevioVenta)
Paso 2: Descripción del Proceso
1. El Usuario busca y selecciona un producto, el cual se agrega a
vt_Carrito y se muestra en
gridCarritoCompra. (Esto funciona bien). Por defecto la cantidad del pedido agregado es 1.
2. El usuario al hacer doble clic sobre la fila que contiene el pedido de un producto en vt_Carrito, se permite cambiar la cantidad y el precio de venta en
txtCantidad y
txtPrecioVenta ubicados en la parte inferior del cxgrid.
3. Se programó el evento OnExit de
txtCantidad para ejecutar el siguiente código:
Código Delphi
[-]procedure TfrmCompras.txtCantidadExit(Sender: TObject);
begin
q_UPDParams.Close;
q_UPDParams.Params[0].AsString:=txtCantidad.Text;
q_UPDParams.Params[1].AsString:=txtPrecioVenta.Text;
q_UPDParams.Params[2].AsString:=FloatToStr(StrToFloat(txtCantidad.Text)*StrToFloat(txtPrecioVenta.Text));
q_UPDParams.Params[3].AsString:=IntToStr(idNroDetailSelecc);
q_UPDParams.ExecSQL;
gridCarritoCompraDBTableView1.DataController.DataSet.Refresh;
q_CalcTotal.Close;
q_CalcTotal.Open;
txtMontoTotal.Text:=q_CalcTotal.Fields[0].AsString;
end;
4. El Codigo SQL de
q_UPDParams es:
Código SQL
[-]UPDATE vt_Carrito
SET CANT=:NewCant,
PRECIOUNIT=:NewPrecio,
SUBTOTAL=:NewSubTotal
WHERE NRO=:NroX
5. Los Eventos Click y DblClick de la cxGrid los coloco a continuacion:
Código Delphi
[-]procedure TfrmCompras.gridCarritoCompraDBTableView1CellClick(
Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo;
AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
var
ColCant,ColPrecioVenta, ColNro:TField;
begin
ColCant:=gridCarritoCompraDBTableView1CANT.DataBinding.Field;
ColPrecioVenta:=gridCarritoCompraDBTableView1PRECIOUNIT.DataBinding.Field;
ColNro:=gridCarritoCompraDBTableView1NRO.DataBinding.Field;
txtCantidad.Text:=ColCant.AsString;
txtPrecioVenta.Text:=ColPrecioVenta.AsString;
idNroDetailSelecc:=ColNro.AsInteger;
end;
procedure TfrmCompras.gridCarritoCompraDBTableView1CellDblClick(
Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo;
AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
itemCantidad.Enabled:=True;
itemPV.Enabled:=True;
txtCantidad.SetFocus;
end;
El problema es que solo funciona la primera vez la actualización, visualizandose el cambio en la grilla, la segunda vez y subsiguientes no hace ningún cambio.
Agradezco cualquier ayuda en esto.
Americo