请教各位高手,self.ado.close;self.ado.open与ado.close;ado.open有什么区别,那一种的执行效率更高。多谢。

解决方案 »

  1.   

    应该是一样的,Self一般指窗体的,如果没有Self,默认的Ado的Parant也是该窗体,所以执行效率是一样的
      

  2.   

    没有什么效率问题吧,
    Self是内部由系统定义的变量
    代表类本身
    假设你的窗体是这么定义的
    type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
      end;然后你申明它的一个实例变量
    var
      Form1: TForm1;实际上Self.ado.clos;就等于Form1.ado.close;
    因为你的代码在窗体类的过程和函数里写的,也可以省略Self,那就变成了这样adl.close;
      

  3.   

    完全一样的,
    编译器将:
    self.ado.open
    和ado.open
    看作完全等同。————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  4.   

    没什么区别尤其是在代码优化开关打开时,SELF只是代表对象的所有者!
    请看下面:
    with Self.Ado do
    begin
      close;
      open;
    end;with Ado do
    begin
      Close;
      Open;
    end;
    有一种说法是加With后,会把远程访问优化为近程访问,效率要高些!
    至于不加with如楼主所说,都是远程访问!效率应该是一样!
    我对此了解不深随便说
    用ADO的话影响执行效率的不是"self.ado.close;self.ado.open与ado.close;ado.open有什么区别",即使有区别,在整个模块中也是可以乎略的!
    想提高执行效率,还是把精力集中在后台,以及SQL的代码和ADO的工作模式中来吧!这才是提高执行效率的关键之处
      

  5.   

    没什么区别尤其是在代码优化开关打开时,SELF只是代表对象的所有者!
    请看下面:
    with Self.Ado do
    begin
      close;
      open;
    end;with Ado do
    begin
      Close;
      Open;
    end;
    有一种说法是加With后,会把远程访问优化为近程访问,效率要高些!
    至于不加with如楼主所说,都是远程访问!效率应该是一样!
    我对此了解不深随便说
    用ADO的话影响执行效率的不是"self.ado.close;self.ado.open与ado.close;ado.open有什么区别",即使有区别,在整个模块中也是可以乎略的!
    想提高执行效率,还是把精力集中在后台,以及SQL的代码和ADO的工作模式中来吧!这才是提高执行效率的关键之处
      

  6.   

    我想也是没区别,如果Form1中有ado组件的话,当写成ado.XXX时,默认的窗体就是form1