?? sy_ck_jyp_searchpp.pas
字號:
{*******************************************************}
{ }
{ 零枚出庫計劃單新制定——選擇票品模塊 }
{ }
{ 中軟金馬公司版權所有。2002.06 }
{ }
{ 編制:侯華敏 }
{ }
{ }
{*******************************************************}
(*==============================================================================
程序說明:
1. TB_YZPPXXB 中的type為 'ptyp'—普通郵票,'jtlm'—紀特零枚,'fpj—封片簡
{jttp紀特套票不用考慮}
2. ※※※※TB_YZPPXXB中的套代碼實際為圖代碼,同TKS_TXPPKC中的圖代碼關聯才可以
得出正確的結果;
3、 庫房的權限設定TGS_KFRYDZB和TGS_KFB關聯得到登錄用戶的庫房權限,只允許用戶對有權限的
庫房的票品進行出庫計劃分配;
侯華敏 2002.06.
===============================================================================*)
unit SY_CK_JYP_SearchPP;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Spin, StdCtrls, FieldComboBox, ExtCtrls, Buttons, Db, DBTables, sqlstrings;
type
TFrm_SY_CK_JYP_SearchPP = class(TForm)
pnl_Search: TPanel;
lbl_PPMZ: TLabel;
lbl_SJ: TLabel;
lbl_To_ND: TLabel;
chk_PPXLB: TCheckBox;
chk_PPMZ: TCheckBox;
chk_ND: TCheckBox;
chk_PPSJ: TCheckBox;
chk_ZH: TCheckBox;
chk_PPDLB: TCheckBox;
fcb_PPDLB: TFieldComboBox;
edt_PPMZ: TEdit;
spEdt_From_ND: TSpinEdit;
edt_SJ: TEdit;
edt_ZH: TEdit;
fcb_PPXLB: TFieldComboBox;
spEdt_To_ND: TSpinEdit;
chk_MC: TCheckBox;
edt_MC: TEdit;
chk_KF: TCheckBox;
fcb_KF: TFieldComboBox;
bbtn_OK: TBitBtn;
bbtn_Cancel: TBitBtn;
qry_Tmp: TQuery;
procedure FormCreate(Sender: TObject);
procedure fcb_PPDLBChange(Sender: TObject);
procedure chk_KFClick(Sender: TObject);
procedure chk_PPDLBClick(Sender: TObject);
procedure chk_PPXLBClick(Sender: TObject);
procedure chk_NDClick(Sender: TObject);
procedure chk_PPMZClick(Sender: TObject);
procedure chk_PPSJClick(Sender: TObject);
procedure chk_ZHClick(Sender: TObject);
procedure chk_MCClick(Sender: TObject);
procedure edt_PPMZKeyPress(Sender: TObject; var Key: Char);
procedure bbtn_OKClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
Lios_Type: TIO_TYPE;
FB_ShowZero: boolean;
L_Index: integer;
function GetSQL: string; {生成sQL語句}
{ Public declarations }
end;
var
Frm_SY_CK_JYP_SearchPP: TFrm_SY_CK_JYP_SearchPP;
implementation
{$R *.DFM}
uses
SY_Libproc;
{-------------------------------------------------------------------------------}
{初始化公共數據}
procedure TFrm_SY_CK_JYP_SearchPP.FormCreate(Sender: TObject);
begin
FB_ShowZero := true;
{庫房列表}
fcb_KF.ClearAll;
with qry_Tmp do
begin
Close;
SQL.Text := 'Select a.KFDM, a.KFMC from TGS_KFB a, TGS_KFRYDZB b where a.KFDM = b.KFDM ' +
' and b.YGDM =' + QuotedStr(VG_UserID) + ' order by KFDM ';
Open;
while not eof do
begin
fcb_KF.Items.Add(FieldByName('KFMC').AsString);
fcb_KF.FieldItems.Add(FieldByName('KFDM').AsString);
Next;
end;
Close;
end;
{顯示默認年度}
with qry_Tmp do
begin
Close;
SQL.Text := 'Select SysDate from Dual';
Open;
spEdt_From_ND.Text := FormatDateTime('yyyy', FieldByName('SysDate').AsDateTime);
spEdt_To_ND.Text := FormatDateTime('yyyy', FieldByName('SysDate').AsDateTime);
Close;
end;
end;
{-------------------------------------------------------------------------------}
{大類改變,二類跟著改變}
procedure TFrm_SY_CK_JYP_SearchPP.fcb_PPDLBChange(Sender: TObject);
begin
fcb_PPXLB.ClearAll;
if Lios_Type = io_txp then
begin
if fcb_PPDLB.FieldString = 'ptyp' then
begin {普通郵票} {}
fcb_PPXLB.Items.Add('普通郵票');
fcb_PPXLB.FieldItems.Add('ptyp');
end
else if fcb_PPDLB.FieldString = 'jtlm' then
begin {集郵票和紀特零枚} {}
with qry_Tmp do
begin
Close;
SQL.Text := 'Select distinct DL,SubStr(YZLDM,1,1) sort_order from TG_YZPPLDMB'#13#10 +
'where (YZLDM like ''9%'') or (YZLDM like ''8%'') or (YZLDM like ''1%'' and YZLDM <>''101'') order by sort_order';
Open;
while not Eof do
begin
fcb_PPXLB.Items.Add(FieldByName('DL').AsString);
fcb_PPXLB.FieldItems.Add(FieldByName('sort_order').AsString);
Next;
end;
end;
end
else if fcb_PPDLB.FieldString = 'fpj' then
begin {封片簡} {}
with qry_Tmp do
begin
Close;
SQL.Text := 'Select distinct DL,SubStr(YZLDM,1,1) sort_order from TG_YZPPLDMB'#13#10 +
'where (YZLDM like ''2%'') or (YZLDM like ''3%'') or (YZLDM like ''4%'') or (YZLDM like ''5%'') or (YZLDM like ''6%'') order by sort_order';
Open;
while not Eof do
begin
fcb_PPXLB.Items.Add(FieldByName('DL').AsString);
fcb_PPXLB.FieldItems.Add(FieldByName('sort_order').AsString);
Next;
end;
end;
end;
end
else
with qry_Tmp do
begin
Close;
SQL.Text := 'Select YZLDM,MC from TG_YZPPLDMB where YZLDM <> ''101'' and YZLDM like ''' + fcb_PPDLB.FieldString + '%'' order by YZLDM';
Open;
fcb_PPXLB.ClearAll;
while not Eof do
begin
fcb_PPXLB.Items.Add(FieldByName('MC').AsString);
fcb_PPXLB.FieldItems.Add(FieldByName('YZLDM').AsString);
Next;
end;
end;
end;
{-------------------------------------------------------------------------------}
{庫房的選擇}
procedure TFrm_SY_CK_JYP_SearchPP.chk_KFClick(Sender: TObject);
begin
fcb_KF.Enabled := chk_KF.Checked;
end;
{-------------------------------------------------------------------------------}
{票品大類選擇}
procedure TFrm_SY_CK_JYP_SearchPP.chk_PPDLBClick(Sender: TObject);
begin
fcb_PPDLB.Enabled := chk_PPDLB.Checked;
chk_PPXLB.Enabled := chk_PPDLB.Checked;
if chk_PPDLB.Checked then
chk_PPXLBClick(Sender);
end;
{-------------------------------------------------------------------------------}
{小類的選擇}
procedure TFrm_SY_CK_JYP_SearchPP.chk_PPXLBClick(Sender: TObject);
begin
fcb_PPXLB.Enabled := chk_PPXLB.Checked;
end;
{-------------------------------------------------------------------------------}
{年度的選擇}
procedure TFrm_SY_CK_JYP_SearchPP.chk_NDClick(Sender: TObject);
begin
spEdt_From_ND.Enabled := chk_ND.checked;
spEdt_To_ND.Enabled := chk_ND.checked;
end;
{-------------------------------------------------------------------------------}
{票品面值}
procedure TFrm_SY_CK_JYP_SearchPP.chk_PPMZClick(Sender: TObject);
begin
edt_PPMZ.Enabled := chk_PPMZ.Checked;
end;
{-------------------------------------------------------------------------------}
{票品售價}
procedure TFrm_SY_CK_JYP_SearchPP.chk_PPSJClick(Sender: TObject);
begin
edt_SJ.Enabled := chk_PPSJ.Checked;
end;
{-------------------------------------------------------------------------------}
{志號}
procedure TFrm_SY_CK_JYP_SearchPP.chk_ZHClick(Sender: TObject);
begin
edt_ZH.Enabled := chk_ZH.Checked;
end;
{-------------------------------------------------------------------------------}
{票品名稱}
procedure TFrm_SY_CK_JYP_SearchPP.chk_MCClick(Sender: TObject);
begin
edt_MC.Enabled := chk_MC.Checked;
end;
{-------------------------------------------------------------------------------}
{輸入合法的面值和售價}
procedure TFrm_SY_CK_JYP_SearchPP.edt_PPMZKeyPress(Sender: TObject;
var Key: Char);
begin
if not (Key in ['0'..'9', '.', Chr(VK_BACK)]) then
Key := Chr(0);
end;
{-------------------------------------------------------------------------------}
{生成sQL語句 (零枚票品庫存TKS_TXPPKC , tb_YZPPXXB, TB_YZPPTUXXB)}
function TFrm_SY_CK_JYP_SearchPP.GetSQL: string;
var
l_sql: string;
begin
if FB_ShowZero then
l_sql := 'Select b.Type,'' '' KFDM, '' '' KFMC, TDM PPDM, TMC PPMC, ZH, TPMZ MZ, TPSJ SJ, '' '' KWH, PPLB, 0 JJ, 0 XJ, 0 JSJ, 0 ZK, 0 SL ' +
' from TB_YZPPXXB b' +
' where 1=1 '
else
l_sql := 'Select b.Type,a.KFDM, d.KFMC, a.PPDM PPDM, b.TMC PPMC, b.ZH, b.TPMZ MZ, b.TPSJ SJ, a.KWH, b.PPLB, a.JJ, a.XJ, a.JSJ, a.ZK, a.TS SL ' +
' from %s a, TB_YZPPXXB b, TGS_KFRYDZB c, TGS_KFB d ' +
' where a.PPDM = b.TDM and d.KFDM = a.KFDM and c.KFDM = d.KFDM ' +
' and a.TS>0 and c.YGDM =' + QuotedStr(VG_UserID);
if Lios_Type = io_txp then
l_sql := format(l_sql, ['TYS_TXPPKC'])
else
l_sql := format(l_sql, ['TYS_JYPPKC']);
{庫房}
if chk_KF.Checked then
l_sql := l_sql + ' and a.KFDM =' + QuotedStr(fcb_KF.FieldString);
{票品類別}
if chk_PPDLB.Checked then
if Lios_Type = io_txp then
l_sql := l_sql + ' and b.TYPE =' + QuotedStr(fcb_PPDLB.FieldString)
else
l_sql := l_sql + ' and b.TYPE =''jttp'' ';
{小類}
if chk_PPXLB.Checked then
if Lios_Type = io_txp then
l_sql := l_sql + ' and substr(b.PPLB, 1, 1) =' + QuotedStr(fcb_PPXLB.FieldString)
else
l_sql := l_sql + ' and b.PPLB <> ''101'' and substr(b.PPLB, 1, 3) =' + QuotedStr(fcb_PPXLB.FieldString);
{發行年度}
if chk_ND.Checked then
l_sql := l_sql + ' and to_char(b.FXRQ,''yyyy'')>=''' + spEdt_From_ND.text + ''' and to_char(b.FXRQ,''yyyy'')<=''' + spEdt_To_ND.text + '''';
{票品面值}
if chk_PPMZ.Checked = True then
l_sql := l_sql + ' and b.TPMZ=' + FloatToStr(StrToFloat(edt_PPMZ.Text) * 100);
{票品售價}
if chk_PPSJ.Checked = True then
l_sql := l_sql + ' and b.TPSJ=' + FloatToStr(StrToFloat(edt_SJ.Text) * 100);
{志號}
if chk_ZH.Checked = True then
l_SQL := l_SQL + ' and b.ZH like ''%' + edt_ZH.Text + '%''';
{票品名稱}
if chk_MC.Checked = True then
l_SQL := l_SQL + ' and b.TMC like ''%' + edt_MC.Text + '%''';
l_SQL := l_SQL + ' order by b.TDM ';
Result := l_sql;
end;
procedure TFrm_SY_CK_JYP_SearchPP.bbtn_OKClick(Sender: TObject);
begin
{必須選擇票品類別,主模塊用(必須屬于某一票品,因為各票品類別的處理不一致)}
if (not chk_PPDLB.Checked) or (fcb_PPDLB.ItemIndex = -1) then
begin
Application.MessageBox('必須選擇票品類別!', '提示', MB_OK + MB_IconInformation);
Exit;
end;
{票品面值}
if chk_PPMZ.Checked then
if Trim(edt_PPMZ.Text) = '' then
begin
Application.MessageBox('必須輸入合法的票品面值!', '提示', MB_OK + MB_IconInformation);
edt_PPMZ.SetFocus;
Exit;
end;
{票品售價}
if chk_PPSJ.Checked then
if Trim(edt_SJ.Text) = '' then
begin
Application.MessageBox('必須輸入合法的票品售價!', '提示', MB_OK + MB_IconInformation);
edt_SJ.SetFocus;
Exit;
end;
ModalResult := mrOK;
end;
procedure TFrm_SY_CK_JYP_SearchPP.FormShow(Sender: TObject);
begin
{添加票品類別}
if Lios_Type = io_txp then
begin
fcb_PPDLB.ClearAll;
fcb_PPDLB.FieldItems.Add('ptyp');
fcb_PPDLB.Items.Add('普通郵票');
fcb_PPDLB.FieldItems.Add('jtlm');
fcb_PPdLB.Items.Add('紀特零枚');
fcb_PPDLB.FieldItems.Add('fpj');
fcb_PPDLB.Items.Add('封片簡');
{jttp紀特套票不用考慮}
end
else
with qry_Tmp do
begin
Close;
SQL.Text := 'Select distinct DL,SubStr(YZLDM,1,1) sort_order from TG_YZPPLDMB'#13#10 +
'where (YZLDM like ''9%'') or (YZLDM like ''8%'') or (YZLDM like ''1%'' and YZLDM <>''101'') order by sort_order';
Open;
fcb_PPDLB.ClearAll;
while not Eof do
begin
fcb_PPDLB.Items.Add(FieldByName('DL').AsString);
fcb_PPDLB.FieldItems.Add(FieldByName('sort_order').AsString);
Next;
end;
end;
chk_KF.Enabled := not FB_ShowZero;
chk_PPDLB.Checked := True; {默認值}
if Lios_Type = io_jyp then
fcb_PPDLB.ItemIndex := 0
else
fcb_PPDLB.ItemIndex := L_Index;
fcb_PPDLBChange(nil); {刷新小類}
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -