Win2000 Server + Delphi 6 + SQL2000 + ADO开发的程序需要什么环境运行?(300分)

  • 主题发起人 主题发起人 Thinboy
  • 开始时间 开始时间
T

Thinboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我在Win2000 Server版下用Delphi 6开发了一个C/S程序,使用ADO连接SQL Server 2000,
在本机运行一切正常; 查看注册表,Ado版本是 2.6

在另一台手提电脑上,win98,安装有Delphi 6 + SQL Server 7.0 ,运行这个程序也正常,
查看注册表,Ado版本是2.1

问题是:
一台新安装的Win98 SE,无论是没有安装MDAC,还是安装MDAC 2.6 或者 2.7 ,
运行程序的时候却连接不上SQL Server,报告非法操作

一台新安装的Win2000 Server ,运行程序,结果同上。

暂时解决方法:
在Win2000下安装SQL Server 2000,建立和服务器上的SQL Server同样的数据库,把程序连
接的SQL Server先指向本机,运行一次正常,再指向服务器,以后运行正常!

在Win98下基本同上,需要安装MDAC 2.7, MDAC 2.6无效!

另:使用同一个Data Module,几个程序编译出来的,有些能够在 原始的 Win98下运行,有些则不能
更奇怪的是,其中一个原本可以在原始Win98下运行的程序,我只修改了一些并非连接方面的,
也非Data Module方面的语句,重新编译后却不能在原始Win98下运行

这究竟是什么问题呢?我需要如何做才可以发布这个程序,难道真的要象现在暂时的解决方法
一样吗?
我已经搜索了很多方面的讨论,都是说ADO的问题,我在上面已经说明了各ADO的版本,
希望对问题的解决有所帮助

谢谢!
 
不需要安装啊?有这个文件就够了MIDAS.DLL。
把它拷贝到System目录下,2000是System32下。
ADO应该没什么问题的。我连接都一切正常,不过我用的是三层结构。
 
正如你所描述,就是ado的问题
 
[:(!]
真是奇了怪了,会这样?
我们以前开发的程序,从来没有这样过。
会不会是DELPHI有问题?
曾有好几个DELPHI的安装文件,装了后不能打开已有的项目,但换了版本的安装就没事。
 
連接數據庫程序的問題,或有一些BPL沒有分發。你要把錯誤信息貼出來,你這樣說,可
能性太多了。。ADO我現在用起來基本上沒什麼問題。
 
谢谢大家的讨论,但是我现在应该如何解决呢?

andykwok,错误的信息就是非法错误,或者是堆栈溢出,
我在AdoConnection.Connect的时候,如果失败会显示不能连接SQL服务器,也弹出了这个信息!
 
编译的时候确定你的 AdoConnection是关闭的,把ConnectionString清空,在你的程序启动的
时候再连接SQL SERVER,我遇到和你相似的情况都是编译时AdoConnection是连接状态,到别的
机子上很容易出错。
 
leejames,我在DataModule上的AdoConnection的连接状态本身就是False的,
只是在DataModule的OnCreate事件中
var
Link_Str : String;
SQL_IP : String;
begin
SQL_IP := Read_SQL_IP ;
ADOConnection.Connected := False;
Link_Str := 'Provider=SQLOLEDB.1;' +
'Password=qm;' +
'Persist Security Info=True;'+
'User ID=qm;'+
'Initial Catalog=QM;'+
'Data Source=' + SQL_IP + ';'+
'Use Procedure for Prepare=1;'+
'Auto Translate=True;'+
'Packet Size=4096;'+
'Workstation ID=STATION;'+
'Use Encryption for Data=False;'+
'Tag with column collation when possible=False';

ADOConnection.ConnectionString := Link_Str;
try
ADOConnection.Connected := True;
except
Application.MessageBox(Pchar('不能连接SQL服务器'+#13+#13+'(IP:'+SQL_IP+')'),'连接超时',mb_ICONError);
Application.Terminate;
end;

运行程序的时候,就报告“不能连接....”

我的ConnectionString没有问题吧!
 
装个OFFICE2000不就行了
单纯的装MDAC 2.7, MDAC 2.6没用
必须装个第版本的
 
这位兄台:
   我是直接到微软网站上download ADO2.7的,在下载以前有说明,提示ADO2.7
不支持sql server 7.0
 
可能你的ConnectionString东西太多了,
我过去也试过,如果多的话经常到别的机器上会出现问题的。
你只要把主机名、数据库名、用户名、口令这几项放在一起就行了,
还有就是,你把DataModule的OnCreate事件中的代码写成一个过程,
然后在这里调用它会比较好点。
 
同意leejames, 的说法。
你要保证你生成的CONNTIONSTRING有效。
try
{Connect to database}
except
{Show error message and Abort}
end;
 
hwchen,要客户装个Office也不是合理的做法!

luckywzy,正好相反,我在一台win98+SQL7+MDAC2.7就可以使用,使用MDAC2.6则不行

网络新秀, 我试试把ConnectionString减少到你所说的,希望有效果吧,
但是为什么要写成一个过程,再调用呢?原理何在?

再次谢谢大家的帮助!
 
安装完毕后调整一下ODBC试试吧,好像用不找升级这个那个的,ADO有点莫名其妙的问题
 
1.確定你編譯時Adoconnection 是關閉的.
2.程序運行時再聯結.
3.最有效的辦法.就是把做一個小的,有資料庫連結功能的程序,越簡單越好.
這樣一步步把聯結方式改成同現在有問題程序一的聯結方式,這樣就很容易找出問題出在哪里.
 
解决了!
原来我开发的时候,把AdoConnection中的SQL Server指向了本机,并=True,所以打开程序
的时候,首先要连接本机的数据库,再连接远程的数据库,导致了需要在本机安装SQLServer
才可以运行的情况!

我本来是确认了AdoConnection 是 False的,不知道修改了哪儿,Delphi自动打开为True了,
导致了同一个程序两次编译的结果不一样

现在把ConnectionString清空了,那么Delphi就不会自动连接!

谢谢大家的讨论,我散分了!
 
后退
顶部