我做了个ACTIVEX控件,首先这个控件没有界面就是没有TFORM,我想直接声明ADO连接数据库,请问应该怎么做啊!(数据库是SQL2000,DELPHI7)
如果你会请给一段简短的代码,谢谢!分不是问题!

解决方案 »

  1.   

    用Import Type Library导出Microsoft ActiveX Data Objects 2.x Library和Microsft ActiveX Data Objects Recoderset 2.x Library,然后用_Connection、 _Command、 _RecordSet不就行了
      

  2.   

    poleax() : 你能不能说的更详细一点,我都不知道怎么声明ADOCONNECTION和ADOCOMMAND和TECORDSET。你能告诉我怎么声明吗?
      

  3.   

    var
        aa:TADOConnection;
        bb:Tadodataset;
        cc:Tadocommand;
    begin
       aa:=TADOConnection.Create(nil);
       bb:=Tadodataset.Create(nil);
       cc:=Tadocommand.Create(nil);   aa.ConnectionString:='Provider=SQLOLEDB.1;Password=shays;Persist Security Info=True;User ID=shays_sqlserver;Initial Catalog=shays;Data Source=10.79.150.203';
       aa.Connected:=true;   bb.Connection:=aa;
       cc.Connection:=aa;
    end;
      

  4.   

    非常感谢LiuXing123(流星),
    这代码看着很好,但是好象还要加点别的什么把,引用什么的。
    因为它提示错误是:[Error] Unit_check.pas(357): Undeclared identifier: 'TADOConnection'
      

  5.   

    是不是可以用TFreame来做,我也没试过,给你一个思路.
      

  6.   

    晕,你要把那两个文件(ADODB_TLB.pas ADOR_TLB.pas)加入搜索路径或加入你的工程才行
      

  7.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ADODB_TLB, ADOR_TLB;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        fconn: _Connection;
        fRecordSet: _Recordset;
      end;var
      Form1: TForm1;implementation
    {$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      fconn := CoConnection.Create;
      fconn.Open(connString, 'admin', '', -1);
      fRecordSet := CoRecordset.Create;
      fRecordSet.Open('select * from orders', fconn, adOpenKeyset, adLockPessimistic, adCmdText);
    end;end.
      

  8.   

    万分谢谢 poleax():我是DELPHI新手,我还是不知道怎么把ADODB_TLB.pas ADOR_TLB.pas加入搜索路径或者工程。
    uses
     ComObj, ActiveX, AspTlb, com_check_TLB, StdVcl, SysUtils,Classes,ADODB_TLB, ADOR_TLB;
    声明ADOConnection1 : _Connection;
    ADOConnection1.
    提示错误:[Fatal Error] Unit_check.pas(6): File not found: 'ADODB_TLB.dcu'
      

  9.   

    我用
    library com_check;{%File 'checkuser.asp'}uses
      ComServ,
      com_check_TLB in 'com_check_TLB.pas',
      ADODB_TLB in  'com_check_TLB.pas',
      ADOR_TLB in  'com_check_TLB.pas',
      Unit_check in 'Unit_check.pas' {checkuser: CoClass};和
    unit com_check_TLB;
    unit ADODB_TLB;
    unit ADOR_TLB;仍然提示错误:[Error] com_check_TLB.pas(2): 'INTERFACE' expected but 'UNIT' found
    [Fatal Error] com_check.dpr(10): Could not compile used unit 'com_check_TLB.pas'
      

  10.   

    那你的ActiveX控件的数据库接口处有没有什么问题呀?先不要考虑Ado的问题,先看看你的ActiveX控件吧
      

  11.   

    我的ACTIVEX没有问题,都用了好久了,现在是加个功能,要用到数据库。哎实在没有办法,要不然我也不会用什么ADO啊!都搞了1个星期了!再不完成,老板要拿我开刀了!
      

  12.   

    还没搞定啊!?那两个文件在你的安装目录下的Imports目录(比如:D:\Program Files\Borland\Delphi7\Imports)。你找到它们直接copy到你的工程目录还不行吗,加入搜索路径Tools->Environment Options->Library->Library Path;不过Imports路径应该在其中
      

  13.   

    谢谢poleax() ,还在弄啊,还没有搞定,
      

  14.   

    poleax() :
    我的\Program Files\Borland\Delphi7\Imports目录下面只有ADODB2000.dcu,是不是就这一个就够了啊!
      

  15.   

    呵呵,可以了第一步,高兴,激动。
    那我生成DLL文件在用户端使用时,要不要把ADODB2000.dcu文件考过去啊。
    就是想知道它是不是自动打包到COM_CHECK.DLL(就是做的那个ACTIVEX控件)里了啊!
      

  16.   

    poleax()请进
    poleax() 帮我看一下:下面的代码有问题吗?
    function Sql_ADO():integer;
    var
    ConnString : string;
    //CommString : string;
    ADOConnection1 : _Connection;
    //ADOCommand1 :_Command;
    Recordset1 : _Recordset;
    count1 : integer;begin  ConnString := 'Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=AIO20030729110712;Data Source=SOFT_Manager';
      ADOConnection1 :=  CoConnection.Create;
      ADOConnection1.Open(connString, 'sa','sa', -1);
      Recordset1 := CoRecordset.Create;
      Recordset1.Open('select * from hrms_Emp inner JOIN Com_EmpCard on hrms_emp.EmpID = Com_EmpCard.EmpID where Com_EmpCard.CardID ='+'7403',ADOConnection1,adOpenKeyset,adLockPessimistic,adCmdText);
      Recordset1.GetTypeInfoCount(count1);
      result := count1;
    end;