学员问题:
我做的模块删除按钮不能用,平台本身的模块这个删除按钮是正常的。查了一下没有用OpenRecordset。
用的老版本,1.7版
在线客服:
1.我刚才给 那个DAORunSQL删除语句,后面加了dbSeeChanges参数,提示找不到‘512 ’文件。
2.换成ADORunSQL,没有提示,但是删不掉。
3.测试正确版本为:
CurrentDb.Execute "Delete FROM [收入列表] Where [序号]=" & Nz(Me.sfrList![序号], 0), dbSeeChanges
就是感觉奇怪,自动生成的我看都是 daorunSQL.
刘师义(Eleven.Liu):--标准答案
我记得平台后面的版本,DAORunSQL是默认加了dbSeeChanges参数的,不会报这个错
把这个函数的代码粘贴到basRDPRef模块里面去就行了
Public Function DAORunSQL(SQLStatement As String, _
Optional Database As Variant _
) As Boolean
On Error GoTo ErrorHandler
Const dbSeeChanges = 512
DAORunSQL = False
If IsMissing(Database) Then
Dim dbs As Object: Set dbs = CurrentDb
Else
If VarType(Database) = vbObject Then
Set dbs = Database
Else
Set dbs = DBEngine.OpenDatabase(Database)
End If
End If
dbs.Execute SQLStatement, dbSeeChanges
DAORunSQL = (dbs.RecordsAffected > 0)
ExitHere:
Set dbs = Nothing
Exit Function
ErrorHandler:
MsgBox "Function DAORunSQL()" & vbCrLf & Err.Description, vbCritical, "Error #" & Err.Number
Resume ExitHere
End Function
不用做其它改动
ADORunSQL不太适合用在需要即时刷新的地方
因为DAORunSQL就是CurrentDb.Execute,只不过进行了扩展封装,它是用的ODBC通道。
而ADORunSQL是走的OLEDB通道。两者不是同步刷新的。所以用ADO删掉数据什么的,不能通过DAO马上刷新出来。