?? gf_ffxjh.pas
字號:
if (DBEit_tao_qtms.Text = '') then
begin
CHQMsgBox('“全套枚數”內容不能為空!');
ActiveControl := DBEit_tao_qtms;
exit;
end;
if (DBEit_tao_qtmz.Text = '') then
begin
CHQMsgBox('“全套面值”內容不能為空!');
ActiveControl := DBEit_tao_qtmz;
exit;
end;
if (DBDEit_tao_fxrq.Text = ' - - ') then
begin
CHQMsgBox('“發行日期”內容不能為空!');
ActiveControl := DBDEit_tao_fxrq;
exit;
end;
if (DBEit_tao_fxl.Text = '') or (DBEit_tao_fxl.Text = '0') then
begin
CHQMsgBox('“套發行量”內容不能為空!');
ActiveControl := DBEit_tao_fxl;
exit;
end;
end;
1:
begin
if (DBEit_tu_tx.Text = '') then
begin
CHQMsgBox('“圖序”內容不能為空!');
ActiveControl := DBEit_tu_tx;
exit;
end;
if (DBEit_tu_tumc.Text = '') then
begin
CHQMsgBox('“圖名稱”內容不能為空!');
ActiveControl := DBEit_tu_tumc;
exit;
end;
if (DBEit_tu_mz.Text = '') then
begin
CHQMsgBox('“面值”內容不能為空!');
ActiveControl := DBEit_tu_mz;
exit;
end;
if (DBEit_tu_sj.Text = '') then
begin
CHQMsgBox('“售價”內容不能為空!');
ActiveControl := DBEit_tu_sj;
exit;
end;
if (DBEit_tu_gg.Text = '') then
begin
CHQMsgBox('“規格”內容不能為空!');
ActiveControl := DBEit_tu_gg;
exit;
end;
if (DBEit_tu_fxl.Text = '') or (DBEit_tu_fxl.Text = '0') then
begin
CHQMsgBox('“發行量”內容不能為空或零值!');
ActiveControl := DBEit_tu_fxl;
exit;
end;
if (DBDEit_tu_fxrq.Text = ' - - ') then
begin
CHQMsgBox('“發行日期”內容不能為空!');
ActiveControl := DBDEit_tu_fxrq;
exit;
end;
end;
end;
vl_i_xgzt:= -1;
if (vlp_status = 1) then//add編輯狀態
begin
case vlp_FocusGrid.tag of
0://套
begin
if ExistRecord('TF_FFXJHTAO', '(ND = ''' +
Qry_pfxjhtao.FieldByName('ND').AsString +
''') AND (XH = ''' + Qry_pfxjhtao.FieldByName('XH').AsString +
''') AND (PPLB = ''' + Qry_pfxjhtao.FieldByName('PPLB').AsString +
''') AND (TZDM = ''' + Qry_pfxjhtao.FieldByName('TZDM').AsString +''')') then
begin
CHQMsgBox('該套封片的記錄已經存在!');
ActiveControl := DBEit_tao_nd;
exit;
end;
vl_s_xh := 'G' + copy(Qry_pfxjhtao.FieldByName('PPLB').AsString,1,1) + DBEit_tao_nd.Text;
GetCurrVal(0, 'tg_yljhhsjb where nd=''' + DBEit_tao_nd.Text + ''' and flm=''' + copy(Qry_pfxjhtao.FieldByName('PPLB').AsString, 1, 1) + '''', 'lsh+1', vl_v_lsh);
if VarIsEmpty(vl_v_lsh) then
begin
vl_s_xh := vl_s_xh + '01';
end
else
if length(vartostr(vl_v_lsh)) = 1 then
vl_s_xh := vl_s_xh + '0' + vartostr(vl_v_lsh)
else
vl_s_xh := vl_s_xh + vartostr(vl_v_lsh);
Qry_pfxjhtao.FieldByName('JHH').AsString := vl_s_xh;
Qry_pfxjhtao.FieldByName('BBH').AsInteger := 1;
Qry_pfxjhtao.FieldByName('XGZT').AsString := '2';//新增
end;
1://圖
begin
vl_i_xgzt := -1;
//當前工作表中是否有JHH&TX&(XGZT<>3)重復的記錄
if ExistRecord('TF_FFXJHTU', 'JHH=''' + Qry_pfxjhtao.FieldByName('JHH').AsString +
''' AND TX=' + Qry_pfxjhtu.FieldByName('TX').AsString + ' AND XGZT<>''3''') then
begin
vlp_FocusGrid.DataSource.DataSet.FieldByName('JHH').AsString := '';
CHQMsgBox('該圖封片的記錄已經存在!');
ActiveControl := DBEit_tu_tx;
exit;
end;
//歷史表中,該計劃號的最新圖信息是否有JHH&(BBH-1)&TX&(XGZT<>3)的記錄(上次發送時有效)
with data.Qry_sub do
begin
Close;
SQL.Clear;
SQL.Add('select tx,tumc,mz,sj,gg,wxgg,fxl,fxrq,bz ' +
'from tf_ffxjhtuls where (JHH=''' +
Qry_pfxjhtao.FieldByName('JHH').AsString + ''') AND (BBH=' +
inttostr(Qry_pfxjhtao.FieldByName('BBH').AsInteger-1) + ') AND (TX=' +
Qry_pfxjhtu.FieldByName('TX').AsString + ') AND (XGZT<>''3'')');
Open;
if (not IsEmpty) then//上次存在且當時未被刪
begin
if ExistRecord('TF_FFXJHTU', 'JHH=''' +
Qry_pfxjhtao.FieldByName('JHH').AsString + ''' AND TX=' +
Qry_pfxjhtu.FieldByName('TX').AsString + ' AND XGZT=''3''') then
begin//此次已被刪
for i:= 0 to FieldCount-1 do
if trim(DBGid_tu.DataSource.DataSet.FieldByName(Fields[i].FieldName).AsString) <> trim(Fields[i].AsString) then
break;
if i=FieldCount then
vl_i_xgzt:= 0
else
vl_i_xgzt:= 1;
end;
//此次未被刪已被處理過
end
else //上次沒有,或有但是被刪除,置為增加狀態
vl_i_xgzt:= 2;
end;
Qry_pfxjhtu.FieldByName('TBBH').AsString := '1';
Qry_pfxjhtu.FieldByName('JHH').AsString :=
Qry_pfxjhtao.FieldByName('JHH').AsString;
Qry_pfxjhtu.FieldByName('BBH').AsInteger :=
Qry_pfxjhtao.FieldByName('BBH').asInteger;
end;
end;
vlp_FocusGrid.DataSource.DataSet.FieldByName('QXBZ').AsString := 'f';
vlp_stao_jhh := Qry_pfxjhtao.fieldbyname('JHH').AsString;
if vlp_FocusGrid.Tag = 1 then //圖
begin
vlp_itu_tx := Qry_pfxjhtu.fieldbyname('TX').AsInteger;
end;
end else
begin//edit
//**
if vlp_FocusGrid.Tag =1 then//tu
begin
if (Qry_pfxjhtu.FieldByName('TX').AsString <> vlp_oldtuval.old_tu_tx) then//(Qry_pfxjhtu.FieldByName('JHH').AsString <> oldtuval.old_tu_jhh) or
begin
if ExistRecord('TF_FFXJHTU', 'JHH=''' +
Qry_pfxjhtao.FieldByName('JHH').AsString + ''' AND TX=' +
Qry_pfxjhtu.FieldByName('TX').AsString + ' and XGZT<>''3''') then
begin
vlp_FocusGrid.DataSource.DataSet.FieldByName('JHH').AsString := '';
CHQMsgBox('該圖封片的記錄已經存在!');
Qry_pfxjhtu.FieldByName('JHH').AsString := vlp_oldtuval.old_tu_jhh;
Qry_pfxjhtu.FieldByName('TX').AsString := vlp_oldtuval.old_tu_tx;
ActiveControl := DBEit_tu_tx;
exit;
end;
vlp_itu_tx := Qry_pfxjhtu.fieldbyname('TX').AsInteger;
end;
end;
case vlp_FocusGrid.Tag of
0://套
with data.Qry_super do
begin
Close;
SQL.Clear;
SQL.Add('select tmc,qtms,qtmz,tpsj,fxrq,fxl,pzr,bz,zbr ' +
'from tf_ffxjhtaols where jhh=''' + Qry_pfxjhtao.FieldByName('JHH').AsString +
''' AND BBH=' + inttostr(Qry_pfxjhtao.FieldByName('BBH').AsInteger-1));
Open;
if (not IsEmpty) then//上次發送過
begin
for i:=0 to FieldCount-1 do
if trim(DBGid_tao.DataSource.DataSet.FieldByName(Fields[i].FieldName).AsString) <> trim(Fields[i].AsString) then
break;
if i<>FieldCount then//與上次發送的有不同
Upd_pfxjhtao.ModifySQL.Text := 'update TF_FFXJHTAO ' +
'set TMC = :TMC, QTMS = :QTMS, QTMZ = :QTMZ, TPSJ = :TPSJ, ' +
'FXRQ = :FXRQ, FXL = :FXL, PZR = :PZR, ZBR = ''' + VG_UserName +
''', ZBRQ = (select trunc(sysdate) from dual), BZ = :BZ, ' +
'XGZT = ''1'' where JHH = :OLD_JHH'
else begin
if trim(FieldByName('zbr').AsString) <> trim(VG_UserName) then//另一個用戶
Upd_pfxjhtao.ModifySQL.Text := 'update TF_FFXJHTAO ' +
'set ZBR = ''' + VG_UserName + ''' where jhh = :OLD_JHH'
else
vl_i_xgzt:= 0;//沒有改動,不做處理
end;
end
else//
Upd_pfxjhtao.ModifySQL.Text := 'update TF_FFXJHTAO ' +
'set TMC = :TMC, QTMS = :QTMS, QTMZ = :QTMZ, TPSJ = :TPSJ, ' +
'FXRQ = :FXRQ, FXL = :FXL, PZR = :PZR, ZBR = ''' + VG_UserName +
''', ZBRQ = (select trunc(sysdate) from dual), BZ = :BZ, ' +
'XGZT = ''2'' where JHH = :OLD_JHH';
end;
1://圖
Upd_pfxjhtu.ModifySQL.Text := 'update TF_FFXJHTU ' +
'set TX = :TX, TUMC = :TUMC, MZ = :MZ, SJ = :SJ, ' +
'GG = :GG, WXGG = :WXGG, FXL = :FXL, FXRQ = :FXRQ, BZ = :BZ, XGZT = :XGZT, YZBB = :YZBB ' +
'where JHH = :OLD_JHH and TX = :OLD_TX';
end;
end;
data.DM.StartTransaction;
try
if (vlp_status = 1) then//add
case vlp_FocusGrid.Tag of
0://tao
with data.Qry_sub do
begin
Close;
SQL.Clear;
if ExistRecord('tg_yljhhsjb', 'nd=''' + DBEit_tao_nd.Text + ''' and flm=''2''') then
SQL.Add('update tg_yljhhsjb set lsh = lsh+1 where nd =''' + DBEit_tao_nd.Text + ''' and flm=''2''')
else
SQL.Add('insert into tg_yljhhsjb(nd,flm,lsh,cz) values(''' + DBEit_tao_nd.Text + ''',''2'',1,1)');
ExecSQL;
(vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
end;
1://tu
begin
if (vl_i_xgzt = 0) or (vl_i_xgzt = 1) then//上次發送過(有效)—被刪除—又被加入
with data.Qry_super do
begin
Close;
SQL.Clear;//恢復套工作表中zbr,zbrq,sdate...字段值
SQL.Add('Update tf_ffxjhtao set(zbr,zbrq,sdatefx,sdatefxl)=(select ''' +
VG_UserName + ''',trunc(sysdate),sdatefx,sdatefxl from tf_ffxjhtaols where JHH=''' +
Qry_pfxjhtao.FieldByName('JHH').AsString + ''' and BBH = ' +
inttostr(Qry_pfxjhtao.FieldByName('BBH').AsInteger - 1) + ')');
ExecSQL;
DBGid_tu.DataSource.DataSet.FieldByName('XGZT').AsString:= inttostr(vl_i_xgzt);
//0——所有字段都沒有改變
//1——有的字段發生改變
Close;
SQL.Clear;//刪除圖工作表中修改狀態為“已刪除”的該圖記錄
SQL.Add('Delete from tf_ffxjhtu where jhh=''' +
Qry_pfxjhtao.FieldByName('JHH').AsString + ''' and tx=' +
Qry_pfxjhtu.FieldByName('tx').AsString);
ExecSQL;
end;
if vl_i_xgzt=2 then//just 新增
with data.Qry_super do
begin
DBGid_tu.DataSource.DataSet.FieldByName('XGZT').AsString:= '2';
Close;
SQL.Clear;
SQL.Add('Update tf_ffxjhtao set zbr = ''' + VG_UserName + ''', zbrq=(select trunc(sysdate) from dual) where JHH=''' +
Qry_pfxjhtao.FieldByName('JHH').AsString + '''');
ExecSQL;
end;
(vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
end;
end
else//edit
case vlp_FocusGrid.Tag of
0://tao
if vl_i_xgzt<>0 then
begin
(vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
end;
1://tu
with data.Qry_sub do
begin
Close;
SQL.Clear;
SQL.Add('Update tf_ffxjhtao set zbr = ''' + VG_UserName +
''', zbrq=(select trunc(sysdate) from dual) where JHH=''' +
Qry_pfxjhtao.FieldByName('JHH').AsString + '''');
ExecSQL;
//tx發生改變
if (vlp_oldtuval.old_tu_tx <> Qry_pfxjhtu.FieldByName('TX').AsString) then
begin
Close;
SQL.Clear;
SQL.Add('DELETE from tf_ffxjhtu where jhh=''' +
Qry_pfxjhtu.FieldByName('JHH').AsString + ''' and tx= ' +
Qry_pfxjhtu.FieldByName('TX').AsString);
ExecSQL;
Close;
SQL.Clear;
SQL.Add('select tumc,mz,sj,gg,wxgg,fxl,fxrq,bz ' +
'from tf_ffxjhtuls where JHH=''' +
Qry_pfxjhtao.FieldByName('JHH').AsString + ''' AND BBH=' +
inttostr(Qry_pfxjhtao.FieldByName('BBH').AsInteger-1) + ' AND TX=' +
Qry_pfxjhtu.FieldByName('TX').AsString + ' AND XGZT<>''3''');
Open;
if (not IsEmpty) then
begin
for i:= 0 to FieldCount -1 do
if trim(Qry_pfxjhtu.FieldByName(fields[i].FieldName).AsString) <> trim(Fields[i].AsString) then
break;
if i=FieldCount then//上一版本中存在該圖序并且所有字段值都相同的記錄
Qry_pfxjhtu.FieldByName('XGZT').AsString:= '0'
else//上一版本中存在該圖序但不是所有字段都相同的記錄
Qry_pfxjhtu.FieldByName('XGZT').AsString:= '1';
end
else//上一版本中不存在該圖序的記錄
Qry_pfxjhtu.FieldByName('XGZT').AsString:= '2';
(vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
if (Qry_pfxjhtu.FieldByName('XGZT').AsString <> '2') then
//xgzt=0/1,該記錄不是新增的,而且圖序發生改變
begin
Close;
SQL.Clear;
SQL.Add('insert into tf_ffxjhtu(JHH,BBH,TZDM,TX,TBBH,QXBZ,PPLB,TUMC,MZ,SJ,GG,WXGG,FXL,FXRQ,BZ,XGZT) ' +
'select JHH,BBH+1,TZDM,TX,TBBH,QXBZ,PPLB,TUMC,MZ,SJ,GG,WXGG,FXL,FXRQ,BZ,''3'' ' +
'from tf_ffxjhtuls where jhh=''' + vlp_oldtuval.old_tu_jhh + ''' and bbh=' +
inttostr(Qry_pfxjhtao.FieldByName('BBH').AsInteger-1) +' and tx=' + vlp_oldtuval.old_tu_tx);
ExecSQL;
end;
end
else//未修改tx
begin
Close;
SQL.Clear;
SQL.Add('select tumc,mz,sj,gg,wxgg,fxl,fxrq,bz ' +
'from tf_ffxjhtuls where JHH=''' +
Qry_pfxjhtao.FieldByName('JHH').AsString + ''' AND BBH=' +
inttostr(Qry_pfxjhtao.FieldByName('BBH').AsInteger-1) + ' AND TX=' +
Qry_pfxjhtu.FieldByName('TX').AsString + ' AND XGZT<>''3''');
Open;
if (not IsEmpty) then
begin
for i:= 0 to FieldCount-1 do
if trim(DBGid_tu.DataSource.DataSet.FieldByName(Fields[i].FieldName).AsString) <> trim(Fields[i].AsString) then
break;
if i=FieldCount then//上一版本中該記錄所有字段都相同
Qry_pfxjhtu.FieldByName('XGZT').AsString:= '0'
else//上一版本中該記錄有的字段不相同
Qry_pfxjhtu.FieldByName('XGZT').AsString:= '1';
end;
(vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
end;
end;
end;
if vlp_FocusGrid.Tag = 1 then
SumTAO;
data.DM.Commit;
except
data.DM.RollBack;
raise exception.Create('數據訪問錯誤!');
end;
(vlp_FocusGrid.DataSource.DataSet as TQuery).CommitUpdates;
Qry_pfxjhtao.Close;
Qry_pfxjhtao.Open;
if vlp_FocusGrid.Tag = 1 then
begin
Qry_pfxjhtu.Close;
Qry_pfxjhtu.Open;
end;
Qry_pfxjhtao.Locate('JHH', vlp_stao_jhh, [loPartialKey]);
Qry_pfxjhtu.Locate('JHH; TX', VarArrayOf([vlp_stao_jhh, vlp_itu_tx]),[loPartialKey]);
SetEditStatus(0);
end;
procedure TFrmf_ffxjh.Act_cancelExecute(Sender: TObject);
begin
data.DM.StartTransaction;
try
(vlp_FocusGrid.DataSource.DataSet as TQuery).CancelUpdates;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -