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

📄 unit_userlog.pas

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

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, DBGrids, Db, DBTables, ExtCtrls, StdCtrls, ComCtrls, Buttons,
  TFlatButtonUnit;

type
  TDataCode = class
    Code:string;

  end;
  
  TFrm_SetupUserLog = class(TForm)
    Panel1: TPanel;
    QueryOperateLog: TQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Label1: TLabel;
    ComboBoxJX: TComboBox;
    Label2: TLabel;
    EditGh: TEdit;
    Panel2: TPanel;
    Panel3: TPanel;
    Label3: TLabel;
    DateTimePicker1: TDateTimePicker;
    Label4: TLabel;
    DateTimePicker2: TDateTimePicker;
    QueryJX: TQuery;
    BitBtn1: TFlatButton;
    BitBtn2: TFlatButton;
    BitBtn3: TFlatButton;
    Label5: TLabel;
    Label6: TLabel;
    DateTimePicker3: TDateTimePicker;
    DateTimePicker4: TDateTimePicker;
    Label7: TLabel;
    Label8: TLabel;
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn2Click(Sender: TObject);
    procedure ComboBoxJXChange(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ComboBoxJXKeyPress(Sender: TObject; var Key: Char);
    procedure DateTimePicker1KeyPress(Sender: TObject; var Key: Char);
    procedure DateTimePicker2KeyPress(Sender: TObject; var Key: Char);
    procedure DateTimePicker3KeyPress(Sender: TObject; var Key: Char);
    procedure DateTimePicker4KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
    sqlstr:String;
    //记录当前的
    FCode:string;
    P_jxdm,P_cityno :string;
    // 创建拉框 pSpace 为真预先加入的一个值,其code为空
    Procedure CreateComboBox(Combobox:TCombobox;pQuery:TDataSet;pCode,pCode1,pLabel:string;pSpace:string);
    //释放内存
    Procedure FreeNode(Combobox:TCombobox);
    //根据Code 得到索引号
    Function GetCodeIndex(Combobox:TCombobox;pCode:string):integer;
    //设置编辑框的灰和不灰Lflag为true,可编辑
    procedure ProcSetPanel(Lflag:boolean);
  public
    { Public declarations }
  end;

var
  Frm_SetupUserLog: TFrm_SetupUserLog;

implementation
Uses
   Main,crypt,procedurep,Unit_UserLog_Rp;

{$R *.DFM}

procedure TFrm_SetupUserLog.FormShow(Sender: TObject);
begin
   //***********禁止用Locate****************
   {ComboboxJX.Items.Clear;
   ComboboxJx.Items.Add('所有');
   QueryJX.Open;
   While Not QueryJX.Eof Do
      Begin
         ComboboxJX.Items.Add(QueryJx.FieldByName('Home_name').AsString);
         QueryJX.Next;
      End;
   //当前到当前的用户的局向,要不要加权限呢?对业务不是很熟悉
   If QueryJX.Locate('Off_no_home',JX,[])=True Then
      ComboboxJX.ItemIndex:=ComboboxJx.Items.IndexOf(QueryJx.FieldByName('Home_name').AsString)
   Else
      ComboboxJx.ItemIndex:=0; }
   //建下拉框并定位
   QueryJX.close;
   QueryJX.Open;
   CreateComboBox(ComboboxJx,QueryJX,'OFF_NO_HOME','CITYNO','HOME_NAME','所有');
   //定位,奇怪的设计,局向是不唯一的?
   ComboboxJX.ItemIndex:=GetCodeIndex(ComboboxJx,inttostr(JX)+'#'+PS_CityNo);
   ComboBoxJXChange(nil);
   DateTimePicker1.DateTime:=Date;
   DateTimePicker2.DateTime:=Date;
   DateTimePicker3.DateTime:=Date;
   DateTimePicker4.DateTime:=Date;
   //加上权限,和局向及城市控制
   if JBDM<=2 then
   begin
     BitBtn1.Enabled :=true;
     ComboBoxJX.Enabled :=true;
     //BitBtn1Click(Nil);
   end
     else
       begin
         //BitBtn1.Enabled :=false;
         ComboBoxJX.Enabled :=false;
         //ProcSetPanel(false);
       end;
end;

procedure TFrm_SetupUserLog.BitBtn1Click(Sender: TObject);
begin
   //只是一个子查询的问题,干吗写成这样?
   {QueryOperateLog.Close;
   QueryOperateLog.SQL.Clear;
   QueryOperateLog.SQL.Add('Select a.* From T_H_UserLog a,T_F_Manager b Where a.WK_NO=B.WK_NO ');
   QueryOperateLog.SQL.Add('And Substr(BEGINTIME,1,10)>='''+FormatDateTime('YYYY-MM-DD',DateTimePicker1.Date)+''' And Substr(BEGINTIME,1,10)<='''+FormatDateTime('YYYY-MM-DD',DateTimePicker2.Date)+'''');
   If QueryJX.Locate('Home_name',ComboboxJX.Text,[])=True Then
      QueryOperateLog.SQL.Add(' And b.Off_no_home='+QueryJX.FieldByName('Off_no_home').AsString);
   If Trim(EditGH.Text)<>'' Then
      QueryOperateLog.SQL.Add(' And a.WK_NO='''+EditGH.Text+'''');
   sqlstr:=QueryOperateLog.sql.text;
   QueryOperateLog.Open;}
   
   sqlstr :='Select * From T_H_UserLog Where OPID is not null';
   //加上开始时间
   sqlstr :=sqlstr+' and BEGINTIME>=to_date('
   +#39+FormatDateTime('YYYY-MM-DD',DateTimePicker1.Date)+' 00:00:00'+#39
   +','+#39+' yyyy-mm-dd hh24:mi:ss'+#39+')';

   sqlstr :=sqlstr+' and BEGINTIME<=to_date('
   +#39+FormatDateTime('YYYY-MM-DD',DateTimePicker2.Date)+' 23:59:59'+#39
   +','+#39+' yyyy-mm-dd hh24:mi:ss'+#39+')';
   //加上结束时间
   sqlstr :=sqlstr+' and ENDTIME>=to_date('
   +#39+FormatDateTime('YYYY-MM-DD',DateTimePicker3.Date)+' 00:00:00'+#39
   +','+#39+' yyyy-mm-dd hh24:mi:ss'+#39+')';

   sqlstr :=sqlstr+' and ENDTIME<=to_date('
   +#39+FormatDateTime('YYYY-MM-DD',DateTimePicker4.Date)+' 23:59:59'+#39
   +','+#39+' yyyy-mm-dd hh24:mi:ss'+#39+')';

   //加上客户经理
   If Trim(EditGH.Text)<>'' Then
      sqlstr :=sqlstr+' and WK_NO='+#39+EditGH.Text+#39;
   //查找出来的人必须是为下拉的局向
   if ComboboxJX.Text<>'所有' then
   sqlstr :=sqlstr+' and WK_NO in (select WK_NO from T_F_Manager '+
   ' where OFF_NO_HOME='+#39+P_jxdm+#39+' and CITYNO='+#39+P_cityno+#39+')';

   QueryOperateLog.sql.text :=sqlstr;
   QueryOperateLog.Open;
end;

procedure TFrm_SetupUserLog.BitBtn3Click(Sender: TObject);
begin
   Close;
end;

procedure TFrm_SetupUserLog.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  //crypt.UserEnter_Log(Caption,'浏览',0,Gh,'登入窗体');
  Action := CaFree;
end;

procedure TFrm_SetupUserLog.BitBtn2Click(Sender: TObject);
begin
    with TQuickReportczrz.Create(application) do
       try
         QRLabel2.Caption:='局向:'+ComboBoxJX.text;
         QRLabel3.Caption:='工号:'+EditGh.text;
         QRLabel4.Caption:='时间:'+DateToStr(DateTimePicker1.DateTime)+'-'+DateToStr(DateTimePicker2.DateTime);
         QueryTmp.Close;
         QueryTmp.sql.clear;
         QueryTmp.sql.add(sqlstr);
         QueryTmp.Open;
         Preview;
       finally
          free;
       end;
end;

procedure TFrm_SetupUserLog.CreateComboBox(Combobox: TCombobox;
  pQuery: TDataSet; pCode,pCode1,pLabel: string; pSpace: string);
var Ldata:TDataCode;
begin
  FreeNode(Combobox);
  ComboBox.Clear;
  if pSpace<>'' then
  begin
    //先加一个空值
    Ldata:=TdataCode.Create;
    Ldata.Code:='';
    ComboBox.Items.AddObject(pSpace,Ldata);
  end;
  if not pQuery.Active then exit;
  //从数据库里取数据
  pQuery.First;
  while not pQuery.Eof do
  begin
    Ldata:=TdataCode.Create;
    Ldata.Code:=trim(pQuery.FieldByName(pCode).AsString)
              +'#'+trim(pQuery.FieldByName(pCode1).AsString);
    ComboBox.Items.AddObject(trim(pQuery.FieldByName(pLabel).AsString),Ldata);
    pQuery.Next;
  end;
end;

procedure TFrm_SetupUserLog.FreeNode(Combobox: TCombobox);
var
  i:integer;
  Ldata:TDataCode;
begin
  for i:=0 to ComboBox.Items.Count - 1 do
  begin
    Ldata:=TdataCode(ComboBox.Items.Objects[i]);
    if Ldata <> nil then Ldata.Free;
  end;
end;

procedure TFrm_SetupUserLog.ComboBoxJXChange(Sender: TObject);
var
  li,lj :integer;
begin
  FCode:=TDataCode(ComboBoxJX.Items.Objects[ComboBoxJX.ItemIndex]).Code;
  li :=pos('#',FCode);
  lj :=length(FCode);
  P_jxdm :=copy(FCode,1,li-1);
  P_cityno :=copy(FCode,li+1,lj-li);
end;

procedure TFrm_SetupUserLog.FormDestroy(Sender: TObject);
begin
  FreeNode(ComboboxJX);
end;

function TFrm_SetupUserLog.GetCodeIndex(Combobox: TCombobox;
  pCode: string): integer;
var
  i:integer;
begin
  result:=0;
  for i:=0 to ComboBox.Items.Count - 1 do
  begin
    if (ComboBox.Items.Objects[i]<>nil) and (pCode = TDataCode(ComboBox.Items.Objects[i]).Code) then
    begin
       result:=i;
       break;
    end;
  end;
end;

procedure TFrm_SetupUserLog.ComboBoxJXKeyPress(Sender: TObject;
  var Key: Char);
begin
  if key = #13 then
    EditGh.SetFocus;
end;

procedure TFrm_SetupUserLog.DateTimePicker1KeyPress(Sender: TObject;
  var Key: Char);
begin
  if key = #13 then
    DateTimePicker2.SetFocus;
end;

procedure TFrm_SetupUserLog.DateTimePicker2KeyPress(Sender: TObject;
  var Key: Char);
begin
  if key = #13 then
    DateTimePicker3.SetFocus;
end;

procedure TFrm_SetupUserLog.DateTimePicker3KeyPress(Sender: TObject;
  var Key: Char);
begin
  if key = #13 then
    DateTimePicker4.SetFocus;
end;

procedure TFrm_SetupUserLog.DateTimePicker4KeyPress(Sender: TObject;
  var Key: Char);
begin
  if key = #13 then
    BitBtn1.SetFocus;
end;

procedure TFrm_SetupUserLog.ProcSetPanel(Lflag: boolean);
var
  li:integer;
begin
  for li:=1 to Frm_SetupUserLog.ComponentCount -1  do
  begin
    if Frm_SetupUserLog.Components[li]  is TComboBox then
    TComboBox(Frm_SetupUserLog.Components[li]).enabled :=Lflag;

    if Frm_SetupUserLog.Components[li]  is TDateTimePicker then
    TDateTimePicker(Frm_SetupUserLog.Components[li]).enabled :=Lflag;

    if Frm_SetupUserLog.Components[li]  is TEdit then
    TEdit(Frm_SetupUserLog.Components[li]).enabled :=Lflag;
  end;
end;

end.

⌨️ 快捷键说明

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