在用快速开发平台(企业版)1.7.2版本+后端使用SQLServer开发项目时遇到一个问题,如果表中存在是否类型的字段,并且通过平台的数据模块生成器生成了编辑窗体,如果打开编辑窗体将某条记录中是否类型字段的值有true改为false(窗体上应该是复选框有选中状态改为非选中状态),保存修改时会弹出如下图的提示。
经检查是由于调用的平台函数OpenADORecordset中ADO使用了本地游标引起的,改为服务器端游标就能正常,但如果是从非选中状态改为选中状态,本地游标也能正常保存更新,由此猜测SQLServer表中存在是否类型的字段,并做为access的链接表,如果使用ADO修改记录是否类型字段的值由true转成False时必须使用服务器端游标(或者不设置游标类型因为默认就是服务器端游标),针对平台现有的问题如果有些网友也遇到了,可以通过自己重新定义OpenADORecordset函数来解决,将以下这个函数保存至平台新建的模块中就能解决遇到的问题,后续的版本会修正。
Public Function OpenADORecordset(RecordSource As String, _
Optional LockType As ADOLockTypeEnum = adLockReadOnly, _
Optional Connection As Variant _
) As Object 'ADODB.Recordset
Dim cnn As Object 'ADODB.Connection
Const adUseClient = 3
Const adLockReadOnly = 1
Const adLockOptimistic = 3
Const adOpenKeyset = 1
Set OpenADORecordset = CreateObject("ADODB.Recordset")
With OpenADORecordset
.Source = RecordSource
If IsMissing(Connection) Then
.CursorLocation = adUseClient
.ActiveConnection = GetADOConnection()
Else
.ActiveConnection = Connection
End If
.CursorType = adOpenKeyset
If LockType = adLockUnspecified Then
.LockType = adLockReadOnly
Else
.LockType = LockType
End If
.Open
End With
Set cnn = Nothing
End Function