?? choose_fpd.pas
字號:
{*******************************************************}
{ }
{ 選擇分配單 }
{ }
{ 中軟金馬公司版權所有。2002.12前 }
{ }
{ 編制:中軟金馬項目開發組 }
{ }
{ }
{*******************************************************}
(*
本模塊在省級集郵票管理、省級市場購入票管理、省級集郵品管理、省級零枚票管理、
地市集郵票管理、地市集郵品管理、地市市場購入票管理 七個模塊調用
*)
{
//注意:對于所有票品都適用,有:零枚票、集郵票、集郵品、購入票
有關表:
出庫計劃單表、出庫計劃單面值表
數據來源:
分配單號: 出庫計劃單表(狀態為0 且 根據出庫計劃單號判斷類別,如:生成零枚,
則只列出零枚票分配單號)
分配票品:出庫計劃單面值表
功能:
算法:
更新有關表:
備注:
出庫計劃單表狀態字段值:0--未生成發貨單 1--已生成發貨單
}
unit Choose_FPD;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
FormBase, StdCtrls, Buttons, Db, DBTables, Grids, DBGrids, CheckLst,
DBCtrls, ExtCtrls, RxQuery, SqlStrings;
type
TfrmSJ_chooseJYFPD = class(TFFormBase)
Label1: TLabel;
Label2: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
DBGrid1: TDBGrid;
DS_pp: TDataSource;
Label3: TLabel;
DBL_ckxz: TDBLookupComboBox;
CLB_yjdh: TCheckListBox;
Qry_ckxz: TQuery;
DS_ckxz: TDataSource;
qry_tmp: TQuery;
RG_yf: TRadioGroup;
Qry_pp: TRxQuery;
Qry_ppORD: TFloatField;
Qry_ppPPMC: TStringField;
Qry_ppDWDM: TStringField;
Qry_ppFPSL: TFloatField;
SqlS_pp: TSqlStrings;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Qry_ckxzAfterScroll(DataSet: TDataSet);
procedure DoUnionCKYJD(var AnewYJDH: string);
procedure CLB_yjdhClickCheck(Sender: TObject);
private
v_dhs: string;
Fio_TYPE: TIO_TYPE;
{ Private declarations }
public
{ Public declarations }
end;
var
frmSJ_chooseJYFPD: TfrmSJ_chooseJYFPD;
function ExeSY_FPD(io_typ: TIO_TYPE): Boolean;
implementation
{$R *.DFM}
uses datas,pub, SY_FHDSC;
function ExeSY_FPD(io_typ: TIO_TYPE): Boolean;
begin
Application.CreateForm(TfrmSJ_chooseJYFPD, frmSJ_chooseJYFPD); {TFFormBase1, FFormBase1}
with frmSJ_chooseJYFPD do {FFormBase1}
try
Caption := '選擇' + pCaption[integer(io_Typ)] + '分配單';
Fio_TYPE := io_typ;
Qry_pp.SQL := SqlS_pp.FSqlText[io_typ];
result := ShowModal = MB_OK;
finally
Free;
end;
end;
procedure TfrmSJ_chooseJYFPD.FormCreate(Sender: TObject);
var
ckjhh: string;
begin
inherited;
Qry_ckxz.AfterScroll := nil;
qry_ckxz.Open;
Qry_ckxz.AfterScroll := Qry_ckxzAfterScroll;
if not qry_ckxz.IsEmpty then
DBL_ckxz.KeyValue := qry_ckxz.FieldByName('RCKXZDM').AsString;
end;
procedure TfrmSJ_chooseJYFPD.BitBtn1Click(Sender: TObject);
var
v_yjdh, v_s_sql: string;
v_i_chkcount: integer;
function YJDHSelCount: integer;
var
i: Integer;
begin
Result := 0;
for i := 0 to CLB_yjdh.Items.Count - 1 do
if CLB_yjdh.Checked[i] then
begin
Result := Result + 1;
v_yjdh := CLB_yjdh.Items[i];
end;
end;
begin
inherited;
v_i_chkcount := YJDHSelCount;
if v_i_chkcount = 0 then
begin
CHQMsgBox('請選擇出庫計劃單號!');
exit;
end;
v_s_sql := 'select a-b from (SELECT count(*) a from (select distinct PPDM,DWDM,JJ,xj,zk,jsj FROM ' + frmSY_FHD.vg_s_ckjhpp + ' WHERE CKJHDH in (' + v_dhs + ')) a) c,(select count(*) b from (select distinct PPDM,DWDM,JJ,xj FROM ' + frmSY_FHD.vg_s_ckjhpp + ' WHERE CKJHDH in (' + v_dhs + ')) b) d';
Open_SQL(qry_tmp, v_s_sql);
if Qry_TMP.Fields[0].AsFloat <> 0 then
begin
CHQMsgBox('所選的依據單中不能包含不同折扣或結算價的同一票品!');
exit;
end;
DoUnionCKYJD(v_yjdh);
frmSY_FHD.queding := true;
frmSY_FHD.yjdh := v_yjdh;
frmSY_FHD.BYorXY := RG_yf.ItemIndex;
close;
end;
procedure TfrmSJ_chooseJYFPD.DoUnionCKYJD(var AnewYJDH: string);
var
v_sql, v_jhdh: string;
i: integer;
begin
data.DM.StartTransaction;
try
AnewYJDH := GetFPDH('JH');
for i := 0 to CLB_yjdh.Items.Count - 1 do
begin
if CLB_yjdh.Checked[i] then
v_jhdh := v_jhdh + '''' + CLB_yjdh.Items[i] + ''',';
end;
v_jhdh := copy(v_jhdh, 1, length(v_jhdh) - 1);
v_sql := 'insert into ' + frmSY_FHD.vg_s_ckjhd + '(CKJHDH,CKXZ,ZBR,PZR,ZDRQ,ZT) values(''' + AnewYJDH + ''',''' + DBL_ckxz.KeyValue + ''',''' + VG_UserName + ''',''' + VG_UserName + ''', trunc(sysdate), ''' + CG_DG + ''')';
AssignSqlStr(qry_tmp, v_sql);
qry_tmp.ExecSQL;
case Fio_type of
io_jyp, io_yp, io_grp:
v_sql := 'insert into ' + frmSY_FHD.vg_s_ckjhpp + '(CKJHDH,KFDM,DWDM,PPDM,JJ,DWMC,PPMC,YJ,XJ,JSJ,ZK,FPSL) select ''' + AnewYJDH + ''', KFDM, DWDM, PPDM, JJ, DWMC, PPMC, YJ, XJ, JSJ, ZK, sum(FPSL) from ' + frmSY_FHD.vg_s_ckjhpp + ' where CKJHDH in(' + v_jhdh + ') group by PPDM, KFDM, JJ,YJ,XJ,JSJ,ZK,dwmc,ppmc,dwdm';
io_txp:
v_sql := 'insert into ' + frmSY_FHD.vg_s_ckjhpp + '(CKJHDH,KFDM,DWDM,PPDM,PPMC,JJ,XJ,ZK,JSJ,FPSL) select ''' + AnewYJDH + ''', KFDM, DWDM, PPDM, PPMC, JJ, XJ, ZK, JSJ, sum(FPSL) from ' + frmSY_FHD.vg_s_ckjhpp + ' where CKJHDH in(' + v_jhdh + ') group by PPDM, KFDM, JJ,XJ,ZK, JSJ,ppmc,dwdm';
end;
AssignSqlStr(qry_tmp, v_sql);
qry_tmp.ExecSQL;
v_sql := 'update ' + frmSY_FHD.vg_s_ckjhd + ' set ZT=''' + CG_HB + ''' where CKJHDH in(' + v_jhdh + ')';
AssignSqlStr(qry_tmp, v_sql);
qry_tmp.ExecSQL;
data.DM.Commit;
except
data.DM.RollBack;
end;
end;
procedure TfrmSJ_chooseJYFPD.Qry_ckxzAfterScroll(DataSet: TDataSet);
var
yjdh: string;
begin
inherited;
yjdh := 'select distinct ckjhdh from ' + frmSY_FHD.vg_s_ckjhd + ' where zt=2 and CKXZ=''' + DBL_ckxz.keyValue + '''';
InitList(CLB_yjdh.items, yjdh);
CLB_yjdhClickCheck(nil);
end;
procedure TfrmSJ_chooseJYFPD.CLB_yjdhClickCheck(Sender: TObject);
var
i: integer;
begin
inherited;
v_dhs := '';
for i := 0 to CLB_yjdh.Items.Count - 1 do
if CLB_yjdh.Checked[i] then
v_dhs := v_dhs + '''' + CLB_yjdh.Items[i] + ''',';
if Length(v_dhs) > 0 then
v_dhs := copy(v_dhs, 1, length(v_dhs) - 1)
else
v_dhs := '''zrjm''';
with Qry_pp do
begin
Close;
MacroByName('DH').AsString := v_dhs;
Open;
end;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -