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

📄 unit_manageroperate.pas

📁 delphi开发的中国移动大客户管理系统,后台数据库为oracle
💻 PAS
字号:
unit Unit_ManagerOperate;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, CheckLst, TFlatEditUnit, TFlatComboBoxUnit, Grids, DBGrids,
  ExtCtrls, TFlatButtonUnit, Db, DBTables;
const
   INVALI='1';   //无效值
   VALI='2';     //有效值
   FUNCLOSE='0';  // 关
   FUNOPEN='1';   //开通
   MAXFunCount=40;//最大功能数
   MAXStatCount=60;//最大状态数
type
  TFRM_ManagerOperate = class(TForm)
    PanelLeft: TPanel;
    Label69: TLabel;
    DBGrid_Normal: TDBGrid;
    Panel13: TPanel;
    Label71: TLabel;
    Label89: TLabel;
    Label90: TLabel;
    Label91: TLabel;
    Label92: TLabel;
    Label93: TLabel;
    CoBR_CITYNO: TFlatComboBox;
    CoBR_OFF_NO_HOME: TFlatComboBox;
    CoBR_DJDM: TFlatComboBox;
    EdBR_Sid: TFlatEdit;
    CoBR_SXDM: TFlatComboBox;
    Panel_CustInfo: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    Panel7: TPanel;
    Panel8: TPanel;
    clb_operate: TCheckListBox;
    Label1: TLabel;
    Label2: TLabel;
    Label9: TLabel;
    Label47: TLabel;
    Label55: TLabel;
    Label94: TLabel;
    Label18: TLabel;
    Label49: TLabel;
    Label42: TLabel;
    ed_xb_desc: TFlatEdit;
    ed_SID_C: TFlatEdit;
    ed_off_no_home_desc: TFlatEdit;
    ed_name: TFlatEdit;
    ed_LXDH: TFlatEdit;
    ed_DJDM_Desc: TFlatEdit;
    ed_sxdm_desc: TFlatEdit;
    ed_cityno_Desc: TFlatEdit;
    ed_GH_C: TFlatEdit;
    FlatButton1: TFlatButton;
    Query_tmp: TQuery;
    coBR_GH: TFlatComboBox;
    Query_CustInfo: TQuery;
    ds_CustInfo: TDataSource;
    Panel1: TPanel;
    Btn_Modify: TFlatButton;
    Btn_Cancel: TFlatButton;
    Btn_Save: TFlatButton;
    Btn_Exit: TFlatButton;
    Splitter1: TSplitter;
    Splitter2: TSplitter;
    lb_stat: TListBox;
    procedure FormShow(Sender: TObject);
    procedure CoBR_CITYNOChange(Sender: TObject);
    procedure CoBR_OFF_NO_HOMEChange(Sender: TObject);
    procedure FlatButton1Click(Sender: TObject);
    procedure Query_CustInfoAfterScroll(DataSet: TDataSet);
    procedure Btn_ModifyClick(Sender: TObject);
    procedure Btn_CancelClick(Sender: TObject);
    procedure Btn_SaveClick(Sender: TObject);
    procedure Btn_ExitClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure EdBR_SidKeyPress(Sender: TObject; var Key: Char);
  private
	iSign:integer;
  	ifunCount:integer;
        arrayfun:string[MAXFunCount];
        arrayStat:string[MAXStatCount];
        arrayfundesc:array [1..MAXFunCount] of string;
        arrayStatdesc:array [0..MAXStatCount] of string;
        procedure setFun;
        procedure setStat;
        function SaveFun:string;
        function SaveStat:string;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FRM_ManagerOperate: TFRM_ManagerOperate;

implementation
    uses main,Unit_Public,dmmain;
   //按钮控制
   function Fun_ButtonStatus(pFormName:TForm;pStatus:Boolean=False):Boolean;stdcall;export;external'winfun.dll';

{$R *.DFM}

procedure TFRM_ManagerOperate.FormShow(Sender: TObject);
var
    tmpstr:string;
    i,j,iPos:integer;
begin
with query_tmp do
    begin
        close;
        sql.clear;
        sql.add('select fun,PAR_Desc,par_Values from T_V_Fun');
        open;
        clb_operate.Items.Clear;
        arrayFun:='';
        first;
        while not eof do
            begin
                iPos:=strtoint(trim(fieldbyname('PAR_values').asstring));
                if not((pos('无效',fieldbyname('PAR_Desc').asstring)>0) or (pos('未定义',fieldbyname('PAR_Desc').asstring)>0)) then
		    begin
                        arrayfundesc[iPos]:=trim(fieldbyname('PAR_Desc').asstring);
                        arrayfun[iPos]:=VALI;   //有效
                    end
                else
		    begin
                    	arrayfun[iPos]:=INVALI;       //无效
                    end;
                 next;
            end;
    end;
for i:=1 to MAXFunCount do
    begin
       if arrayfun[i] = VALI then
           clb_operate.Items.Add(arrayfundesc[i]);
    end;
//
with query_tmp do
    begin
        close;
        sql.clear;
        sql.add('select PAR_Desc,STAT from T_V_CUSTSTATUS');
        open;
        lb_stat.Items.Clear;
        arrayStat:='';
        first;
        while not eof do
            begin
                iPos:=strtoint(trim(fieldbyname('STAT').asstring));
                if not(pos('保留',fieldbyname('PAR_Desc').asstring)>0) then
		    begin
                        arrayStatdesc[iPos]:=trim(fieldbyname('PAR_Desc').asstring);
                        arrayStat[iPos]:=VALI;   //有效
                    end
                else
		    begin
                    	arrayStat[iPos]:=INVALI;       //无效
                    end;
                 next;
            end;
    end;
for i:=0 to MAXFunCount do
    begin
       if arrayStat[i] = VALI then
           lb_stat.Items.Add(arrayStatdesc[i]);
    end;


  Fun_GetCity(CoBR_CITYNO,'所有',0,PS_CityName);//初始化所管辖的地市
   coBR_citynoChange(nil);
   Pro_GFillInitValue(Self,'所有');
   Fun_ButtonStatus(Self,False);

   EdBR_Sid.SetFocus;

end;

procedure TFRM_ManagerOperate.CoBR_CITYNOChange(Sender: TObject);
begin
  	Fun_Getcounty(coBR_off_no_home,'所有',coBR_Cityno.Text,0,ps_homename);
  	coBR_off_no_homeChange(coBR_off_no_home);
end;

procedure TFRM_ManagerOperate.CoBR_OFF_NO_HOMEChange(Sender: TObject);
begin
  Fun_GetManager(coBR_GH,'所有',coBR_Cityno.Text,coBR_off_no_home.Text,GH);
end;

procedure TFRM_ManagerOperate.FlatButton1Click(Sender: TObject);
var
    BR_sqlquery,BR_sqlwhere,BR_sqlOrder,tmpstr:string;
    lBR_GH:string;
    lBR_CityNo:string;
    lBR_Off_no_home:string;
    lBR_DJDM:string;
begin
BR_sqlquery:='select rownum row_num,t.* from T_V_CustInfo_Browse t where 1=1';
//BR_sqlOrder:=' order by DJDM';
//
lBR_GH:='';
lBR_CityNo:='';
lBR_Off_no_home:='';
lBR_DJDM:='';
if coBR_GH.text<>'所有' then
   lBR_GH:=copy(coBR_GH.text,1,pos(':',coBR_GH.text)-1);
if  CoBR_CityNo.text<>'所有' then
   lBR_cityno:=Fun_GetCity(CoBR_CityNo,'',1);
if  CoBR_OFF_NO_HOME.text<>'所有' then
   lBR_off_no_home:=Fun_GetCounty(CoBR_OFF_NO_HOME,'','',1);
if  coBR_DJDM.text<>'所有' then
	lBR_DJDM:=fun_getcodename(coBR_DJDM);
//
if lBR_cityno<>'' then
        tmpstr:=tmpstr+' and '+'t.cityno_c='+lBR_cityno+' and '+'t.cityno_city_c='+lBR_cityno+' and '+'t.cityno_county_c='+lBR_cityno;
if lBR_off_no_home<>'' then
        tmpstr:=tmpstr+' and '+'t.off_no_home_c='+lBR_off_no_home+' and '+'t.off_no_home_county_c='+lBR_off_no_home;
if edBR_SID.Text<>'' then
      tmpstr:=tmpstr+' and '+'t.SID_c like '+''''+edBR_SID.Text+'%''';
if lBR_GH<>'' then
        tmpstr:=tmpstr+' and '+'t.GH_c='+''''+lBR_GH+'''';
if lBR_DJDM<>'' then
        tmpstr:=tmpstr+' and '+'t.DJDM='+lBR_DJDM+' and '+'t.gradeno_c='+lBR_DJDM;


BR_sqlwhere:=tmpstr;
with Query_CustInfo do
    begin
        close;
        sql.clear;
        sql.add(BR_sqlquery+BR_sqlwhere);
        open;
    end;

If Query_CustInfo.IsEmpty Then
   Begin
      clb_operate.Enabled:=False;
      lb_stat.Enabled:=False;
   End
Else
   Begin
      clb_operate.Enabled:=True;
      lb_stat.Enabled:=True;
   End;


end;

procedure TFRM_ManagerOperate.Query_CustInfoAfterScroll(DataSet: TDataSet);
begin
ShowRecord(Query_CustInfo,Panel_CustInfo);
setFun;
setStat;
end;

procedure TFRM_ManagerOperate.setFun;
var
    i,itmp:integer;
    tmpstr:string;
begin
with query_CustInfo do
    begin
        for i:=0 to fields.Count-1 do
        if pos('FUN',uppercase(fields[i].displayname))>0 then
            begin
                tmpstr:= fields[i].displayname ;
                itmp:=strtoint(copy(fields[i].displayname,pos('FUN',uppercase(fields[i].displayname))+3,length(fields[i].displayname)));
                itmp:=clb_operate.items.IndexOf(arrayfundesc[itmp]);
                if itmp>=0 then
                    if fields[i].AsString=FUNOPEN then
                    	clb_operate.Checked[itmp]:=true
                    else
                    	clb_operate.Checked[itmp]:=false;
            end;
    end;
end;

function TFRM_ManagerOperate.SaveFun:string;
var
  i,j,itmp:integer;
  tmpstr:string;
begin
for i:=0 to  clb_operate.Items.Count-1 do
    for j:=1 to MAXFunCount do
        if arrayfundesc[j]=trim(clb_operate.Items[i]) then
            if clb_operate.checked[i] then
                  begin
                        if Query_CustInfo.fieldbyname('FUN'+inttostr(j)).asstring<>'1' then
	                    begin

                                tmpstr:='insert into t_i_interface(cityno,sid,submit_type,submit_content,submit_val,submit_time) values(';
                                tmpstr:=tmpstr+Query_CustInfo.fieldbyname('cityno_c').asstring+',';
                                tmpstr:=tmpstr+''''+Query_CustInfo.fieldbyname('sid_C').asstring+''''+',';
                                tmpstr:=tmpstr+'2'+',';
                                tmpstr:=tmpstr+''''+'FUN'+inttostr(j)+''''+',';
                                tmpstr:=tmpstr+'''1'''+',';
                                tmpstr:=tmpstr+'sysdate)';
                                with query_tmp do
                                    begin
                                        close;
                                        sql.clear;
                                        sql.Add(tmpstr);
                                        SQL.SaveToFile('C:\123.TXT');
                                        prepare;
                                        execsql;
                                    end;
                            end;

                  end
            else
                begin
                        if Query_CustInfo.fieldbyname('FUN'+inttostr(j)).asstring<>'0' then
	                    begin
                                tmpstr:='insert into t_i_interface(cityno,sid,submit_type,submit_content,submit_val,submit_time) values(';
                                tmpstr:=tmpstr+Query_CustInfo.fieldbyname('cityno_c').asstring+',';
                                tmpstr:=tmpstr+''''+Query_CustInfo.fieldbyname('sid_C').asstring+''''+',';
                                tmpstr:=tmpstr+'2'+',';
                                tmpstr:=tmpstr+''''+'FUN'+inttostr(j)+''''+',';
                                tmpstr:=tmpstr+'''0'''+',';
                                tmpstr:=tmpstr+'sysdate)';
                                with query_tmp do
                                    begin
                                        close;
                                        sql.clear;
                                        sql.Add(tmpstr);
                                        SQL.SaveToFile('C:\123.TXT');
                                        prepare;
                                        execsql;
                                    end;                                 			    end;
                end;

end;

procedure TFRM_ManagerOperate.Btn_ModifyClick(Sender: TObject);
begin
if not Query_CustInfo.isempty then
    begin
   	iSign:=2;
   	Fun_ButtonStatus(Self,True);
//   	DBGrid_Normal.Enabled:=false;
//   	DBGrid_Normal.refresh;
      Panelleft.Enabled:=False;
    end;
end;

procedure TFRM_ManagerOperate.Btn_CancelClick(Sender: TObject);
begin
   iSign:=0;
   Fun_ButtonStatus(Self,False);
   DBGrid_Normal.Enabled:=true;
   DBGrid_Normal.refresh;
   Query_CustInfo.AfterScroll(query_custInfo);
   
end;

procedure TFRM_ManagerOperate.Btn_SaveClick(Sender: TObject);
var
    update_set,tmpstr:string;
    saveplace:tbookmark;
begin
   If iSign=2 Then
      Begin
        if  Application.MessageBox('是否保存修改','提示',MB_OKCancel) <>IDOK then
            exit;
        try

         Dm_Main.Databasedh.StartTransaction;
	 savefun;
         saveStat;
         Dm_Main.Databasedh.Commit;
         Fun_ButtonStatus(Self,False);
         Panelleft.Enabled:=True;
        except
         DM_Main.Databasedh.Rollback;
         Application.MessageBox('系统在执行过程中发生错误!','提示',MB_ICONINFORMATION);
        end;
      end;
end;

procedure TFRM_ManagerOperate.Btn_ExitClick(Sender: TObject);
begin
   Close;
end;

procedure TFRM_ManagerOperate.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
action:=cafree;
end;

function TFRM_ManagerOperate.SaveStat: string;
var
    i:integer;
    tmpstr:string;
begin
for i:=0 to MAXStatCount-1 do
    begin
        if arrayStatDesc[i]=lb_stat.items[lb_stat.ItemIndex] then
            begin
                if query_CustInfo.fieldbyname('STAT').asinteger<>i then
                    begin
                                tmpstr:='insert into t_i_interface(cityno,sid,submit_type,submit_content,submit_val,submit_time) values(';
                                tmpstr:=tmpstr+Query_CustInfo.fieldbyname('cityno_c').asstring+',';
                                tmpstr:=tmpstr+''''+Query_CustInfo.fieldbyname('sid_C').asstring+''''+',';
                                tmpstr:=tmpstr+'1'+',';
                                tmpstr:=tmpstr+'''STAT'''+',';
                                tmpstr:=tmpstr+''''+inttostr(i)+''''+',';
                                tmpstr:=tmpstr+'sysdate)';
                                with query_tmp do
                                    begin
                                        close;
                                        sql.clear;
                                        sql.Add(tmpstr);
                                        SQL.SaveToFile('C:\123.TXT');
                                        prepare;
                                        execsql;
                                    end;                                
                    end;
                break;
            end;
    end;
end;


procedure TFRM_ManagerOperate.setStat;
var
    itmp:integer;
    tmpstr:string;
begin
with query_CustInfo do
    begin
        itmp:=fieldbyname('STAT').asinteger;
        tmpstr:=arrayStatDesc[itmp];
        itmp:=lb_stat.items.IndexOf(tmpstr);
        if itmp>=0 then
            lb_stat.itemindex:=itmp;
    end;

end;

procedure TFRM_ManagerOperate.EdBR_SidKeyPress(Sender: TObject;
  var Key: Char);
begin
   FlatButton1Click(Nil);
end;

end.

⌨️ 快捷键说明

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