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

📄 sy_ndjhqlbzd.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{*******************************************************}
{                                                       }
{             下级单位年度需求查询(补录)              }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{            编制:中软金马邮资票品项目开发组           }
{                                                       }
{                                                       }
{*******************************************************}
(*
省级集邮品管理   ,地市集邮票管理

*)
unit SY_NDJHQLBZD;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, ComCtrls, ImgList, ExtCtrls, StdCtrls, CheckLst, Grids,
  DBGrids, ActnList, Buttons, Spin, Mask, DBCtrls, RXCtrls, Menus,
  DBGridExport, EHGrids, DBGridEh, DBGridEhExport;
type
  TDataState = (dsBrowse, dsInsert, dsEdit);

type
  TFrmY_NDJHQLBZD = class(TForm)
    ILi_Edit: TImageList;
    Panel1: TPanel;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    ActionList1: TActionList;
    Act_add: TAction;
    Act_del: TAction;
    Act_mod: TAction;
    Act_sav: TAction;
    Act_can: TAction;
    Act_rtn: TAction;
    DS_ydlx: TDataSource;
    Act_pagechange: TAction;
    Act_tzExit: TAction;
    PgeCtl_p: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Panel2: TPanel;
    DBGrid_ydlx: TDBGrid;
    Splitter1: TSplitter;
    DS_dw: TDataSource;
    Qry_dw: TQuery;
    Qry_ydlx: TQuery;
    DS_yd: TDataSource;
    Qry_yd: TQuery;
    UpdateSQL1: TUpdateSQL;
    Qry_super: TQuery;
    Qry_ydlxYDLXDM: TStringField;
    Qry_ydlxYDLXMC: TStringField;
    Qry_ydlxND: TStringField;
    Panel4: TPanel;
    Label3: TLabel;
    DS_xq: TDataSource;
    Qry_xq: TQuery;
    UpdateSQL2: TUpdateSQL;
    Qry_xqJHH: TStringField;
    Qry_xqSQDWDM: TStringField;
    Qry_xqND: TStringField;
    Qry_xqZT: TStringField;
    Qry_xqPPMC: TStringField;
    Qry_xqXQZTS: TFloatField;
    Qry_xqYDTS: TFloatField;
    Qry_xqLSTS: TFloatField;
    Qry_xqKFYPTS: TFloatField;
    Qry_xqZBR: TStringField;
    Qry_xqPZR: TStringField;
    Qry_xqZDRQ: TDateTimeField;
    Qry_xqBZ: TStringField;
    Act_snd: TAction;
    Act_dwchange: TAction;
    Act_setText: TAction;
    Qry_xqNCTS: TFloatField;
    Qry_ydND: TStringField;
    Qry_ydDWDM: TStringField;
    Qry_ydYDLXDM: TStringField;
    Qry_ydYDTS: TFloatField;
    Qry_ydLSTS: TFloatField;
    Qry_yddwmc: TStringField;
    DBLCBo_dw: TDBLookupComboBox;
    Label4: TLabel;
    Qry_xqTMC: TStringField;
    Panel5: TPanel;
    DWMC: TLabel;
    XttxTitle: TRxLabel;
    TabSheet3: TTabSheet;
    Label8: TLabel;
    SpinEdit4: TSpinEdit;
    Qry_nc: TQuery;
    DS_nc: TDataSource;
    USQL_nc: TUpdateSQL;
    Qry_ncND: TStringField;
    Qry_ncDWDM: TStringField;
    Qry_ncNCTS: TFloatField;
    Qry_ncdwmc: TStringField;
    DBGE_yd: TDBGridEh;
    DBGE_nc: TDBGridEh;
    DBGE_xq: TDBGridEh;
    procedure Act_modExecute(Sender: TObject);
    procedure Act_canExecute(Sender: TObject);
    procedure Act_savExecute(Sender: TObject);
    procedure DBGrid_ydlxCellClick(Column: TColumn);
    procedure Qry_xqUpdateError(DataSet: TDataSet; E: EDatabaseError;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure Act_dwchangeExecute(Sender: TField);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Act_rtnExecute(Sender: TObject);
    procedure Qry_ydUpdateError(DataSet: TDataSet; E: EDatabaseError;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure Qry_xqKFYPTSChange(Sender: TField);
    procedure FormCreate(Sender: TObject);
    procedure Qry_dwAfterScroll(DataSet: TDataSet);
    procedure Qry_xqCalcFields(DataSet: TDataSet);
    procedure DBGrid_ydKeyPress(Sender: TObject; var Key: Char);
    procedure SpinEdit4Change(Sender: TObject);
    procedure PgeCtl_pChanging(Sender: TObject; var AllowChange: Boolean);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TabSheet2Enter(Sender: TObject);
    procedure Qry_ydlxAfterOpen(DataSet: TDataSet);
    procedure Qry_dwAfterOpen(DataSet: TDataSet);
    procedure DBGE_ydDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    procedure DBGE_ydGetFooterParams(Sender: TObject; DataCol,
      Row: Integer; Column: TColumnEh; AFont: TFont;
      var Background: TColor; var Alignment: TAlignment;
      State: TGridDrawState; var Text: string);
  private
    { Private declarations }


    vlp_v_dwdm: variant;
    FDataEditState: TDataState;
    vlp_s_errmsg: string;
    function CheckExit(): boolean;
    procedure SetDataEdit(const state: TDataState);
    function ExistRecord(Tablenamestr, Conditionstr: string): boolean;
    procedure GetCurrVal(Tablenamestr, Fieldnamestr: string; var Fieldval: variant);
    procedure CheckXQ(const P_V_isNC: boolean = false);
  public
    { Public declarations }
    function Execute(const DB: TDatabase): boolean;
  end;

var
  FrmY_NDJHQLBZD: TFrmY_NDJHQLBZD;

implementation

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

function TFrmY_NDJHQLBZD.CheckExit(): boolean;
  procedure DoCloseYDQry;
  begin
    Qry_super.Close;
    Qry_ydlx.Close;
    Qry_yd.Close;
    Qry_nc.Close;
    Qry_xq.Close;
    Qry_dw.Close;
    Close;
  end;
begin
  result := true;
  if (FDataEditState <> dsBrowse) then
    case CHQMsgBox('数据已经被更改,是否保存所做修改?', 3) of
      IDYes:
        begin
          Act_savExecute(nil);
          DoCloseYDQry;
        end;
      IDNo:
        begin
          Act_canExecute(nil);
          DoCloseYDQry;
        end;
      IDCancel:
        result := false;
    end
  else
  begin
    DoCloseYDQry;
  end;
end;

procedure TFrmY_NDJHQLBZD.GetCurrVal(Tablenamestr, Fieldnamestr: string; var Fieldval: variant);
begin
  Fieldval := null;
  with Qry_super do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select ' + Fieldnamestr + ' from ' + Tablenamestr);
    Open;
    if not IsEmpty then
      FieldVal := Fields[0].AsVariant;
  end;
end;

function TFrmY_NDJHQLBZD.ExistRecord(Tablenamestr, Conditionstr: string): boolean;
begin
  with Qry_super do
  begin
    CLose;
    SQL.Clear;
    SQL.Add('Select count(*) from ' + Tablenamestr + ' Where ' + Conditionstr);
    Open;
    ExistRecord := (Fields[0].Asinteger > 0);
  end;

end;

procedure TFrmY_NDJHQLBZD.SetDataEdit(const state: TDataState);
begin
  FDataEditState := state;
  SpinEdit4.Enabled := state = dsBrowse;

{  DBGrid_yd.ReadOnly := (state = dsBrowse);
  DBG_nc.ReadOnly := (state = dsBrowse);
  DBGrid_xq.ReadOnly := (state = dsBrowse);}

  case PgeCtl_p.ActivePageIndex of
    0:
      begin
        DBGrid_ydlx.Enabled := (State = dsBrowse);
        DBGE_yd.ReadOnly := (State = dsBrowse);
        case state of
          dsInsert:
            begin
              Qry_dw.First;
              while not Qry_dw.Eof do
                if not ExistRecord('TY_JYPYDJHB', 'ND=''' + SpinEdit4.Text + ''' and DWDM=''' + Qry_dw.FieldByName('DWDM').AsString + ''' and YDLXDM=''' + Qry_ydlx.FieldByName('YDLXDM').AsString + '''') then //Qry_yd.Locate('DWDM', Qry_dw.FieldByName('DWDM').AsString, []) then
                begin
                  Qry_yd.Append;
                  Qry_yd.FieldByName('ND').AsString := SpinEdit4.Text;
                  Qry_yd.FieldByName('YDLXDM').Value := Qry_ydlx.FieldByName('YDLXDM').Value;
                  Qry_yd.FieldByName('YDTS').Value := 0;
                  Qry_yd.FieldByName('LSTS').Value := 0;
                  Qry_yd.FieldByName('NCTS').Value := 0;

                  Qry_yd.FieldByName('DWDM').AsString := Qry_dw.FieldByName('DWDM').AsString;
                  Qry_dw.next;
                end
                else
                  Qry_dw.next;
            end;
          dsEdit:
            Qry_yd.Edit;
          dsBrowse:
            begin
            end;
        end;
      end;
    1:
      begin
        DBGE_nc.ReadOnly := (State = dsBrowse);
        case state of
          dsEdit:
            Qry_nc.Edit;
        end;
      end;
    2:
      begin
        DBGE_xq.ReadOnly := (State = dsBrowse);
        case state of
          dsInsert:
            begin
            end;
          dsEdit:
            Qry_yd.Edit;
          dsBrowse:
            begin
            end;
        end;
      end;
  end;
  Act_add.Enabled := (PgeCtl_p.ActivePageIndex = 0) and (state = dsBrowse);
  Act_del.Enabled := (PgeCtl_p.ActivePageIndex = 0) and (state = dsBrowse);
  Act_mod.Enabled := (state = dsBrowse);
  Act_sav.Enabled := (state <> dsBrowse);
  Act_can.Enabled := (state <> dsBrowse);
  Act_snd.Visible := false;
end;

function TFrmY_NDJHQLBZD.Execute(const DB: TDatabase): boolean;
begin
  Result := false;
  if not Assigned(DB) then
    exit;
  DWMC.Caption := '使用单位:' + VG_UnitName;
  try
    Qry_dw.Close;
    Qry_dw.DatabaseName := DB.DatabaseName;
    SpinEdit4.OnChange := nil;
    SpinEdit4.Text := inttostr(VG_Year);
    SpinEdit4.OnChange := SpinEdit4Change;
    Qry_super.Close;
    Qry_super.DatabaseName := DB.DatabaseName;
    //page1
    Qry_ydlx.Close;
    Qry_ydlx.DatabaseName := DB.DatabaseName;
    Qry_yd.Close;
    Qry_yd.DatabaseName := DB.DatabaseName;
    //page2
    Qry_nc.Close;
    Qry_nc.DatabaseName := DB.DatabaseName;
    //page3
//    DBLCBo_dw.KeyValue := Qry_dw.FieldByName('DWDM').AsString;
    Qry_xq.Close;
    Qry_xq.DatabaseName := DB.DatabaseName;

    GetCurrVal('TGS_GXDWSJB where BJ=''1''', 'DWDM', vlp_v_dwdm);

    PgeCtl_p.ActivePageIndex := 0;
    SpinEdit4Change(nil);
    SetDataEdit(dsBrowse);
    Result := true;
  except
    CHQMsgBox('不能打开 <集邮票预订需求> 表 !');
    exit;
  end;
end;

procedure TFrmY_NDJHQLBZD.Act_modExecute(Sender: TObject);
begin
  case PgeCtl_p.ActivePageIndex of
    0, 1:
      begin
        if Qry_yd.IsEmpty then
        begin
          CHQMsgBox('没有可修改的数据!');
          exit;
        end;
        SetDataEdit(dsEdit);
      end;
    2:
      begin
        if Qry_xq.IsEmpty then
        begin
          CHQMsgBox('没有可修改的数据!');
          exit;
        end;
        if Qry_xq.FieldByName('ZT').AsString <> '0' then
        begin
          CHQMsgBox('该需求已被处理!');
          exit;
        end;
        SetDataEdit(dsEdit);
      end;
  end;
end;

procedure TFrmY_NDJHQLBZD.Act_canExecute(Sender: TObject);
var
  vl_s_year: string;
begin
  if (FDataEditState = dsBrowse) then
    exit;

  vl_s_year := SpinEdit4.Text;
  data.DM.StartTransaction;
  try
    case PgeCtl_p.ActivePageIndex of
      0:
        Qry_yd.CancelUpdates;
      1:
        Qry_nc.CancelUpdates;
      2:
        Qry_xq.CancelUpdates;
    end;
    data.DM.Commit;
  except
    data.DM.Rollback;
    CHQMsgBox('数据访问错误!');
  end;
  case PgeCtl_p.ActivePageIndex of
    0:
      Qry_yd.CommitUpdates;
    1:
      Qry_nc.CommitUpdates;
    2:
      Qry_xq.CommitUpdates;
  end;
  SetDataEdit(dsBrowse);
end;

procedure TFrmY_NDJHQLBZD.CheckXQ(const P_V_isNC: Boolean = false);
var
  v_sql, vl_f_ydts, vl_f_lsts {, vl_f_ncts}: string;
  vl_sl_jhh: TStringList;

⌨️ 快捷键说明

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