时,确实已经把dbname的值设为”db2”了,但是在执行
adoc.connectionstring:=connectstringa+'initial catalog='+dbname+';'+connectstringc;
时,dbname又成了空字符串,所以出错了。
为什么dbname的值会丢掉呢?原来在是因为在connectto中,调用了setcomplete方法,setcomplete方法认为这个com+已经完成了任务,会释放这个com+对象,所以连接数据库时,又创建了一个新的com+,它的dbname当然是空值了。
找到了原因,把setcomplete改成enablecommit; 编译,再运行客户端,终于运行成功,取回了db2数据库中的数据。
可是在客户端程序中,放入另一个clientdataset,在打开clientdataset1之后,打开clientdataset2,想继续访问db2中的数据,又报错了。把程序改成
dcomconnection1.appserver.connect('db2');