DAO问题求解

ndscgzb 2015-12-10 02:01:30
Public ConnectStr As String
Global MainWs As Workspace
Global MasterDB As Database

ConnectStr = "Provider=MSDASQL;" + "Driver={SQL Server};" + "SERVER=211.57.33.28;DATABASE=DBName;DSN=;UID=sa;" + "PWD=password;" + "Persist Security Info=False"

Set MainWs = DBEngine.Workspaces(0)
Set MasterDB = MainWs.OpenDatabase("", False, False, ConnectStr)

SQLStr = "Select SupplyName FROM B_Supply"
Set TempRs = MasterDB.OpenRecordset(SQLStr, dbOpenSnapshot)
Do While Not TempRs.EOF
Debug.print TempRs!SupplyName
TempRs.MoveNext
Loop
TempRs.Close
Set TempRs = Nothing

在Win7 32系统下运行没有问题,在Win7 64位系统下报错:
“运行时错误 3151,ODBC连接到211.57.33.28失败!”

Set TempRs = MasterDB.OpenRecordset(SQLStr, dbOpenSnapshot)
这条语句执行时在Win7 64位下报错,在32位下执行没有问题。


Set TempRs = MasterDB.OpenRecordset(SQLStr, dbOpenSnapshot, dbSQLPassThrough)
加上"dbSQLPassThrough"这个参数在Win7 32位和64位下执行都没有问题。
但是增加"dbSQLPassThrough"这个参数后,执行.Execute后就会报错。
SQLstr="Update Table_ABC Set FieldBCD=2 Where ID=1"
MasterDB.Execute SQLStr, dbSQLPassThrough
求解,


...全文
160 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ndscgzb 2015-12-15
  • 打赏
  • 举报
回复
找到问题原因了,新增加的一个窗体中多了“Option Explicit”这条话句,去掉就正常了。
道素 2015-12-11
  • 打赏
  • 举报
回复
DAO太老所在64位系统驱动可能有问题,你试试这个 http://download.csdn.net/download/katar1024/7170137
LongRui888 2015-12-10
  • 打赏
  • 举报
回复
引用 6 楼 yenange 的回复:
用C#吧, VB过时了
说的对,c#是发展方向。。。
吉普赛的歌 2015-12-10
  • 打赏
  • 举报
回复
用C#吧, VB过时了
LongRui888 2015-12-10
  • 打赏
  • 举报
回复
不过你这个问题很奇怪。 我N年前用vb写的一个程序,用的是ado,当时是32位的操作系统,连接的sql 2000,现在在win 7 的64位系统上,照样能连接到sql server 2008
LongRui888 2015-12-10
  • 打赏
  • 举报
回复
换个odbc呀。。。
LongRui888 2015-12-10
  • 打赏
  • 举报
回复
这个和你的sql server的版本有关系的,因为你的odbc驱动也得是相同的版本,不然就会报错
ndscgzb 2015-12-10
  • 打赏
  • 举报
回复
现在整个程序都是用DAO,改的话工作量太大了。 如果用ADO的话,Set TempRs = MasterDB.OpenRecordset(SQLStr, dbOpenSnapshot) MasterDB.Execute SQLStr, dbSQLPassThrough 这些都要改,有办法吗?
道素 2015-12-10
  • 打赏
  • 举报
回复
都啥年代了,放弃DAO吧,起码改用ADO

dim conn as new adodb.connection 
with conn 
If .State = adStateOpen Then .Close 
.ConnectionString = "driver=SQL Server;server=211.57.33.28;uid=sa;pwd=password;database= DBName " 
.CommandTimeout = 0 
.Open 
end with

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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