如何在运行时调用ADO的那个对话框?

wandering_hawk 2005-07-13 10:25:01
如何在程序运行时调用ADO的那个build connectionstring的那个对话框?

这样可以让用户选择数据库。
...全文
182 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
opqhjb_2002 2005-07-14
  • 打赏
  • 举报
回复
快捡经验呀!
giveusomecolor 2005-07-14
  • 打赏
  • 举报
回复
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls,adoconed;(最后一个为新添加的--->>adoconed)

添加一个ADOConnection1和Button1

procedure TForm1.Button1Click(Sender: TObject);
begin
EditConnectionString(ADOConnection1);//Here
end;

OK!!

僵哥 2005-07-13
  • 打赏
  • 举报
回复
其实ADOConnection有个Properties[PropertyIndex]属性,用起来相对比较简单并且也方便,比如属会了一个服务器名或者数据库名,或者用户名,或者密码,都可以直接对其进行赋值即可,并且也不至于改变原来的连接串的其它内容。
wandering_hawk 2005-07-13
  • 打赏
  • 举报
回复

现在已经找到一个办法了,我认为很不错,用起来很方便,不用直接去连oledb32.dll文件。

*********************************以下内容为转载***************************
新建一个ActiveX Library,再新建一个COM Object,起个名字MSDASC。保存。
然后选菜单View->Type Library,在右边Uses页中点右键,选择查看所有类型库,找到Microsoft OLE DB Serivce Component 1.0 Type Library,保存。OK,在你的保存目录下有了一个MSDASC_TLB.pas,拷出来,其它的可以删除啦:)
再新建一个Delphi工程,保存。
添加我们刚才的文件MSDASC_TLB.pas到工程,在主窗体中uses MSDASC_TLB,我们要用的是其中的IDataSourceLocator接口。
添加一个按钮,一个ADOConnection。代码如下
procedure TForm1.Button1Click(Sender: TObject);
var
DataSourceLocator:IDataSourceLocator;
ADOConn:IDispatch;
begin
DataSourceLocator := CoDataLinks.Create; //创建接口指针
ADOConn := DataSourceLocator.PromptNew; // 打开配置窗体
self.ADOConnection1.ConnectionObject := IDispatch(ADOConn) as _Connection;//赋值给ADOConnection
showmessage(self.ADOConnection1.ConnectionString); //打出来看看对不对
DataSourceLocator := nil; //记着释放啊
end;
取到字符串啦,你可以自己加密,你可以存到你能读到的任何地方。
打开MSDASC_TLB.pas,你可以看到IdataSourceLocator接口还有PromptEdit方法,看名字就知道是干什么的啦,参数类似,就不多说啦。

********************************************************************************

大家还有别的方法吗,说出来,我送分了
wandering_hawk 2005-07-13
  • 打赏
  • 举报
回复
smiler007(笑一笑)

你说的有道了,呵呵,我没考虑到用户的可操作性,只是想用起来方便。
smiler007 2005-07-13
  • 打赏
  • 举报
回复
嗯....也许你认为的有道理....只是觉得那个对话框对用户的操作要求高了些.....

用楼上的函数吧
zhangl_cn 2005-07-13
  • 打赏
  • 举报
回复
郁闷,被抢先了!
zhangl_cn 2005-07-13
  • 打赏
  • 举报
回复
API函数:PromptDataSource()
僵哥 2005-07-13
  • 打赏
  • 举报
回复
function PromptDataSource(ParentHandle: THandle; InitialString: WideString): WideString;
wandering_hawk 2005-07-13
  • 打赏
  • 举报
回复
那不一样的,用combobox还需要根据用户选的数据库来手动生成connString,有些数据库还需要输密码,很不方便的。

调用那个对话框的话就可以省去很多代码和步骤。

我现在查到好像是要调用windows里的oledb32.dll文件,不过具体的还不是太清楚怎么调用
smiler007 2005-07-13
  • 打赏
  • 举报
回复
SELECT name FROM master.dbo.sysdatabases
smiler007 2005-07-13
  • 打赏
  • 举报
回复
那不如把数据库填入一个 ComboBox 让用户选择呢,那样岂不是更直观一些...

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧