如何在运行时调用ADO的那个对话框? 如何在程序运行时调用ADO的那个build connectionstring的那个对话框?这样可以让用户选择数据库。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那不如把数据库填入一个 ComboBox 让用户选择呢,那样岂不是更直观一些... SELECT name FROM master.dbo.sysdatabases 那不一样的,用combobox还需要根据用户选的数据库来手动生成connString,有些数据库还需要输密码,很不方便的。调用那个对话框的话就可以省去很多代码和步骤。我现在查到好像是要调用windows里的oledb32.dll文件,不过具体的还不是太清楚怎么调用 function PromptDataSource(ParentHandle: THandle; InitialString: WideString): WideString; smiler007(笑一笑)你说的有道了,呵呵,我没考虑到用户的可操作性,只是想用起来方便。 现在已经找到一个办法了,我认为很不错,用起来很方便,不用直接去连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方法,看名字就知道是干什么的啦,参数类似,就不多说啦。 ********************************************************************************大家还有别的方法吗,说出来,我送分了 其实ADOConnection有个Properties[PropertyIndex]属性,用起来相对比较简单并且也方便,比如属会了一个服务器名或者数据库名,或者用户名,或者密码,都可以直接对其进行赋值即可,并且也不至于改变原来的连接串的其它内容。 uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls,adoconed;(最后一个为新添加的--->>adoconed)添加一个ADOConnection1和Button1procedure TForm1.Button1Click(Sender: TObject);begin EditConnectionString(ADOConnection1);//Hereend;OK!! Panel2: TspSkinPanel;的控件问题 RichEdit中的文本存入txt文件的问题? 怎么知道消息是哪个进程发给我的? TLabel 如何可选并拷贝 或者 Memo 背景如何透明。 美丽的昆明-难道就没有DELPHI开发人员吗? 如何在通信中将一些参数整合在一起 救火啊!!!(删除、修改数据问题)小弟先谢了! 怎么读取网卡的mac值? 关于ActiveX的问题,火速求救!! 请求一个fastreport的例子 如何不让access不自动生成锁定文件(.ldb)或者让自动生成的锁定文件指定固定位置 DELPHI中如何使用SQL的赋值语句.查询结果赋值问题.
现在已经找到一个办法了,我认为很不错,用起来很方便,不用直接去连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方法,看名字就知道是干什么的啦,参数类似,就不多说啦。 ********************************************************************************大家还有别的方法吗,说出来,我送分了
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls,adoconed;(最后一个为新添加的--->>adoconed)添加一个ADOConnection1和Button1procedure TForm1.Button1Click(Sender: TObject);
begin
EditConnectionString(ADOConnection1);//Here
end;OK!!