⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit3.pas

📁 用于开发税务票据管理的软件
💻 PAS
字号:
unit Unit3;

interface
(* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa*)

              {销售窗体}

(* bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb*)

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, unit2, StdCtrls, DB, ADODB, XPMenu;

type
  TForm3 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    Edit5: TEdit;
    Label6: TLabel;
    Edit6: TEdit;
    Label7: TLabel;
    Edit7: TEdit;
    Label8: TLabel;
    Edit8: TEdit;
    Label9: TLabel;
    Edit9: TEdit;
    Label10: TLabel;
    Edit10: TEdit;
    Button1: TButton;
    ComboBox1: TComboBox;
    XPMenu1: TXPMenu;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Select(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);
    procedure Edit9Exit(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
    procedure nxt(var msg:tmessage);MESSAGE wM_NCHitTest;// message wm_char;
    procedure wmchar(var age:twmchar);message wm_char;
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}
procedure tform3.nxt; //磁性窗体
begin
 inHerited;   //继承,窗体可以继续处理以后的事件
// if msg.Result=vk_return then postmessage(self.Handle,vk_tab,0,0);

if MSG.Result=htclient then

      MSG.Result := htcaption;
end;
procedure tform3.wmchar;
begin
if age.charcode=13 then
postmessage(self.handle,wm_NEXTDLGCTL,0,0);
end;

procedure TForm3.FormCreate(Sender: TObject);

var
  lst:tADOquery;
begin          //将型号加入到复选框中
combobox1.Items.Clear;
lst:=TADOquery.Create(nil);
lst.Connection:=dbs.ADOConnection1 ;
lst.SQL.Add('select * from 库存详单');
lst.Open;
lst.First;
while  (not lst.Eof) do
begin
combobox1.Items.Add(lst.FieldValues['型号']);
lst.Next;
end;
lst.Free;//释放资源。
edit8.Text:=datetostr(now);  //将当前日期写销售时间表中。
end;

procedure TForm3.ComboBox1Select(Sender: TObject);
var lst1:TADOquery;
s:string;
begin
//从库存表中取出符合同型号的价格。
lst1:=Tadoquery.Create(nil);
lst1.Connection:=dbs.ADOConnection1;
s:=combobox1.Text;
lst1.close;
lst1.SQL.add('select * from  库存详单');
lst1.SQL.Add('where 型号=');
lst1.SQL.Add(''''+combobox1.text+'''');
lst1.SQL.add('and  进货时间=(select min(进货时间) from 库存详单');
lst1.SQL.add('where 型号='''+combobox1.text+''')');

lst1.Open;
lst1.First;
edit6.Text:=lst1.FieldValues['进价'];  //取价
lst1.Free;
end;

procedure TForm3.Edit2Exit(Sender: TObject);
{根据串号来从进货表中获取这台小灵通的详细资料}
var lst:tADOquery;
begin
lst:=tADOquery.Create(nil);
lst.Connection:=dbs.ADOConnection1;
lst.Close;
lst.SQL.Add('select * from 进货详单');
lst.SQL.add('where 串号=');
lst.sql.add(''''+edit2.Text+'''');
lst.Open;
try
//首先判断这个串号是不是存在;如果不存在当然不可以了。
if lst.IsEmpty then begin
showmessage ('我以为这个串号是不存在的,请查阅');
edit2.clear;
exit;
end;

//第一次离开时有可能引发异常。
edit3.Text:=lst.FieldValues['进货时间'];
edit4.Text:=lst.FieldValues['供贷方'];
edit5.text:=lst.FieldValues['进价'];
finally
lst.Free;
end;
end;


procedure TForm3.Edit9Exit(Sender: TObject);
begin    //失去焦点时计算利润
edit10.Text:=floattostr(strtofloat(edit9.Text)-strtofloat(edit6.Text));
end;

procedure TForm3.Button1Click(Sender: TObject);
var cn:integer;
lst1,lst2:tadoquery;
begin
//先判断这台是否在进货表中,并且要确定不在销售表上;
lst1:=tadoquery.Create(nil);
lst1.Connection:=dbs.ADOConnection1;
lst2:=tadoquery.Create(nil);
lst2.Connection:=dbs.ADOConnection1; //初始化两表
lst1.SQL.Clear;
lst2.SQL.Clear;
lst1.SQL.add(format('select * from 进货详单 where 串号=''%s'' and 型号=''%s''',
                     [edit2.text,combobox1.text]));
lst2.SQL.Add(format('select * from 销售情况 where 串号=''%s'' and 型号=''%s''',
                     [edit2.text,combobox1.text]));
lst1.Open;
lst2.Open;
if lst1.IsEmpty or (not lst2.IsEmpty) then //进货表中不存在,或销售表中已有,不合法
 begin
  showmessage('是不是没有进这台啊。或者这台已经卖出?');
  exit;
 end;

if messagedlg('你确定要卖出此台?',mtconfirmation,[mbyes,mbno],0)=mrno then exit;
dbs.db3.Edit;
dbs.db3.Append;
 try
  //将数据进入到销售情况表中
dbs.db3.FieldValues['型号']:=combobox1.Text;
dbs.db3.FieldValues['串号']:=edit2.Text;
dbs.db3.FieldValues['进货时间']:=edit3.Text;
dbs.db3.FieldValues['供货方']:=edit4.Text;
dbs.db3.FieldValues['进价1']:=edit5.Text;
dbs.db3.FieldValues['进价2']:=edit6.Text;
dbs.db3.FieldValues['买主']:=edit7.Text;
dbs.db3.FieldValues['销售时间']:=edit8.Text;
dbs.db3.FieldValues['销售价']:=edit9.Text;
dbs.db3.FieldValues['利润']:=edit10.Text;
except
showmessage('请检查输入是否正确');
dbs.db3.Cancel;
end;
{库存中此型号的产品应该少一件}
dbs.db2.SQL.Clear;
dbs.db2.SQL.Add('select * from 库存详单 where 型号='''+combobox1.Text+'''');
dbs.db2.Open;
dbs.db2.First;
dbs.db2.Edit;
cn:=dbs.db2.FieldValues['数量'];
dbs.db2.FieldValues['数量']:=cn-1; //从库存中删除一件该型号产品。
dbs.db2.Post;//向库存提交;
cn:=dbs.db2.FieldValues['数量'];
dbs.db3.Post; //提交
if cn<=0 then dbs.db2.Delete; //如果没有货就将其从库存中删除;
showmessage('交易完成,谢谢!');
edit2.Clear;
self.Close;

end;

procedure TForm3.FormShow(Sender: TObject);
begin
self.FormCreate(nil);
end;

procedure TForm3.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then postmessage(handle,wm_nextdlgctl,0,0);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -