UnitSell.pas
上传用户:zexin0769
上传日期:2010-01-19
资源大小:443k
文件大小:8k
源码类别:

百货/超市行业

开发平台:

Delphi

  1. unit UnitSell;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  5.   Dialogs, ExtCtrls, DB, ADODB, Grids, DBGrids, StdCtrls, Mask, DBCtrls;
  6. type
  7.   TFrameSell = class(TFrame)
  8.     Image1: TImage;
  9.     Image2: TImage;
  10.     DBGrid1: TDBGrid;
  11.     ADOQuery1: TADOQuery;
  12.     DataSource1: TDataSource;
  13.     Panel1: TPanel;
  14.     Label1: TLabel;
  15.     Label2: TLabel;
  16.     Image3: TImage;
  17.     DBEdit1: TDBEdit;
  18.     DBEdit2: TDBEdit;
  19.     GroupBox1: TGroupBox;
  20.     Label3: TLabel;
  21.     Label4: TLabel;
  22.     Label5: TLabel;
  23.     Edit1: TEdit;
  24.     Image4: TImage;
  25.     Image5: TImage;
  26.     Image6: TImage;
  27.     DBEdit3: TDBEdit;
  28.     DBEdit4: TDBEdit;
  29.     Image7: TImage;
  30.     Label7: TLabel;
  31.     procedure Image2Click(Sender: TObject);
  32.     procedure DBEdit1KeyPress(Sender: TObject; var Key: Char);
  33.     procedure Image3Click(Sender: TObject);
  34.     procedure Image5Click(Sender: TObject);
  35.     procedure DBEdit2KeyPress(Sender: TObject; var Key: Char);
  36.     procedure Image6Click(Sender: TObject);
  37.     procedure DBGrid1CellClick(Column: TColumn);
  38.     procedure Image7Click(Sender: TObject);
  39.     procedure Image4Click(Sender: TObject);
  40.     function IsAllNum(s:string):bool;
  41.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  42.     procedure Label7Click(Sender: TObject);
  43.   private
  44.     { Private declarations }
  45.   public
  46.     { Public declarations }
  47.   end;
  48. implementation
  49. uses UnitLogin;
  50. var
  51.   ADOQuery2: TADOQuery;
  52.   MoneyTotal: Real;
  53. {$R *.dfm}
  54. procedure TFrameSell.Image2Click(Sender: TObject);
  55. begin
  56.   DBEdit1.Color := clWhite;
  57.   DBEdit2.Color := clWhite;
  58.   DBEdit1.Enabled := True;
  59.   DBEdit2.Enabled := True;
  60.   ADOQuery1.Active := True;
  61.   ADOQuery1.Append;
  62.   DBEdit1.SetFocus;
  63.   image2.Enabled := False;
  64.   image3.Visible := True;
  65.   image5.Visible := True;
  66.   image6.Visible := True;
  67. end;
  68. procedure TFrameSell.DBEdit1KeyPress(Sender: TObject; var Key: Char);
  69. begin
  70.   if Key=#13 then DBEdit2.SetFocus;
  71. end;
  72. procedure TFrameSell.Image3Click(Sender: TObject);
  73. var
  74.   i: Integer;
  75. begin
  76.   {提交数据}
  77.   if (DBEdit1.Text<>'') and (DBEdit2.Text<>'') then
  78.   begin
  79.     ADOQuery2:= TADOQuery.Create(self);
  80.     ADOQuery2.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DataFile+';Persist Security Info=False;';
  81.     ADOQuery2.SQL.Clear;
  82.     ADOQuery2.SQL.Add('select * from t_prod where prod_id=' + DBEdit1.Text);
  83.     ADOQuery2.Open;
  84.     if ADOQuery2.Eof then
  85.     begin
  86.       messagebox(handle,'数据库中没有该商品编号!','重新输入',mb_iconwarning+mb_ok);
  87.       DBEdit1.SelectAll;
  88.       DBEdit1.SetFocus;
  89.       exit;
  90.     end;
  91.     if ADOQuery2.FieldByName('prod_stock').AsInteger < strtoint(DBEdit2.Text) then
  92.     begin
  93.       messagebox(handle,pchar('应该商品当前库存为 '+ADOQuery2.FieldByName('prod_stock').AsString+' ,不足所输销售数量!'),'重新输入',mb_iconwarning+mb_ok);
  94.       DBEdit2.SelectAll;
  95.       DBEdit2.SetFocus;
  96.       exit;
  97.     end;
  98.     DBEdit3.Text := ADOQuery2.FieldByName('prod_name').AsString;
  99.     DBEdit4.Text := ADOQuery2.FieldByName('prod_price').AsString;
  100.     ADOQuery2.Free;
  101.     ADOQuery1.Post;
  102.     MoneyTotal := 0;
  103.     for i:=1 to ADOQuery1.RecordCount do
  104.     begin
  105.       MoneyTotal := MoneyTotal + ADOQuery1.FieldByName('sell_prod_Price').AsVariant * ADOQuery1.FieldByName('sell_number').asinteger;
  106.       ADOQuery1.Prior;
  107.     end;
  108.     Label4.Caption := FloatToStr(MoneyTotal);
  109.     ADOQuery1.Append;
  110.     DBEdit1.SetFocus;
  111.     Edit1.Color := clWhite;
  112.     Edit1.Enabled := True;
  113.     Image4.Enabled := True;
  114.     Label7.Enabled := True;
  115.   end
  116.   else
  117.     messagebox(handle,'您的输入不正确(空值)!','检查输入',mb_iconwarning+mb_ok)
  118. end;
  119. procedure TFrameSell.Image7Click(Sender: TObject);
  120. var
  121.   i: integer;
  122. begin
  123.   ADOQuery1.Edit;
  124.   ADOQuery1.Post;
  125.   Image7.Visible := False;
  126.   MoneyTotal := 0;
  127.   for i:=1 to ADOQuery1.RecordCount do
  128.   begin
  129.     MoneyTotal := MoneyTotal + ADOQuery1.FieldByName('sell_prod_Price').AsVariant * ADOQuery1.FieldByName('sell_number').asinteger;
  130.     ADOQuery1.Prior;
  131.   end;
  132.   Label4.Caption := FloatToStr(MoneyTotal);
  133.   ADOQuery1.Append;
  134. end;
  135. procedure TFrameSell.Image5Click(Sender: TObject);
  136. var
  137.   i: integer;
  138. begin
  139.   ADOQuery1.Cancel;
  140.   for i:=1 to ADOQuery1.RecordCount do
  141.     ADOQuery1.delete;
  142.   DBEdit1.Color := $00FFF0DC;
  143.   DBEdit2.Color := $00FFF0DC;
  144.   DBEdit1.Enabled := False;
  145.   DBEdit2.Enabled := False;
  146.   ADOQuery1.Active := False;
  147.   image2.Enabled := True;
  148.   image3.Visible := False;
  149.   image5.Visible := False;
  150.   image6.Visible := False;
  151.   Image7.Visible := False;
  152.   Edit1.Text := '';
  153.   Label4.Caption := '0';
  154.   Edit1.Color := $00FFF0DC;
  155.   Image4.Enabled := False;
  156.   Label7.Enabled := False;
  157.   Edit1.Enabled := False;
  158. end;
  159. procedure TFrameSell.DBEdit2KeyPress(Sender: TObject; var Key: Char);
  160. begin
  161.   if Key=#13 then Image3Click(self);
  162. end;
  163. procedure TFrameSell.Image6Click(Sender: TObject);
  164. var
  165.   i: integer;
  166. begin
  167.   ADOQuery1.Cancel;
  168.   if ADOQuery1.RecordCount>0 then ADOQuery1.Delete;
  169.   if ADOQuery1.RecordCount<=0 then
  170.   begin
  171.     Edit1.Text := '';
  172.     Label4.Caption := '0';
  173.     Edit1.Color := $00FFF0DC;
  174.     Image4.Enabled := False;
  175.     Label7.Enabled := False;
  176.     Edit1.Enabled := False;
  177.   end;
  178.   MoneyTotal := 0;
  179.   for i:=1 to ADOQuery1.RecordCount do
  180.   begin
  181.     MoneyTotal := MoneyTotal + ADOQuery1.FieldByName('sell_prod_Price').AsVariant * ADOQuery1.FieldByName('sell_number').asinteger;
  182.     ADOQuery1.Prior;
  183.   end;
  184.   Label4.Caption := FloatToStr(MoneyTotal);
  185.   ADOQuery1.Append;
  186.   Image7.Visible := False;
  187. end;
  188. procedure TFrameSell.DBGrid1CellClick(Column: TColumn);
  189. begin
  190.   Image7.Visible := True;
  191. end;
  192. procedure TFrameSell.Image4Click(Sender: TObject);
  193. var
  194.   i: integer;
  195. begin
  196.   if (Edit1.Text<>'') and IsAllNum(Edit1.Text) then
  197.   begin
  198.     if (StrToFloat(Edit1.Text)<MoneyTotal) then
  199.     begin
  200.       messagebox(handle,pchar('应该收金额为 '+FloatToStr(MoneyTotal)+' 元,收款不足!'),'检查输入',mb_iconwarning+mb_ok);
  201.       exit;
  202.     end;
  203.     ADOQuery1.Cancel;
  204.     {!!!!!! = 库存量相应减少代码 = !!!!!}
  205.     for i:=1 to ADOQuery1.RecordCount do
  206.     begin
  207.       ADOQuery2:= TADOQuery.Create(self);
  208.       ADOQuery2.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DataFile+';Persist Security Info=False;';
  209.       ADOQuery2.SQL.Clear;
  210.       ADOQuery2.SQL.Add('update t_prod set prod_stock=prod_stock-'+ADOQuery1.FieldByName('sell_number').AsString+',prod_sale=prod_sale+'+ADOQuery1.FieldByName('sell_number').AsString+'  where prod_id='+ADOQuery1.FieldByName('sell_prod_id').AsString);
  211.       ADOQuery2.ExecSQL;
  212.     end;
  213.     ADOQuery1.SQL.Clear;
  214.     ADOQuery1.SQL.Add('update t_sell set sell_pay = 1');
  215.     ADOQuery1.ExecSQL;
  216.     ADOQuery1.SQL.Clear;
  217.     ADOQuery1.SQL.Add('select * from t_sell where not sell_pay');
  218.     Messagebox(handle,pchar('找零 '+FloatToStr(StrToFloat(Edit1.Text)-MoneyTotal)+' 元,谢谢惠顾!'),'销售完成',mb_iconwarning+mb_ok);
  219.     DBEdit1.Color := $00FFF0DC;
  220.     DBEdit2.Color := $00FFF0DC;
  221.     DBEdit1.Enabled := False;
  222.     DBEdit2.Enabled := False;
  223.     ADOQuery1.Active := False;
  224.     image2.Enabled := True;
  225.     image3.Visible := False;
  226.     image5.Visible := False;
  227.     image6.Visible := False;
  228.     Image7.Visible := False;
  229.     Edit1.Text := '';
  230.     Label4.Caption := '0';
  231.     Edit1.Color := $00FFF0DC;
  232.     Image4.Enabled := False;
  233.     Label7.Enabled := False;
  234.     Edit1.Enabled := False;
  235.   end
  236.   else
  237.   begin
  238.     messagebox(handle,'您的输入不正确(空值或非数值)!','检查输入',mb_iconwarning+mb_ok);
  239.     Edit1.SetFocus;
  240.   end;
  241. end;
  242. function TFrameSell.IsAllNum(s:string):bool;
  243. var
  244.   i:integer;
  245. begin
  246.   for i := 1 To Length(s) do
  247.     if (s[i] < '0') or (s[i] > '9') then
  248.     begin
  249.       IsAllNum := False;
  250.       Exit;
  251.     end;
  252.   IsAllNum := True;
  253. end;
  254. procedure TFrameSell.Edit1KeyPress(Sender: TObject; var Key: Char);
  255. begin
  256.   if Key=#13 then Image4Click(self);
  257. end;
  258. procedure TFrameSell.Label7Click(Sender: TObject);
  259. begin
  260.   Image4Click(self);
  261. end;
  262. end.