快速开发平台(企业版)--无法为更新定位行,一些值可能已在最后一次读取后已更改。
时 间: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窗体导出PDF】...(04.08)
- 【Access窗体导出PDF】...(04.07)
- Access两种方式实现即时更...(03.01)
- Access隐藏与显示lacc...(01.12)
- 【Access高效办公】将每个...(12.23)
- Access21点游戏源代码(12.13)
- 【Access窗体导出Exce...(11.15)
- 【Access开发】Acces...(11.14)
- 通过Access宏录入数据到选...(11.10)
学习心得
最新文章
- Access日期格式的数据导出Ex...(04.28)
- ACCESS精华集锦资料.CHM(04.25)
- Access VBA语句If Me...(04.24)
- 【Access修改记录示例】编辑选...(04.22)
- 【Access表名称命名建议】将A...(04.20)
- Access学习笔记--用Acce...(04.19)
- 【Access重复项查询示例】将A...(04.17)
- Access快速开发平台企业版--...(04.16)
- 【Access模块示例】通过模块代...(04.15)
- Access查询里面分组合计功能添...(04.13)