📄 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 + -