Saludos amigos, donde quiera que se encuentren.
En el siguiente codigo, podran darse cuenta que funciona
como un ciclo infinito, hasta que el usuario decida detener
el programa, basicamente lo que hacemos es agregar en una tabla temporal
algunos datos para visualizarlos en un grid, luego vaciamos esos datos
en nuevas tablas para el registro de facturas, y luego limpia la tabla temporal
para poder crear nuevas facturas.
El problema consiste en lo siguiente:
agregamos los articulos con el boton1 y luego cuando tengamos
los que queramos, entonces despachamos la orden con el boton2
la cuestion es que cuando vuelo a agregar articulos,
se tranca el proceso. Justo cuando esta sumando, en esta linea:
Código Delphi
[-]
ZQuery1.SQL.Text:= 'Select Sum(Precio) as Suma From Factura';
La primera vez el lo hace bien, todo correcto,
pero la segunda vez ya no pasa de alli.
Hechenle un vistazo al codigo:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text<>'' then
begin
ZQueryBD.Close;
ZQueryBD.SQL.Text:= 'Select Codigo From Inventario Where Codigo = '+Edit1.Text;
ZQueryBD.Open;
if ZQueryBD.IsEmpty then Begin
ShowMessage('El Codigo del Producto es Invalido o NO esta Registrado');
End
Else
Begin
if StrToInt(Edit2.Text)>=1 then
begin
DataSourceBD.Enabled:= True;
ZQueryBD.Close;
ZQueryBD.SQL.Text:= 'Insert Into Factura (Articulo, Cantidad, Precio) Select Articulo, '+Edit2.Text+', Precio*'+Edit2.Text+' From Inventario Where Codigo = '+Edit1.Text;
ZQueryBD.ExecSQL;
ZQueryBD.Close;
ZQueryBD.SQL.Text:= 'Select * From Factura';
ZQueryBD.Open;
ZQuery1.Close;
ShowMessage('La suma de los precios');
ZQuery1.SQL.Text:= 'Select Sum(Precio) as Suma From Factura';
ShowMessage('agregado');
ZQuery1.Open;
ShowMessage('sumados');
Edit3.Text:= ZQuery1.FieldByName('Suma').AsString+' BsF';
Monto:= ZQuery1.FieldByName('Suma').AsString;
end
Else
begin
ShowMessage('La Cantidad debe ser Mayor o Igual que 1');
end;
End;
end
Else
begin
ShowMessage('Ingrese un Codigo');
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
Var
Codigo:Integer;
begin
DataSourceBD.Enabled:= False;
ZQueryBD.Close;
ZQueryBD.SQL.Text:= 'Insert Into RFac (Monto, Fecha, Hora) Values ('+Monto+', Date(), Time())';
ZQueryBD.ExecSQL;
ZQuery1.Close;
ZQuery1.SQL.Text:= 'Select Max(CodigoFactura) as CodigoFactura From RFac';
ZQuery1.Open;
Codigo:= ZQuery1.FieldByName('CodigoFactura').AsInteger;
ZQueryBD.Close;
ZQueryBD.SQL.Text:= 'Create Table F_'+IntToStr(Codigo)+' (NumArticulo Integer Not Null Primary Key AutoIncrement, Articulo Char(48), Cantidad Integer, Precio Decimal)';
ZQueryBD.ExecSQL;
ZQueryBD.Close;
ZQueryBD.SQL.Text:= 'Insert Into F_'+IntToStr(Codigo)+' (Articulo, Cantidad, Precio) Select Articulo, Cantidad, Precio From Factura';
ZQueryBD.ExecSQL;
ZQueryBD.Close;
ZQueryBD.SQL.Text:= 'Insert Into F_'+IntToStr(Codigo)+' (Precio) Values ('+Monto+')';
ZQueryBD.ExecSQL;
ZQueryBD.Close;
ZQueryBD.SQL.Text:= 'Delete From Factura';
ZQueryBD.ExecSQL;
Monto:='';
Edit3.Text:='0.00 BsF';
Edit1.Text:='';
end;
Gracias siempre por su tiempo y su apoyo
