📄 ckd.pas
字号:
unit CKD;
interface
uses
Windows, SysUtils, Variants, Classes, Controls, Forms, Dialogs, StdCtrls,
ComCtrls, DB, WZGLCommon, ADODB, ExtCtrls, Grids, DBGrids;
type
TCKDForm = class(TForm)
pnlRight: TPanel;
pnlToolBar: TPanel;
lblCksl: TLabel;
btOk: TButton;
btClose: TButton;
edtCkSl: TEdit;
dbWZZD: TDBGrid;
pnlWzzd: TPanel;
Splitter: TSplitter;
pnlLeft: TPanel;
tvLb: TTreeView;
pnlWzlb: TPanel;
adoqWzlb: TADOQuery;
adoqWZZD: TADOQuery;
dsWzzd: TDataSource;
procedure btOkClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure tvLbChange(Sender: TObject; Node: TTreeNode);
private
{ Private declarations }
function CheckData: Boolean;
public
{ Public declarations }
FWZRec: TWZMX;
end;
implementation
{$R *.dfm}
procedure TCKDForm.btOkClick(Sender: TObject);
begin
if adoqWzzd.FieldByName('BM').AsString = '' then
begin
Showmessage('请选择物资!');
Exit;
end
else if CheckData then
begin
FWZRec.BM := adoqWzzd.FieldByName('BM').AsString;
FWZRec.CKSL := StrToFloat(edtCKSL.Text);
ModalResult := mrOK;
end;
end;
function TCKDForm.CheckData: Boolean;
begin
Result := False;
if not IsNumeric(edtCKSL.Text) or (strToFloat(edtCKSL.Text) <= 0) then
begin
Showmessage('数量必须大于0!');
edtCKSL.SetFocus;
Exit;
end
else if strToFloat(edtCKSL.Text) > adoqWzzd.FieldByName('KCSL').AsFloat then
begin
Showmessage('出库数量大于库存数量!');
edtCKSL.SetFocus;
Exit;
end;
Result := True;
end;
procedure TCKDForm.FormDestroy(Sender: TObject);
begin
if adoqWzlb.Active then adoqWzlb.Close;
if adoqWzzd.Active then adoqWzzd.Close;
end;
procedure TCKDForm.FormCreate(Sender: TObject);
begin
inherited;
// 初始化类别Treeview
with adoqWzlb do
begin
Connection := AdoWzgl;
SQL.Text := 'Select * From WZLB Order By ID';
Open;
end;
FillTreeView(tvLb, adoqWzlb, 'ID', 'PID', 'LBMC');
with adoqWzzd do
begin
Connection := AdoWzgl;
Sql.Text := 'select f.bm, f.mc, f.gg, f.dw, f.dj, f.id, e.kcsl from ' +
'(select rk.bm, rk.rksl, ck.cksl, rk.rksl - ck.cksl as kcsl from ' +
'(select b.bm, IsNull(sum(a.Rksl), 0) as rksl from RKXX a ' +
'right join WZZD b on a.bm = b.bm group by b.bm) rk, ' +
'(select d.bm, IsNull(sum(c.Cksl), 0) as cksl from CKXX c ' +
'right join WZZD d on c.bm = d.bm group by d.bm) ck ' +
'where rk.bm = ck.bm) e right join (select * from WZZD) f ' +
'on e.bm = f.bm';
Open;
end;
end;
procedure TCKDForm.tvLbChange(Sender: TObject; Node: TTreeNode);
begin
// 切换节点,刷新物资字典表格
with adoqWzzd do
begin
Filtered := False;
Filter := 'ID = ' + IntToStr(Integer(tvLb.Selected.Data));
Filtered := True;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -