sqbinput.pas
来自「一个仓库管理中的子系统--采购子系统」· PAS 代码 · 共 1,776 行 · 第 1/4 页
PAS
1,776 行
Result:='0'+Result;
end;
procedure TsqinputForm.InitsqxbInput;
begin
jhyCombo.Text:='';
cpbhedit.text:='';
xhggedit.Text:='';
jldwCombo.Text:='';
sbslEdit.Text:='0.0';
gjjeEdit.text:='0.0';
sccjCombo.text:='';
yyhrwEdit.Text:='';
sjyqEdit.text:='';
bzEdit.Text:='';
cpmcEdit.text:='';
end;
Function TsqinputForm.DateTo709Str(date709:Tdate):string;
var str709:string;
year,month,day:word;
begin
decodeDate(date709,year,month,day);
str709:=intTostr(year)+intTostrpad0(month,2)+IntTostrpad0(day,2);
result:=str709;
end;
function TsqinputForm.PostTosqxb:Boolean;
begin
with datamodule1.cgsqxbTable do
begin
open; //修改
try
append;
FieldByName('jhy').asstring:=jhyCombo.Text;
FieldByName('sqbid').asstring:=sqbidPanel.caption;
FieldByname('cpbh').asstring:=cpbhedit.Text;
FieldByname('xhgg').asstring:=xhggedit.Text;
FieldByname('jldw').asstring:=jldwCombo.Text;
FieldByname('sbsl').asFloat:=Strtofloat(sbslEdit.Text);
FieldByname('gjje').asFloat:=Strtofloat(gjjeEdit.text);
FieldByname('sccj').asstring:=sccjCombo.text;
FieldByname('yyhrw').asstring:=yyhrwEdit.Text;
FieldByname('sjyq').asstring:=sjyqEdit.text;
FieldByname('bz').asstring:=bzEdit.Text;
FieldByname('cpmc').asstring:=cpmcedit.text;
Post;
except
on EDBEngineError do
begin
messageDlg('您输入的数据可能不符合规范,请检查后重新输入!',mtInformation,[mbOK],0);
//datamodule1.Dbase709.Rollback;
Result:=False;
exit;
end;
end;
end;
with datamodule1 do
begin
hzglTable.open;
try
hzglTable.Append;
hzglTablejhy.AsString:=jhyCombo.Text;
hzglTablesqbid.asstring:=sqbidpanel.Caption;
hzglTablecpbh.asstring:=cpbhedit.Text;
hzgltablexhgg.asstring:=xhggedit.Text;
hzglTablesldw.asstring:=jldwCombo.Text;
hzgltablesbsl.asFloat:=Strtofloat(sbslEdit.Text);
hzgltablegjje.asFloat:=Strtofloat(gjjeEdit.text);
hzgltablesccj.asstring:=sccjCombo.text;
hzgltablesjyq.asstring:=sjyqEdit.text;
hzgltablecpmc.asstring:=cpmcEdit.text;
hzglTablesqbid.asstring:=sqbidpanel.Caption;
hzglTablelsh.asstring:=lshedit.Text;
hzglTablerwmc.asstring:=rwmcEdit.Text;
hzglTableyxnx.asstring:=yxnxLabel.Caption;
hzglTablexqdw.asstring:=sqdwCombo.Text;
hzglTablesbrq.asstring:=GetDate709(sqrqedit.Text);
hzglTablebzr.asstring:=bzrCombo.Text;
hzglTableshr.asstring:=shrCombo.Text;
hzglTablebzrq.asstring:=GetDate709(bzrqedit.Text);
hzglTableshrq.asstring:=GetDate709(shrqedit.Text);
hzglTablepzr.asstring:=pzrCombo.Text;
hzglTablepzrq.asstring:=GetDate709(pzrqedit.Text);
hzglTableysbx1.AsString:=yyhrwEdit.Text;
hzglTableBJHGSL.asfloat:=0;
hzglTableYBJSL.asfloat:=0;
hzglTableBJBHGSL.asfloat:=0;
hzglTable.Post;
except
on EDBEngineError do
begin
messageDlg('您输入的数据可能不符合规范,请检查后重新输入!',mtInformation,[mbOK],0);
//datamodule1.Dbase709.Rollback;
Result:=False;
exit;
end;
end;
end;
AppendBtnR.Enabled:=True;
postBtnR.Enabled:=false;
NewBtnR.Enabled:=True;
AppendBtnG.Enabled:=True;
postBtnG.Enabled:=false;
newBtnG.Enabled:=True;
Result:=True;
end;
function TsqInputForm.PostTosqzb:Boolean;
begin
{if BeforePostsqzb<>0 then
begin
result:=false;
exit;
end;}
with datamodule1.cgsqzbTable do
begin
open; //修改
try
append;
FieldByName('sqbid').asstring:=sqbidpanel.Caption;
FieldByName('lsh').asstring:=lshedit.Text;
FieldByName('rwmc').asstring:=rwmcEdit.Text;
FieldByName('yxnx').asstring:=yxnxLabel.Caption;
FieldByName('sqdw').asstring:=sqdwCombo.Text;
FieldByName('sqrq').asstring:=GetDate709(sqrqedit.Text);
FieldByname('scssb_flag').asstring:='0';
FieldByName('xqfzr').asstring:=xqfzrCombo.Text;
FieldByName('bzr').asstring:=bzrCombo.Text;
FieldByName('shr').asstring:=shrCombo.Text;
FieldByName('xqrq').asstring:=GetDate709(xqrqedit.Text);
FieldByName('bzrq').asstring:=GetDate709(bzrqedit.Text);
FieldByName('shrq').asstring:=GetDate709(shrqedit.Text);
FieldByName('pzr').asstring:=pzrCombo.Text;
FieldByName('pzrq').asstring:=GetDate709(pzrqedit.Text);
Post;
except
on EDBEngineError do
begin
messageDlg('您输入的数据可能不符合规范,请检查后重新输入!',mtInformation,[mbOK],0);
//datamodule1.Dbase709.Rollback;
Result:=False;
exit;
end;
end;
end;
Result:=True;
end;
procedure TsqinputForm.InitInputFrm;
begin
jhyCombo.text:='';
cpbhedit.text:='';
lshedit.Text:='';
rwmcEdit.Text:='';
yxnxLabel.Caption:=IntToStr(GetYear);
sqdwCombo.Text:='';
sqrqedit.Text:=ShowMeDate(dateTo709str(date));
xhggedit.Text:='';
jldwCombo.Text:='';
sbslEdit.Text:='0.0';
gjjeEdit.text:='0.0';
sccjCombo.text:='';
yyhrwEdit.Text:='';
sjyqEdit.text:='';
bzEdit.Text:='';
xqfzrCombo.Text:='';
bzrCombo.Text:='';
shrCombo.Text:='';
xqrqEdit.Text:=ShowMeDate(dateTo709str(date));
bzrqEdit.Text:=ShowMeDate(dateTo709str(date));
shrqEdit.Text:=ShowMeDate(dateTo709str(date));
pzrCombo.Text:='';
pzrqedit.Text:=ShowMeDate(dateTo709str(date));
cpmcedit.text:='';
InitstringGrid;
end;
Function TsqInputForm.GetYear:word;
var
year,month,day:word;
begin
decodeDate(date,year,month,day);
Getyear:=year;
end;
{Function TsqInputForm.sub0Fromstr(datestr:string):string;
var sub0str1,sub0str2:string;
begin
sub0str1:=copy(datestr,2,1);
sub0str2:=copy(datestr,1,1);
if sub0str1='0' then
datestr:=copy(datestr,3,1)
else
if sub0str2='0' then
datestr:=copy(datestr,2,2);
result:=datestr;
end;}
Function TsqInputForm.GetsqBdid:string;
var
SqbCount:Integer;
Year,month,day:word;
sqbidStr,oldYearstr,oldMonthstr,oldSqbCountstr:String;
NowyearStr:string;
begin
with datamodule1 do
begin
DecodeDate(date,year,month,day);
if cgsqzbtable.RecordCount<>0 then
begin
cgsqzbtable.Last;
sqbidStr:=cgsqzbTable.Fieldbyname('sqbid').asstring;
oldYearstr:=copy(sqbidstr,1,2);
oldMonthstr:=copy(sqbidstr,3,2);
oldsqbCountstr:=(Copy(sqbidstr,5,3));
if month>(LongInt(strToInt(oldMonthstr))) then
sqbcount:=1
else
{begin
if year>(LongInt(strToInt(oldYearstr)+2000)) then
sqbCount:=1
else}
sqbcount:=strToInt(oldsqbCountstr)+1;
//end;
end
else
sqbCount:=1;
NowYearstr:=IntToStrPad0(year,4);
Delete(NowYearStr,1,2);
Result:=Nowyearstr+IntToStrPad0(month,2)+IntToStrPad0(sqbcount,3);
end;
end;
procedure TsqinputForm.AppendBtnRClick(Sender: TObject);
begin
with datamodule1 do
begin
cgsqxbTable.open;
cgsqxbTable.append;
end;
AppendBtnR.Enabled:=False;
PostBtnR.Enabled:=True;
newBtnR.Enabled:=False;
AppendBtnG.Enabled:=False;
PostBtnG.Enabled:=True;
newbtnG.Enabled:=False;
Initsqxbinput;
end;
procedure TsqinputForm.PostBtnRClick(Sender: TObject);
begin
//datamodule1.Dbase709.StartTransaction;
if sqdwCombo.Text='' then
begin
messageDlg('您没有输入申请单位名,请您输入申请单位!',mtInformation,[mbOK],0);
exit;
end;
if sqrqEdit.Text=showmeDate(dateTo709str(Date)) then
if messageDlg('您是否确定使用当前系统日期?如果不是'+#13+
'请按下CANCEL 按钮,然后修改日期!',mtInformation,[mbOK,mbCANCEL],0)=mrCancel then
exit;
with datamodule1.PublicQuery1 do
begin
close;
sql.Clear;
sql.Add('select * From dbo.a_cgsqxb');
sql.Add('where sqbid='+''''+sqbidpanel.caption+''''+' and cpbh='+''''+cpbhedit.Text+'''');
prepare;
open;
if recordCount<>0 then
begin
showmessage('您不能在同一张申请表中输入两个产品编号相同的记录,请合并记录!');
close;
exit;
end;
close;
end;
if length(cpbhedit.Text)<>11 then
begin
showmessage('请输入十一位的产品编号!');
exit;
end;
if (jhyCombo.Text='') then
begin
Showmessage('请您输入计划员!');
exit;
end;
if (cpmcEdit.Text='') or (sbslEdit.Text='0.0') or (xhggedit.Text='') or (jldwCombo.Text='') then
begin
MessageDlg('您没有输入产品名称、型号规格、申请数量或计量单位,请您输入为空的值!',mtInformation,[mbOK],0);
exit;
end;
if beforepostsqzb=0 then
if not postTosqzb then
exit;
if not postTosqxb then
exit;
showmessage('你录入的记录已经成功提交!');
end;
procedure TsqinputForm.NewBtnRClick(Sender: TObject);
begin
if MessageDlg('您是否已经完成了本申请表中所有记录的录入工作?'+#13+
'如果是的请按下 OK 按钮,如果没有完成请按下CANCEL'+#13+
'按钮接续录入本申请表中的记录!',mtInformation,[mbOK,mbCANCEL],0)=mrCancel then
exit;
with dataModule1.PublicQuery1 do
begin
Close;
sql.Clear;
sql.Add('select * from dbo.a_cgsqzb');
sql.Add('where sqbid='+''''+sqbidPanel.Caption+'''');
open;
if RecordCount=0 then
begin
showMessage('您还没有开始当前这张表的录入,请先开始当前这张表的录入!');
close;
exit;
end;
close;
end;
if datamodule1.cgsqxbTable.State=dsInsert then
begin
showmessage('您现在还处在记录录入状态,请继续输入记录!');
exit;
end;
with datamodule1 do
begin
cgsqxbTable.open;
cgsqxbTable.append;
end;
check_the_reused_id(if_reused);//检查是否重用了已经作废的申请表id
sqbidpanel.Caption:=GetsqBdid;
if_reused:=sqbidpanel.Caption;//给判断是否重用已经作废的申请表ID的变量if_reused赋值
InitInputFrm;
AppendBtnR.Enabled:=False;
postBtnR.Enabled:=True;
NewBtnR.Enabled:=False;
AppendBtnG.Enabled:=False;
postBtnG.Enabled:=True;
NewBtnG.Enabled:=False;
if messageDlg('是否生成刚提交的申请表的实施表?',mtInformation,[mbOK,mbCANCEL],0)=mrOK then
begin
jhssForm:=TjhssForm.Create(Application);
with datamodule1.publicQuery3 do
begin
close;
sql.clear;
sql.Add('select sqbid From dbo.a_cgsqzb');
sql.add('where scssb_flag='+''''+'0'+'''');
prepare;
open;
if RecordCount=0 then
begin
close;
jhssForm.Release;
showmessage('没有未生成实施表的申请表!');
exit;
end;
jhssForm.sqbidCombo.Items.clear;
while not Eof do
begin
jhssForm.sqbidComBo.Items.Add(FieldByName('sqbid').asstring);
next;
end;
jhssForm.sqbidComBo.Text:=jhssForm.sqbidComBo.Items[jhssForm.sqbidComBo.Items.count-1];
close;
end;
hide;
datamodule1.Dbase709.close;
datamodule1.Dbase709.Open;
jhssForm.ShowModal;
jhssForm.free;
show;
end;
end;
procedure TsqinputForm.FormActivate(Sender: TObject);
begin
sqrqDate.DateTime:=Date;
bzrqDate.DateTime:=Date;
xqrqDate.DateTime:=Date;
shrqDate.DateTime:=Date;
pzrqDate.DateTime:=Date;
oldCol:=0;
oldRow:=0;
if_reused:='';
with datamodule1 do
begin
//打开本录入窗口中用到的数据表格
cgsqzbTable.open;
cgsqxbTable.open;
hzglTable.open;
cgsqxbTable.append;
end;
//初始化所有ComboBox中的选择项
with datamodule1.publicquery2 do
begin
//初始化部门名称和部门人员名称
//close;
sql.clear;
sql.add('Select * from dbo.e_bmmcb');
prepare;
open;
first;
sqdwCombo.Items.Clear;
bzrCombo.Items.Clear;
xqfzrCombo.Items.Clear;
shrCombo.Items.Clear;
pzrCombo.Items.Clear;
while not eof do
begin
sqdwCombo.Items.Add(FieldByName('bmmc').asstring);
bzrCombo.Items.Add(FieldByName('bmfzr').asstring);
xqfzrCombo.Items.Add(FieldByName('bmfzr').asstring);
shrCombo.Items.Add(FieldByName('bmfzr').asstring);
pzrCombo.Items.Add(FieldByName('bmfzr').asstring);
next;
end;
//初始化厂家名称
close;
sql.clear;
sql.add('select gysmc from dbo.e_fczfzb');
open;
first;
sccjCombo.Items.Clear;
while not eof do
begin
sccjCombo.Items.Add(FieldByName('gysmc').asstring);
next;
end;
close;
sql.Clear;
sql.Add('select jhyid From dbo.p_jhyb');
open;
first;
jhyCombo.Items.Clear;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?