快速开发平台(企业版)--无法为更新定位行,一些值可能已在最后一次读取后已更改。
时 间:2014-05-06 09:15:52
作 者:金宇 ID:43 城市:江阴
摘 要:无法为更新定位行,一些值可能已在最后一次读取后已更改
正 文:
在用快速开发平台(企业版)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
Access快速开发平台QQ群 (群号:321554481) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access高效办公】上一年...(10.30)
- Access制作的RGB转CM...(09.22)
- Access制作的RGB调色板...(09.15)
- Access制作的快速车牌输入...(09.13)
- 【Access高效办公】统计当...(06.30)
- 【Access高效办公】用复选...(06.24)
- 根据变化的日期来自动编号的示例...(06.20)
- 【Access高效办公】按日期...(06.12)
- 合并列数据到一个文本框的示例;...(05.06)
学习心得
最新文章
- 【Access高效办公】上一年度累...(10.30)
- Access做的一个《中华经典论语...(10.25)
- Access快速开发平台--加载事...(10.20)
- 【Access有效性规则示例】两种...(10.10)
- EXCEL表格扫描枪数据录入智能处...(10.09)
- Access快速开发平台--多行文...(09.28)
- 关于从Excel导入长文本数据到A...(09.24)
- Access制作的RGB转CMYK...(09.22)
- 关于重装系统后Access开发的软...(09.17)
- Access制作的RGB调色板示例(09.15)


.gif)
