📄 ss_xxjs.pas
字号:
{-------------------------------------------------------------------------------}
{设置从表所有数据为未读}
procedure TFrm_XXJS.SetMX_AllUnRead;
var
l_XXDM, l_SFRQ: string;
l_XH: Integer;
begin
l_XXDM := qry_Info.FieldByName('XXDM').AsString;
l_SFRQ := qry_Info.FieldByName('SFRQ').AsString;
{更新数据库中从表}
with qry_Tmp do
begin
Close;
SQL.Text := 'Update TG_XXSFQKTSMXB Set GHZT=''0'' where FSJSBJ=''0'' and XXDM=''' + l_XXDM + ''' and SFRQ=''' + l_SFRQ + '''';
ExecSQL;
end;
{更新主表}
with qry_Info do
begin
Edit;
FieldByName('GHZT').AsString := '0';
ApplyUpdates;
end;
{刷新从表}
l_XH := qry_MXInfo.FieldByName('XH').AsInteger;
qry_InfoAfterScroll(nil);
qry_MXInfo.Locate('XH', l_XH, []);
end;
{-------------------------------------------------------------------------------}
{删除当前明细记录}
procedure TFrm_XXJS.DelMX;
begin
qry_MXInfo.Delete;
qry_MXInfo.ApplyUpdates;
if qry_MXInfo.IsEmpty = True then
begin
qry_Info.Delete;
qry_Info.ApplyUpdates;
end;
end;
{-------------------------------------------------------------------------------}
{删除当前所有明细记录}
procedure TFrm_XXJS.DelMX_All;
var
l_XXDM, l_SFRQ: string;
begin
if CHQMsgBox('确实要删除当前所有的明细记录吗?', 2) = mrNo then
Exit;
l_XXDM := qry_Info.FieldByName('XXDM').AsString;
l_SFRQ := qry_Info.FieldByName('SFRQ').AsString;
with qry_Tmp do
begin
Close;
SQL.Text := 'Delete TG_XXSFQKTSMXB where FSJSBJ=''0'' and XXDM=''' + l_XXDM + ''' and SFRQ=''' + l_SFRQ + '''';
ExecSQL;
end;
qry_Info.Delete;
qry_Info.ApplyUpdates;
end;
{-------------------------------------------------------------------------------}
{将主表中一条记录标记为已读}
procedure TFrm_XXJS.Set_Read;
var
l_XXDM, l_SFRQ: string;
l_XH: Integer;
begin
l_XXDM := qry_Info.FieldByName('XXDM').AsString;
l_SFRQ := qry_Info.FieldByName('SFRQ').AsString;
l_XH := qry_MXInfo.FieldByName('XH').AsInteger;
{直接更新主表}
with qry_Info do
begin
Edit;
FieldByName('GHZT').AsString := '1';
ApplyUpdates;
end;
{更新数据库中从表}
with qry_Tmp do
begin
Close;
SQL.Text := 'Update TG_XXSFQKTSMXB set GHZT=''1'' where FSJSBJ=''0'' and XXDM=''' + l_XXDM + ''' and SFRQ=''' + l_SFRQ + '''';
ExecSQL;
end;
{刷新从表}
qry_InfoAfterScroll(nil);
qry_MXInfo.Locate('XH', l_XH, []);
end;
{-------------------------------------------------------------------------------}
{将主表中全部当前记录标记为已读}
procedure TFrm_XXJS.Set_AllRead;
var
l_SQL_Part: string;
l_XXDM, l_SFRQ: string;
l_XH: Integer;
begin
l_XXDM := qry_Info.FieldByName('XXDM').AsString;
l_SFRQ := qry_Info.FieldByName('SFRQ').AsString;
l_XH := qry_MXInfo.FieldByName('XH').AsInteger;
l_SQL_Part := Get_SQL_Part;
with qry_Tmp do
begin
{更新从表信息}
Close;
SQL.Text := 'Update TG_XXSFQKTSMXB Set GHZT=''1'' ' + l_SQL_Part;
ExecSQL;
{更新主表信息}
Close;
SQL.Text := 'Update TG_XXSFQKTSZB Set GHZT=''1'' ' + l_SQL_Part;
ExecSQL;
end;
{重新读取信息}
with qry_Info do
begin
Close;
SQL.Text := 'Select XXDM,SFRQ,XXMC,GHZT From TG_XXSFQKTSZB ' + l_SQL_Part + ' order by XXDM';
Open;
Locate('XXDM;SFRQ', VarArrayOf([l_XXDM, l_SFRQ]), []);
end;
qry_InfoAfterScroll(nil);
qry_MXInfo.Locate('XH', l_XH, []);
end;
{-------------------------------------------------------------------------------}
{设置主表中的一条数据为未读}
procedure TFrm_XXJS.Set_UnRead;
var
l_XXDM, l_SFRQ: string;
l_XH: Integer;
begin
l_XXDM := qry_Info.FieldByName('XXDM').AsString;
l_SFRQ := qry_Info.FieldByName('SFRQ').AsString;
l_XH := qry_MXInfo.FieldByName('XH').AsInteger;
{直接更新主表}
with qry_Info do
begin
Edit;
FieldByName('GHZT').AsString := '0';
ApplyUpdates;
end;
{更新数据库中从表}
with qry_Tmp do
begin
Close;
SQL.Text := 'Update TG_XXSFQKTSMXB set GHZT=''0'' where FSJSBJ=''0'' and XXDM=''' + l_XXDM + ''' and SFRQ=''' + l_SFRQ + '''';
ExecSQL;
end;
{刷新从表}
qry_InfoAfterScroll(nil);
qry_MXInfo.Locate('XH', l_XH, []);
end;
{-------------------------------------------------------------------------------}
{设置主表中的所有数据为未读}
procedure TFrm_XXJS.Set_AllUnRead;
var
l_SQL_Part: string;
l_XXDM, l_SFRQ: string;
l_XH: Integer;
begin
l_XXDM := qry_Info.FieldByName('XXDM').AsString;
l_SFRQ := qry_Info.FieldByName('SFRQ').AsString;
l_XH := qry_MXInfo.FieldByName('XH').AsInteger;
l_SQL_Part := Get_SQL_Part;
with qry_Tmp do
begin
{更新从表信息}
Close;
SQL.Text := 'Update TG_XXSFQKTSMXB Set GHZT=''0'' ' + l_SQL_Part;
ExecSQL;
{更新主表信息}
Close;
SQL.Text := 'Update TG_XXSFQKTSZB Set GHZT=''0'' ' + l_SQL_Part;
ExecSQL;
end;
{重新读取信息}
with qry_Info do
begin
Close;
SQL.Text := 'Select XXDM,SFRQ,XXMC,GHZT From TG_XXSFQKTSZB ' + l_SQL_Part + 'order by XXDM';
Open;
Locate('XXDM;SFRQ', VarArrayOf([l_XXDM, l_SFRQ]), []);
end;
qry_InfoAfterScroll(nil);
qry_MXInfo.Locate('XH', l_XH, []);
end;
{-------------------------------------------------------------------------------}
{删除主表记录}
procedure TFrm_XXJS.Del;
var
l_XXDM, l_SFRQ: string;
begin
l_XXDM := qry_Info.FieldByName('XXDM').AsString;
l_SFRQ := qry_Info.FieldByName('SFRQ').AsString;
{删除子表记录}
with qry_Tmp do
begin
Close;
SQL.Text := 'Delete TG_XXSFQKTSMXB where FSJSBJ=''0'' and XXDM=''' + l_XXDM + ''' and SFRQ=''' + l_SFRQ + '''';
ExecSQL;
end;
{删除主表记录}
qry_Info.Delete;
qry_Info.ApplyUpdates;
end;
{-------------------------------------------------------------------------------}
{删除所有主表记录}
procedure TFrm_XXJS.Del_All;
var
l_SQL_Part: string;
l_XXDM, l_SFRQ: string;
begin
if CHQMsgBox('确实要删除当前所有的记录吗?', 2) = mrNo then
Exit;
l_XXDM := qry_Info.FieldByName('XXDM').AsString;
l_SFRQ := qry_Info.FieldByName('SFRQ').AsString;
l_SQL_Part := Get_SQL_Part;
with qry_Tmp do
begin
{删除从表信息}
Close;
SQL.Text := 'Delete TG_XXSFQKTSMXB ' + l_SQL_Part;
ExecSQL;
{删除主表信息}
Close;
SQL.Text := 'Delete TG_XXSFQKTSZB ' + l_SQL_Part;
ExecSQL;
end;
{重新读取信息}
with qry_Info do
begin
Close;
SQL.Text := 'Select XXDM,SFRQ,XXMC,GHZT From TG_XXSFQKTSZB ' + l_SQL_Part + ' order by XXDM';
Open;
end;
qry_InfoAfterScroll(nil);
end;
{-------------------------------------------------------------------------------}
{取得SQL的后半部分}
function TFrm_XXJS.Get_SQL_Part: string;
var
SQLString: string;
l_position, l_length: Integer;
begin
{得到SQL语句Where后面的部分}
SQLString := qry_Info.SQL.Text;
l_length := Length(SQLString);
l_position := pos('where', SQLString);
SQLString := Copy(SQLString, l_position, l_length - l_position);
{剔除SQL语句Order by后面的东西}
l_position := pos('order', SQLString);
if l_position = 0 then
begin
Result := SQLString;
Exit;
end;
SQLString := Copy(SQLString, 1, l_position - 1);
Result := SQLString;
end;
{============================选择对哪一个进行操作===============================}
{进行设为已读操作}
procedure TFrm_XXJS.bbtn_MX_Set_ReadClick(Sender: TObject);
begin
Do_What := 0;
pm_Info.Popup(
Self.Left + pnl_Bottom.Left + bbtn_Set_Read.Left + bbtn_Set_Read.Width div 2 + 18,
Self.Top + pnl_Bottom.Top + bbtn_Set_Read.Top + bbtn_Set_Read.Height div 2 + 40);
end;
{进行全部设为已读操作}
procedure TFrm_XXJS.bbtn_MX_Set_AllReadClick(Sender: TObject);
begin
Do_What := 1;
pm_Info.Popup(
Self.Left + pnl_Bottom.Left + bbtn_Set_AllRead.Left + bbtn_Set_AllRead.Width div 2 + 18,
Self.Top + pnl_Bottom.Top + bbtn_Set_AllRead.Top + bbtn_Set_AllRead.Height div 2 + 40);
end;
{设为未读}
procedure TFrm_XXJS.bbtn_Set_UnReadClick(Sender: TObject);
begin
Do_What := 2;
pm_Info.Popup(
Self.Left + pnl_Bottom.Left + bbtn_Set_UnRead.Left + bbtn_Set_UnRead.Width div 2 + 18,
Self.Top + pnl_Bottom.Top + bbtn_Set_UnRead.Top + bbtn_Set_UnRead.Height div 2 + 40);
end;
{全部设为未读}
procedure TFrm_XXJS.bbtn_Set_AllUnReadClick(Sender: TObject);
begin
Do_What := 3;
pm_Info.Popup(
Self.Left + pnl_Bottom.Left + bbtn_Set_AllUnRead.Left + bbtn_Set_AllUnRead.Width div 2 + 18,
Self.Top + pnl_Bottom.Top + bbtn_Set_AllUnRead.Top + bbtn_Set_AllUnRead.Height div 2 + 40);
end;
{进行删除操作}
procedure TFrm_XXJS.bbtn_MX_DelClick(Sender: TObject);
begin
Do_What := 4;
pm_Info.Popup(
Self.Left + pnl_Bottom.Left + bbtn_Del.Left + bbtn_Del.Width div 2 + 18,
Self.Top + pnl_Bottom.Top + bbtn_Del.Top + bbtn_Del.Height div 2 + 40);
end;
{进行全部删除操作}
procedure TFrm_XXJS.bbtn_AllDelClick(Sender: TObject);
begin
Do_What := 5;
pm_Info.Popup(
Self.Left + pnl_Bottom.Left + bbtn_AllDel.Left + bbtn_AllDel.Width div 2 + 18,
Self.Top + pnl_Bottom.Top + bbtn_AllDel.Top + bbtn_AllDel.Height div 2 + 40);
end;
{-------------------------------------------------------------------------------}
{对主表进行操作}
procedure TFrm_XXJS.pmi_mainClick(Sender: TObject);
begin
if qry_Info.IsEmpty = True then Exit;
case Do_What of
0: Set_Read;
1: Set_AllRead;
2: Set_UnRead;
3: Set_AllUnRead;
4: Del;
5: Del_All;
end;
end;
{-------------------------------------------------------------------------------}
{对明细表进行操作}
procedure TFrm_XXJS.pmi_MXClick(Sender: TObject);
begin
if qry_MXInfo.IsEmpty = True then Exit;
case Do_What of
0: SetMX_Read;
1: SetMX_ALLRead;
2: SetMX_UnRead;
3: SetMX_AllUnRead;
4: DelMX;
5: DelMX_All;
end;
end;
{---------------------------------主表操作--------------------------------------}
{设为已读}
procedure TFrm_XXJS.pmi_Main_SetReadClick(Sender: TObject);
begin
if qry_Info.IsEmpty = True then Exit;
Set_Read;
end;
{全部设为已读}
procedure TFrm_XXJS.pmi_Main_SetAllReadClick(Sender: TObject);
begin
if qry_Info.IsEmpty = True then Exit;
Set_AllRead;
end;
{设为未读}
procedure TFrm_XXJS.pmi_Main_SetUnReadClick(Sender: TObject);
begin
if qry_Info.IsEmpty = True then Exit;
Set_UnRead;
end;
{全部设为未读}
procedure TFrm_XXJS.pmi_Main_SetAllUnReadClick(Sender: TObject);
begin
if qry_Info.IsEmpty = True then Exit;
Set_AllUnRead;
end;
{删除}
procedure TFrm_XXJS.pmi_Main_DelClick(Sender: TObject);
begin
if qry_Info.IsEmpty = True then Exit;
Del;
end;
{全部删除}
procedure TFrm_XXJS.pmi_Main_DelAllClick(Sender: TObject);
begin
if qry_Info.IsEmpty = True then Exit;
Del_All;
end;
{-------------------------------明细表操作--------------------------------------}
{设为已读}
procedure TFrm_XXJS.pmi_MX_SetReadClick(Sender: TObject);
begin
if qry_MXInfo.IsEmpty = True then Exit;
SetMX_Read;
end;
{全部设为已读}
procedure TFrm_XXJS.pmi_MX_SetAllReadClick(Sender: TObject);
begin
if qry_MXInfo.IsEmpty = True then Exit;
SetMX_ALLRead;
end;
{设为未读}
procedure TFrm_XXJS.pmi_MX_SetUnReadClick(Sender: TObject);
begin
if qry_MXInfo.IsEmpty = True then Exit;
SetMX_UnRead;
end;
{全部设为未读}
procedure TFrm_XXJS.pmi_MX_SetAllUnReadClick(Sender: TObject);
begin
if qry_MXInfo.IsEmpty = True then Exit;
SetMX_AllUnRead;
end;
{删除}
procedure TFrm_XXJS.pmi_MX_DelClick(Sender: TObject);
begin
if qry_MXInfo.IsEmpty = True then Exit;
DelMX;
end;
{全部删除}
procedure TFrm_XXJS.pmi_MX_DelAllClick(Sender: TObject);
begin
if qry_MXInfo.IsEmpty = True then Exit;
DelMX_All;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -