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

📄 sy_zdxxwh.pas

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

*)
unit SY_ZDXXWH;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, ComCtrls, Menus, ActnList, ImgList, ToolWin, StdCtrls,
  DBCtrls, Mask, DBCGrids, ExtCtrls, Buttons, Grids, DBGrids, ToolEdit,
  RXDBCtrl, extdlgs, Spin, RXCtrls, ErrDialog, RxQuery;


type
  old_mei = record
    old_mei_jhh: string;
    old_mei_mxh: string;
  end;
  TFrm_grp = class(TForm)
    ActionList1: TActionList;
    Act_add: TAction;
    Act_delete: TAction;
    Act_modify: TAction;
    Act_save: TAction;
    Act_cancel: TAction;
    Act_exit: TAction;
    ImageList1: TImageList;
    Panel1: TPanel;
    BBt_add: TBitBtn;
    BBt_dte: TBitBtn;
    BBt_mfy: TBitBtn;
    BBt_sve: TBitBtn;
    BBt_cel: TBitBtn;
    BBt_rrn: TBitBtn;
    BBt_pnt: TBitBtn;
    DS_tao: TDataSource;
    Upd_tao: TUpdateSQL;
    Qry_tzdm: TQuery;
    DS_tzdm: TDataSource;
    DS_pplb: TDataSource;
    Qry_pplb: TQuery;
    Upd_mei: TUpdateSQL;
    DS_mei: TDataSource;
    Act_send: TAction;
    Panel2: TPanel;
    Panel3: TPanel;
    GBo_mei: TGroupBox;
    Label22: TLabel;
    Label25: TLabel;
    Label28: TLabel;
    Label33: TLabel;
    DBEdit13: TDBEdit;
    DBEdit15: TDBEdit;
    DBEdit16: TDBEdit;
    DBEdit21: TDBEdit;
    GBo_tao: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label13: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    DBEdit1: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit7: TDBEdit;
    DBEdit10: TDBEdit;
    DBLCbox_jyplb: TDBLookupComboBox;
    DBLCbox_tz: TDBLookupComboBox;
    DBDateEdit1: TDBDateEdit;
    Label42: TLabel;
    Label44: TLabel;
    Label45: TLabel;
    Label46: TLabel;
    Panel4: TPanel;
    Label34: TLabel;
    DBEdit9: TDBEdit;
    Label9: TLabel;
    DBEdit8: TDBEdit;
    Label50: TLabel;
    Qry_super: TQuery;
    Label23: TLabel;
    Panel7: TPanel;
    DBGid_tao: TDBGrid;
    DBGid_mei: TDBGrid;
    Splitter1: TSplitter;
    Panel8: TPanel;
    Panel9: TPanel;
    Panel10: TPanel;
    Qry_tao: TQuery;
    Qry_mei: TQuery;
    Qry_dw: TQuery;
    DS_dw: TDataSource;
    BitBtn1: TBitBtn;
    XttxTitle: TRxLabel;
    DBEdit14: TDBEdit;
    Label20: TLabel;
    SpinEdit1: TSpinEdit;
    DWMC: TLabel;
    Qry_meiJHH: TStringField;
    Qry_meiMXH: TFloatField;
    Qry_meiPPLB: TStringField;
    Qry_meiDW: TStringField;
    Qry_meiTUMC: TStringField;
    Qry_meiTUJC: TStringField;
    Qry_meiCB: TFloatField;
    Qry_meiSJ: TFloatField;
    Qry_meiJHFXL: TFloatField;
    Qry_meiBZ: TStringField;
    Qry_meiSDATEFX: TDateTimeField;
    Qry_taoJHH: TStringField;
    Qry_taoND: TStringField;
    Qry_taoXH: TStringField;
    Qry_taoJYPLB: TStringField;
    Qry_taoTZDM: TStringField;
    Qry_taoDW: TStringField;
    Qry_taoTMC: TStringField;
    Qry_taoTJC: TStringField;
    Qry_taoQTMS: TFloatField;
    Qry_taoCB: TFloatField;
    Qry_taoQTSJ: TFloatField;
    Qry_taoFXRQ: TDateTimeField;
    Qry_taoJHFXL: TFloatField;
    Qry_taoFXDWDM: TStringField;
    Qry_taoFXDWMC: TStringField;
    Qry_taoPZR: TStringField;
    Qry_taoZBR: TStringField;
    Qry_taoZBRQ: TDateTimeField;
    Qry_taoBZ: TStringField;
    Qry_taoSDATEFX: TDateTimeField;
    DBMemo1: TDBMemo;
    DBMemo2: TDBMemo;
    Label3: TLabel;
    DBLCbox_DL: TDBLookupComboBox;
    Qry_DL: TQuery;
    DS_DL: TDataSource;
    procedure Act_addExecute(Sender: TObject);
    procedure Act_deleteExecute(Sender: TObject);
    procedure Act_modifyExecute(Sender: TObject);
    procedure Act_saveExecute(Sender: TObject);
    procedure Act_cancelExecute(Sender: TObject);
    procedure Act_exitExecute(Sender: TObject);
    procedure DBGid_taoEnter(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBGid_taoMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Act_sendExecute(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure LoadBitmapToBlobField(const AField: TField);
    procedure SpinEdit1Change(Sender: TObject);
    procedure Qry_taoUpdateError(DataSet: TDataSet; E: EDatabaseError;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure DBLookupComboBox3Exit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Qry_taoCBGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure Qry_taoCBSetText(Sender: TField; const Text: string);
    procedure Qry_taoQTSJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure Qry_taoQTSJSetText(Sender: TField; const Text: string);
    procedure Qry_meiCBGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure Qry_meiCBSetText(Sender: TField; const Text: string);
    procedure Qry_meiSJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure Qry_meiSJSetText(Sender: TField; const Text: string);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBLCbox_DLCloseUp(Sender: TObject);
    procedure Qry_taoAfterScroll(DataSet: TDataSet);
  private
    VLp_status: integer;
      //0......初始状态(浏览)
      //1......add编辑状态
      //2......查询结果浏览状态
      //3......edit编辑状态
    VLp_FocusGrid: TDBGrid;
      //.tag=0......套
      //.tag=1......枚
    vlp_stao_jhh: string[15];
    vlp_imei_mxh: integer;
    vlp_oldmeival: old_mei;
    vlp_s_errmsg: string;
    function CheckExit(): boolean;
    function ExistRecord(Tablenamestr, Conditionstr: string): boolean;
    procedure SetEditStatus(SubMod: integer; SelectedRowsCount: integer = 1);
      //0......初始状态(浏览)
      //1......编辑状态
      //2......查询结果浏览状态
    { Private declarations }
  public
    { Public declarations }
    function Execute(const DB: TDatabase): boolean;

  end;


var
  Frm_grp: TFrm_grp;

implementation

uses datas, pub;

{$R *.DFM}

function TFrm_grp.CheckExit(): boolean;
begin
  result := true;
  if (VLp_status <> 0) then
    case CHQMsgBox('确定要放弃所做修改吗?', 3) of
      IDNo:
        begin
          Act_saveExecute(nil);
          if VLp_status = 0 then
          begin
            Qry_tao.Close;
            Qry_mei.Close;
            Qry_DL.Close;
            Qry_pplb.Close;
            Qry_tzdm.Close;
            Qry_super.Close;
          end
          else
            result := false;
        end;
      IDYes:
        begin
          Act_cancelExecute(nil);
          Qry_tao.Close;
          Qry_mei.Close;
          Qry_DL.Close;
          Qry_pplb.Close;
          Qry_tzdm.Close;
          Qry_super.Close;
        end;
      IDCancel:
        result := false;
    end
  else
  begin
    Qry_tao.Close;
    Qry_mei.Close;
    Qry_DL.Close;
    Qry_pplb.Close;
    Qry_tzdm.Close;
    Qry_super.Close;
  end;
end;

function TFrm_grp.Execute(const DB: TDatabase): boolean;
begin
  Result := false;
  if not Assigned(DB) then
    exit;
  DWMC.Caption := '使用单位:' + VG_UnitName;
  try
    vlp_stao_jhh := '';
    vlp_imei_mxh := 0;
    vlp_FocusGrid := DBGid_tao;

    Qry_tao.Close;
    Qry_tao.DatabaseName := DB.DatabaseName;
    Qry_tao.Open;

    Qry_mei.Close;
    Qry_mei.DatabaseName := DB.DatabaseName;
    Qry_mei.Open;
    Qry_DL.Close;
    Qry_DL.DatabaseName := DB.DatabaseName;
    Qry_DL.Open;
    Qry_tzdm.Close;
    Qry_tzdm.DatabaseName := DB.DatabaseName;
    Qry_tzdm.Open;
    Qry_dw.Close;
    Qry_dw.DatabaseName := DB.DatabaseName;
    Qry_dw.Open;

    Qry_super.Close;
    Qry_super.DatabaseName := DB.DatabaseName;

    if not Qry_tao.IsEmpty then
      SpinEdit1.Text := Qry_tao.FieldByName('ND').AsString
    else
      SpinEdit1.Text := inttostr(SpinEdit1.MinValue);
    SetEditStatus(0);
    SpinEdit1Change(nil);
    if Qry_tao.IsEmpty then
      SpinEdit1.Text := inttostr(VG_Year)
    else
      SpinEdit1.Text := Qry_tao.FieldByName('ND').AsString;

    DBGid_taoEnter(DBGid_tao);

    Result := true;
  except
    CHQMsgBox('不能打开 <邮资票品信息> 表 !');
    exit;
  end;
end;

function TFrm_grp.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 TFrm_grp.SetEditStatus(SubMod: integer; SelectedRowsCount: integer = 1);
//submod:
//0......初始状态(浏览)
//1......add编辑状态
//2......查询结果浏览状态
//3......edit编辑状态
//4......multiselected

var
  vl_b_tao, vl_b_mei: boolean;
  i: integer;
begin
//设置button状态
  SpinEdit1.ReadOnly := (SubMod <> 0);
  if (SubMod = 4) then
    if (SelectedRowsCount > 0) then
    begin
      Act_add.Enabled := (SelectedRowsCount = 1);
      Act_delete.Enabled := (SelectedRowsCount = 1);
      Act_modify.Enabled := (SelectedRowsCount = 1);
      exit;
    end
    else
    begin
      Act_add.Enabled := true;
      Act_delete.Enabled := true;
      Act_modify.Enabled := true;
      Act_send.Enabled := false;
      exit;
    end;

  VLp_status := SubMod;

//设置DBGrid状态
  if (vlp_FocusGrid = DBGid_tao) then
    DBGid_tao.TitleFont.Color := clnavy
  else
    DBGid_tao.TitleFont.Color := clblack;

  if (VLp_FocusGrid = DBGid_mei) then
    DBGid_mei.TitleFont.Color := clnavy
  else
    DBGid_mei.TitleFont.Color := clblack;

  GBo_tao.Visible := (vlp_FocusGrid = DBGid_tao);
  GBo_mei.Visible := (vlp_FocusGrid = DBGid_mei);

//设置button状态
  Act_add.Enabled := (SubMod = 0);
  Act_delete.Enabled := (SubMod = 0);
  Act_modify.Enabled := (SubMod = 0);
  Act_save.Enabled := (SubMod = 1) or (SubMod = 3);
  Act_cancel.Enabled := (SubMod = 1) or (SubMod = 3);
  Act_send.Enabled := (SubMod = 0) or (SubMod = 4);

  DBGid_tao.Enabled := (SubMod = 0) or (SubMod = 2);
  DBGid_mei.Enabled := (SubMod = 0) or (SubMod = 2);

  vl_b_tao := ((SubMod = 1) or (SubMod = 3) and (vlp_FocusGrid.Tag = 0));

  for i := 0 to GBo_tao.ControlCount - 1 do
  begin
    if (GBo_tao.Controls[i] is TDBEdit) or
      (GBo_tao.Controls[i] is TDBDateEdit) or
      (GBo_tao.Controls[i] is TDBMemo) or
      (GBo_tao.Controls[i] is TSpeedButton) or
      (GBo_tao.Controls[i] is TDBLookupComboBox) then
    begin
      (GBo_tao.Controls[i]).Enabled := vl_b_tao;
    end;
  end;
  DBEdit1.Enabled := (vlp_FocusGrid = DBGid_tao) and (SubMod = 1);

  vl_b_mei := ((SubMod = 1) or (SubMod = 3) and (vlp_FocusGrid.Tag = 1));
  for i := 0 to GBo_mei.ControlCount - 1 do
  begin
    if (GBo_mei.Controls[i] is TDBEdit) or
      (GBo_mei.Controls[i] is TDBDateEdit) or
      (GBo_mei.Controls[i] is TDBMemo) or
      (GBo_mei.Controls[i] is TSpeedButton) then
    begin
      (GBo_mei.Controls[i]).Enabled := vl_b_mei;
    end;
  end;

end;

procedure TFrm_grp.Act_addExecute(Sender: TObject);
begin
 // SetEditStatus(1);
  vlp_FocusGrid.DataSource.DataSet.Append;
  SetEditStatus(1);
  case vlp_FocusGrid.Tag of
    0:
      begin
        Qry_tao.FieldByName('ND').AsString := inttostr(VG_Year);
        Qry_pplb.First;
        Qry_tao.FieldByName('JYPLB').AsString := Qry_pplb.FieldByName('JYPLDM').AsString;
        DBLCbox_jyplb.KeyValue := Qry_pplb.FieldByName('JYPLDM').AsString;
        Qry_tzdm.First;
        Qry_tao.FieldByName('TZDM').AsString := Qry_tzdm.FieldByName('TZDM').AsString;
        DBLCbox_tz.KeyValue := Qry_tzdm.FieldByName('TZDM').AsString;
        ActiveControl := DBEdit1;
      end;
    1: //mei
      begin
        Qry_mei.FieldByName('JHH').AsString := Qry_tao.FieldByName('JHH').AsString;
        Qry_mei.FieldByName('DW').AsString := Qry_tao.FieldByName('DW').AsString;
        Qry_mei.FieldByName('JHFXL').AsString := Qry_tao.FieldByName('JHFXL').AsString;
        ActiveControl := DBEdit13;
      end;
  end;
end;

procedure TFrm_grp.Act_deleteExecute(Sender: TObject);
begin
  if ((vlp_FocusGrid.tag = 0) and (DBGid_tao.DataSource.DataSet.IsEmpty)) or
    ((vlp_FocusGrid.tag = 1) and (DBGid_mei.DataSource.DataSet.IsEmpty)) then
  begin
    CHQMsgBox('当前没有可删除的记录。');
    exit;
  end;

  if CHQMsgBox('确实要删除选中的记录吗?', 2) <> IDYes then
    Exit;

  vlp_FocusGrid.DataSource.DataSet.Next;
  if (VLp_FocusGrid.DataSource.DataSet.Eof) then
  begin
    VLp_FocusGrid.DataSource.DataSet.Prior;
    vlp_stao_jhh := Qry_tao.fieldbyname('JHH').AsString;
    if VLp_FocusGrid.Tag = 1 then
      vlp_imei_mxh := Qry_mei.fieldbyname('MXH').AsInteger;
    VLp_FocusGrid.DataSource.DataSet.Next;
  end
  else
  begin
    vlp_stao_jhh := Qry_tao.fieldbyname('JHH').AsString;
    if vlp_FocusGrid.Tag = 1 then
      vlp_imei_mxh := Qry_mei.fieldbyname('MXH').AsInteger;
    vlp_FocusGrid.DataSource.DataSet.Prior;
  end;

  Qry_tao.DataBase.StartTransaction;
  try
    with Qry_super do
    begin
      case vlp_FocusGrid.tag of
        0: //套
          begin
            Close;
            SQL.Clear;
            SQL.Add('DELETE FROM TF_GRPFXJHM WHERE JHH =''' +
              Qry_tao.fieldbyname('JHH').AsString + '''');
            ExecSQL;
            vlp_FocusGrid.DataSource.DataSet.Delete;
          end;
        1: //图
          begin
            vlp_FocusGrid.DataSource.DataSet.Delete;
          end;
      end;
    end;
    (vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
    Qry_tao.DataBase.Commit;
  except
    Qry_tao.DataBase.RollBack;
    raise exception.Create('数据访问错误!');
  end;

⌨️ 快捷键说明

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