⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ss_xxjs.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{*******************************************************}
{                                                       }
{                    信息接收情况                       }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{            编制:中软金马邮资票品项目开发组           }
{                                                       }
{                                                       }
{*******************************************************}
(*
本模块在省级系统管理模块里面调用。

*)
unit SS_XXJS;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, DBCtrls, ComCtrls, Grids, DBGrids, ExtCtrls, RXDBCtrl,
  RXCtrls, Db, DBTables, FieldComboBox, Menus, Mask, ToolEdit;

type
  TFrm_XXJS = class(TForm)
    pnl_Body: TPanel;
    pnl_Title: TPanel;
    lbl_Title: TRxLabel;
    DWMC: TLabel;
    pnl_ShowType: TPanel;
    lbl_From_Date: TLabel;
    rb_To_Date: TLabel;
    rb_Sort_Date: TRadioButton;
    rb_Sort_Info: TRadioButton;
    pnl_ShowType2: TPanel;
    rb_Show_See: TRadioButton;
    rb_NoShow_See: TRadioButton;
    rxdbg_Info: TRxDBGrid;
    dbg_MXInfo: TDBGrid;
    qry_Info: TQuery;
    ds_Info: TDataSource;
    fcb_Info: TFieldComboBox;
    qry_Tmp: TQuery;
    qry_MXInfo: TQuery;
    ds_MXInfo: TDataSource;
    upSQL_MXInfo: TUpdateSQL;
    pnl_Bottom: TPanel;
    bbtn_AllDel: TBitBtn;
    bbtn_Del: TBitBtn;
    bbtn_Set_AllRead: TBitBtn;
    bbtn_Set_Read: TBitBtn;
    bbtn_Close: TBitBtn;
    pm_Info: TPopupMenu;
    pmi_main: TMenuItem;
    pmi_Line: TMenuItem;
    pmi_MX: TMenuItem;
    bbtn_Set_UnRead: TBitBtn;
    bbtn_Set_AllUnRead: TBitBtn;
    dtp_From_Date: TDateEdit;
    dtp_To_Date: TDateEdit;
    lbl_Main: TLabel;
    lbl_MX: TLabel;
    pnl_Insert_Bottom: TPanel;
    dbm_SFNR: TDBMemo;
    procedure rb_Sort_DateClick(Sender: TObject);
    procedure rb_Sort_InfoClick(Sender: TObject);
    procedure qry_InfoAfterScroll(DataSet: TDataSet);
    procedure Info_Change(Sender: TObject);
    procedure rxdbg_InfoDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure dbg_MXInfoDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure bbtn_MX_Set_ReadClick(Sender: TObject);
    procedure bbtn_MX_Set_AllReadClick(Sender: TObject);
    procedure bbtn_MX_DelClick(Sender: TObject);
    procedure pmi_mainClick(Sender: TObject);
    procedure pmi_MXClick(Sender: TObject);
    procedure bbtn_AllDelClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure bbtn_Set_UnReadClick(Sender: TObject);
    procedure bbtn_Set_AllUnReadClick(Sender: TObject);
    procedure pmi_Main_SetReadClick(Sender: TObject);
    procedure pmi_Main_SetAllReadClick(Sender: TObject);
    procedure pmi_Main_SetUnReadClick(Sender: TObject);
    procedure pmi_Main_SetAllUnReadClick(Sender: TObject);
    procedure pmi_Main_DelClick(Sender: TObject);
    procedure pmi_Main_DelAllClick(Sender: TObject);
    procedure pmi_MX_SetReadClick(Sender: TObject);
    procedure pmi_MX_SetAllReadClick(Sender: TObject);
    procedure pmi_MX_SetUnReadClick(Sender: TObject);
    procedure pmi_MX_SetAllUnReadClick(Sender: TObject);
    procedure pmi_MX_DelClick(Sender: TObject);
    procedure pmi_MX_DelAllClick(Sender: TObject);
    procedure dtp_From_DateAcceptDate(Sender: TObject;
      var ADate: TDateTime; var Action: Boolean);
    procedure dtp_From_DateExit(Sender: TObject);
    procedure dtp_To_DateExit(Sender: TObject);
    procedure dtp_To_DateAcceptDate(Sender: TObject; var ADate: TDateTime;
      var Action: Boolean);                                 {显示要查找的信息}

  private
    { Private declarations }
    procedure Get_Info;
    procedure Create_Info;                                  {产生显示的信息}
    function Get_Server_Date: string;                       {取得服务器系统时间}

    procedure Set_Read;                                     {将主表中一条记录标记为已读}
    procedure Set_AllRead;                                  {将主表中全部当前记录标记为已读}
    procedure Set_UnRead;                                   {设置主表中的一条数据为未读}
    procedure Set_AllUnRead;                                {设置主表中的所有数据为未读}
    procedure Del;                                          {删除主表记录}
    procedure Del_All;                                      {删除所有主表记录}

    function Get_SQL_Part: string;                          {取得SQL的后半部分}

    procedure SetMX_Read;                                   {设置明细内容已读}
    procedure SetMX_ALLRead;                                {设置明细所有为已读}
    procedure SetMX_UnRead;                                 {设置从表当前数据为未读}
    procedure SetMX_AllUnRead;                              {设置从表所有数据为未读}
    procedure DelMX;                                        {删除当前明细记录}
    procedure DelMX_All;                                    {删除当前所有明细记录}
  public
    { Public declarations }
  end;

var
  Frm_XXJS: TFrm_XXJS;

procedure Show_SS_XXJS;

implementation

{$R *.DFM}
uses datas,Pub;

{省级信息接收模块,主要功能是对信息收发情况提示主表(TG_XXSFQKTSZB)、信息收发情况提示明细表(TG_XXSFQKTSMXB)、
 状态代码表(TG_ZTDMB)进行简单的修改、删除操作。

 涉及数据库表:
   信息收发情况提示主表(TG_XXSFQKTSZB)
   信息收发情况提示明细表(TG_XXSFQKTSMXB)
   状态代码表(TG_ZTDMB)
   
 石玉琢 2001.09.24}

var
  Do_What: Integer; {进行什么操作,0:设为已读;1:全部设为已读;2:设为未读;3:全部设为未读;4:删除;5:全部删除} {}


{显示信息接收情况}
procedure Show_SS_XXJS;
begin
  with TFrm_XXJS.Create(Application) do
  try
    ShowModal;
  finally
    Free;
  end;
end;

{-------------------------------------------------------------------------------}
procedure TFrm_XXJS.FormCreate(Sender: TObject);
var
  l_Date: TDateTime;
begin
  DWMC.Caption := '使用单位:' + VG_UnitName;

  qry_Info.Filter := 'GHZT = ''0''';
  qry_MXInfo.Filter := 'GHZT = ''0''';
  l_Date := StrToDate(Get_Server_Date);
  dtp_From_Date.Date := l_Date;
  dtp_To_Date.Date := l_Date;

  Get_Server_Date;
  Create_Info;

  Get_Info;
end;

{-------------------------------------------------------------------------------}
{取得服务器系统时间}
function TFrm_XXJS.Get_Server_Date: string;
begin
  with qry_Tmp do
  begin
    Close;
    SQL.Text := 'Select sysDate From Dual';
    Open;
    Result := FormatDateTime('yyyy-mm-dd', FieldByName('sysDate').AsDateTime);
  end;
end;

{-------------------------------------------------------------------------------}
{按照日期显示}
procedure TFrm_XXJS.rb_Sort_DateClick(Sender: TObject);
begin
  dtp_From_Date.Enabled := True;
  dtp_To_Date.Enabled := True;
  fcb_Info.Enabled := False;

  Get_Info;
end;

{-------------------------------------------------------------------------------}
{按照信息显示}
procedure TFrm_XXJS.rb_Sort_InfoClick(Sender: TObject);
begin
  dtp_From_Date.Enabled := False;
  dtp_To_Date.Enabled := False;
  fcb_Info.Enabled := True;

  Get_Info;
end;

{-------------------------------------------------------------------------------}
{时间选择改变}
procedure TFrm_XXJS.dtp_From_DateAcceptDate(Sender: TObject;
  var ADate: TDateTime; var Action: Boolean);
begin
  Info_Change(Sender);
end;
procedure TFrm_XXJS.dtp_To_DateAcceptDate(Sender: TObject;
  var ADate: TDateTime; var Action: Boolean);
begin
  Info_Change(Sender);
end;
procedure TFrm_XXJS.dtp_From_DateExit(Sender: TObject);
begin
  try
    StrToDate(dtp_From_Date.Text);
  except
    CHQMsgBox('请输入合法日期!');
    dtp_From_Date.SetFocus;
    Exit;
  end;
  Info_Change(Sender);
end;
procedure TFrm_XXJS.dtp_To_DateExit(Sender: TObject);
begin
  try
    StrToDate(dtp_To_Date.Text);
  except
    CHQMsgBox('请输入合法日期!');
    dtp_To_Date.SetFocus;
    Exit;
  end;
  Info_Change(Sender);
end;

{-------------------------------------------------------------------------------}
{显示要查找的信息}
procedure TFrm_XXJS.Info_Change(Sender: TObject);
begin
  Get_Info;                                                 {根据需求得到要查找的信息}
end;

{-------------------------------------------------------------------------------}
{根据需求得到要查找的信息}
procedure TFrm_XXJS.Get_Info;
var
  SQLString: string;
begin
  SQLString := 'Select XXDM,SFRQ,XXMC,GHZT From TG_XXSFQKTSZB where FSJSBJ=''0''';

  if rb_Sort_Date.Checked = True then
  {按日期显示}
    SQLString := SQLString + ' and SFRQ>=''' + FormatDateTime('yyyy-mm-dd', dtp_From_Date.Date) +
      ''' and SFRQ<=''' + FormatDateTime('yyyy-mm-dd', dtp_To_Date.Date) + ''''
  else
  {按信息显示}
    SQLString := SQLString + ' and XXDM=''' + fcb_Info.FieldString + '''';


  {是否只显示未勾核信息}
  if rb_NoShow_See.Checked = True then
  begin
    SQLString := SQLString + ' and GHZT = ''0''';
    qry_Info.Filtered := True;
    qry_MXInfo.Filtered := True;
  end
  else
  begin
    qry_Info.Filtered := False;
    qry_MXInfo.Filtered := False;
  end;

  with qry_Info do
  begin
    Close;
    SQL.Text := SQLString + ' order by XXDM';
    Open;
  end;
  qry_InfoAfterScroll(nil);
end;

{-------------------------------------------------------------------------------}
{绘制已勾核和未勾核信息,分两种情况显示}
procedure TFrm_XXJS.rxdbg_InfoDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if qry_Info.FieldByName('GHZT').AsString = '1' then
    if (gdSelected in State) and (rxdbg_Info.Focused = True) then
      rxdbg_Info.Canvas.Font.Color := clWhite
    else
      rxdbg_Info.Canvas.Font.Color := clTeal;               //$00A56E3A;

  rxdbg_Info.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

{-------------------------------------------------------------------------------}
{绘制已勾核和未勾核信息,分两种情况显示}
procedure TFrm_XXJS.dbg_MXInfoDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if qry_MXInfo.FieldByName('GHZT').AsString = '1' then
    if (gdSelected in State) and (dbg_MXInfo.Focused = True) then
      dbg_MXInfo.Canvas.Font.Color := clWhite
    else                                                    //if gdFocused in State then
      dbg_MXInfo.Canvas.Font.Color := clTeal;               //$00A56E3A;

  dbg_MXInfo.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

{-------------------------------------------------------------------------------}
{产生显示的信息}
procedure TFrm_XXJS.Create_Info;
begin
  fcb_Info.ClearAll;
  with qry_Tmp do
  begin
    Close;
    SQL.Text := 'Select distinct XXDM,XXMC from TG_XXSFQKTSZB where FSJSBJ=''0''';
    Open;
    while not Eof do
    begin
      fcb_Info.Items.Add(FieldByName('XXMC').AsString);
      fcb_Info.FieldItems.Add(FieldByName('XXDM').AsString);
      Next;
    end;
  end;
end;

{-------------------------------------------------------------------------------}
{主表记录滚动,刷新子表记录}
procedure TFrm_XXJS.qry_InfoAfterScroll(DataSet: TDataSet);
var
  l_XXDM, l_SFRQ: string;
  SQLString: string;
begin
  l_XXDM := qry_Info.FieldByName('XXDM').AsString;
  l_SFRQ := qry_Info.FieldByName('SFRQ').AsString;

  SQLString := 'Select a.XXDM,a.SFRQ,a.XH,a.SFSJ,b.XGMC,a.SFNR,a.GHZT From TG_XXSFQKTSMXB a,TG_ZTDMB b '#13#10 +
    'where b.ZT(+)=a.XGZT and FSJSBJ=''0'' ' +
    ' and XXDM=''' + l_XXDM + ''' and SFRQ=''' + l_SFRQ + '''';

  {是否只显示为勾核信息}
  if rb_NoShow_See.Checked = True then
    SQLString := SQLString + ' and GHZT = ''0''';

  with qry_MXInfo do
  begin
    Close;
    SQL.Text := SQLString + ' order by XH';
    Open;
  end;
end;

{-------------------------------------------------------------------------------}
{设置明细内容已读}
procedure TFrm_XXJS.SetMX_Read;
begin
  {更新当前的记录,设置为已读}
  with qry_MXInfo do
  begin
    Edit;
    FieldByName('GHZT').AsString := '1';
    ApplyUpdates;
  end;

  {查找数据库,看是否存在未读记录,如果不存在,则更新主表勾核标志}
  with qry_Tmp do
  begin
    Close;
    SQL.Text := 'Select * From TG_XXSFQKTSMXB where GHZT=''0'''#13#10 +
      ' and XXDM =''' + qry_Info.FieldByName('XXDM').AsString +
      ''' and SFRQ=''' + qry_Info.FieldByName('SFRQ').AsString + '''';
    Open;

    if IsEmpty = True then
      with qry_Info do
      begin
        Edit;
        FieldByName('GHZT').AsString := '1';
        ApplyUpdates;
      end;
  end;
end;

{-------------------------------------------------------------------------------}
{设置明细所有为已读}
procedure TFrm_XXJS.SetMX_ALLRead;
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=''1'' where FSJSBJ=''0'' and XXDM=''' + l_XXDM + ''' and SFRQ=''' + l_SFRQ + '''';
    ExecSQL;
  end;
  {更新主表}
  with qry_Info do
  begin
    Edit;
    FieldByName('GHZT').AsString := '1';
    ApplyUpdates;
  end;

  {刷新从表}
  l_XH := qry_MXInfo.FieldByName('XH').AsInteger;
  qry_InfoAfterScroll(nil);
  qry_MXInfo.Locate('XH', l_XH, []);
end;
{-------------------------------------------------------------------------------}
{设置从表当前数据为未读}
procedure TFrm_XXJS.SetMX_UnRead;
begin
  {更新当前的记录,设置为未读}
  with qry_MXInfo do
  begin
    Edit;
    FieldByName('GHZT').AsString := '0';
    ApplyUpdates;
  end;
  {从表中有一条数据设置为未读,就需要将主表中数据设置为未读}
  with qry_Info do
  begin
    Edit;
    FieldByName('GHZT').AsString := '0';
    ApplyUpdates;
  end;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -