我在DLL文件里面使用普通窗体,不连接数据库!在外部程序调用是能够正确运行!
但是为什么DLL文件使用TADO连接数据库时,在外部程序里调用就不能运行呢!
提示 标记没有使用存储 ! 
请问:在DLL文件里面可以使用ADO连接数据库吗?如果能,怎么用!谢谢!

解决方案 »

  1.   

    可以 ; 要初始化一下 ,如 :uses Activex; function Count(TableName: string): Integer; stdcall;
    begin
      CoInitialize(Nil) ;
      with TADOQuery.Create(nil) do
      begin
        try
          begin
            ConnectionString := DbConnectionString;
            Sql.Text := 'select * from ' + TableName;
            Open;
            Result := RecordCount;
          end;
        finally
          Free;
          CoUninitialize ;
        end;
      end;
      

  2.   

    谢谢 wjlsmail(计算机质子) !
    不过我还有一个问题!请问 DLL中的窗口可以做主程序的子窗口吗?
    frm1:=Tfrm1.Create(nil);
    frm1.FormStyle:=fsMDIForm;
    frm1.ShowModal;
    我是这样写的!运行时有错误!请帮帮忙!谢谢!
      

  3.   

    若想要你的主程序来维护这个dll中的窗体,要传递主程序的application.handle
    frm1:=Tfrm1.Create(application.handle);
      

  4.   

    yansea(思宏)  你好!
    能够说的具体一点吗?
    application 没有 handle 这个属性的啊!我这样写
    frm1:=Tfrm1.Create(Application);
    frm1.FormStyle:=fsMDIChild;
    frm1.ShowModal;
    也不行啊!请各位帮忙了!谢谢!
      

  5.   

    procedure ShowfrmRepMobCnt(AHandle:THandle);
    var
            frmRepMobCnt: TfrmRepMobCnt;
    begin
            Application.Handle:=AHandle;
            CoInitialize(Application);
            frmRepMobCnt:=TfrmRepMobCnt.Create(Application);
            try
            frmRepMobCnt.FormStyle:=fsMDIChild;        frmRepMobCnt.Show;
            finally
            end;
    end;我怎么做,一直不行!不好当子窗口!请帮忙!