Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请问如何创建非绑定的子窗体(数据表视图)?

国文  发表于:2009-08-25 09:58:18  
复制

之所以要这使用非绑定的子窗体主要是考虑到在多用户操作的锁定问题,使用非绑定窗体就可以减少锁定,只有真正更新表的瞬间需要锁定记录,其余时间与表无联系
自己也花了很多时间想创建这类子窗体但是没有成功,因为非绑定,所以子窗体没有数据源,这就导致了数据表视图的子窗体无法添加记录。

求赐教:有无办法创建非绑定的可以添加记录的子窗体(数据表试图)?如果有请告诉我,谢谢!如果没有,请问是否有其他的办法,列表框可以吗?列表框能否像子窗体那样编辑啊?谢谢
创建非绑定的子窗体后,只能编辑一条记录,再也无法添加记录了,请问何解?我是新手,见笑了。

 

Top
sosopain 发表于:2009-08-25 12:02:12


sosopain 发表于:2009-08-25 12:02:36
??

sosopain 发表于:2009-08-25 12:04:33

怎么发的没有了...再来一次吧

 

貌似除了大量编程来模拟一个绑定子窗体的行为, 好像别无他法.

 

不过就你的这个问题.可以考虑设置绑定子窗体的recordlocks属性,以下摘自access帮助文件.

 

Access 2007 开发人员参考 > Access 对象模型参考 > Form 对象 > 属性
Access 开发人员参考
Form.RecordLocks 属性
全部显示
全部隐藏
可以使用 RecordLocks 属性确定锁定记录的方式以及当两个用户试图同时编辑同一条记录时将发生什么情况。可读/写。
语法

表达式.RecordLocks

表达式   一个代表 Form 对象的变量。

说明


当您编辑记录时,Microsoft Access 会自动锁定该记录以防止其他用户在您完成编辑之前对其进行更改。对于窗体,RecordLocks 属性指定在多用户数据库 (多用户(共享)数据库:该数据库允许多个用户同时访问并修改同一数据集。)中的数据进行更新时,基础表或查询中的记录 (记录:关于人员、地点、事件或某些其他项的数据的集合。记录是表中行的逻辑等同项。)的锁定 (锁定:记录、记录集或数据库处于锁定状态时,除正在修改的用户外,对其他所有用户都是只读的。)方式。

RecordLocks 属性仅应用于 Microsoft Access 数据库 (数据库:与特定主题或用途相关的数据的集合。在数据库内,关于特定实体的信息(如雇员或订单)分类归纳到表、记录和字段中。) 中的窗体、报表或查询。

RecordLocks 属性使用下列设置。

设置 Visual Basic 说明
不锁定 0 (默认值)在窗体中,两个或更多用户能够同时编辑同一条记录。这也称为“开放式”锁定。如果两个用户试图保存对同一条记录的更改,则 Microsoft Access 将对第二个试图保存记录的用户显示一则消息。此后这个用户可以选择放弃该记录,将记录复制到剪贴板,或替换其他用户所做的更改。这种设置通常用在只读窗体或单用户数据库中。也可以用在多用户数据库中,允许多个用户同时更改同一条记录。 
所有记录 1 当窗体在“窗体”视图 (窗体视图:一个显示窗体以便显示或接受数据的窗口。窗体视图是添加和修改表中数据的主要方式。在该视图中还可以更改窗体的设计。)或“数据表”视图 (数据表视图:以行列格式显示来自表、窗体、查询、视图或存储过程的窗口。在数据表视图中,可以编辑字段、添加和删除数据,以及搜索数据。)中打开时,基础表或查询中的所有记录都被锁定。尽管用户可以读取记录,但是在关闭窗体之前,没有人能编辑、添加或删除任何记录。
已编辑的记录 2 (仅用于窗体和查询)只要用户开始编辑某条记录中的任一字段,即会锁定该页 (页(数据存储):数据库文件 (.mdb) 的一部分,在其中存储记录数据。根据记录的大小,页(大小为 4 KB)可以包含多条记录。)记录,直到用户移动到其他记录,锁定才会解除。这样一条记录一次只能由一位用户进行编辑。这也称为“保守式”锁定。

  注释
更改打开的窗体或报表的 RecordLocks 属性将会引起自动重新创建记录集。

在只有一个人使用基础表或基础查询,或者对数据进行更改的情况下,可以对窗体使用“不锁定”设置。

在多用户数据库中,如果想使用开放式锁定并对试图编辑窗体上同一条记录的用户发出警告,可以使用“不锁定”设置。如果想防止两个或更多用户同时编辑数据,则可以使用“已编辑的记录”设置。

在“窗体”视图或“数据表”视图中,每条锁定记录在它的记录选定器中都有一个锁定指示器。

要更改窗体的默认 RecordLocks 属性设置,请单击“工具”菜单上的“选项”,单击“选项”对话框中的“高级”选项卡,然后在“默认记录锁定”下选择所需的选项。

来自开放式数据库连接 (ODBC) (开放式数据库连接 (ODBC):在数据库和程序间共享数据的标准方法。ODBC 驱动程序使用标准结构化查询语言 (SQL) 获得外部数据的访问权限。) 数据库的窗体、报表或查询中的数据,不管 RecordLocks 属性的设置值如何,都会被视为选择了“不锁定”设置。


示例


下面的示例将“Employees”窗体的 RecordLocks 属性设置为“已编辑的记录”(只要有用户编辑某页记录中的字段,该页记录就被锁定,并保持锁定状态,直至用户移到其他记录上)。

Visual Basic for Applications
Forms("Employees").RecordLocks = 2



国文 发表于:2009-08-25 16:15:14

谢谢版主,虽然讲述的是一个锁定问题,但还是非常感谢!

难道就无法创建非绑定的子窗体吗?ACCESS为何要如此限制呢?



sosopain 发表于:2009-08-25 17:05:47

数据表存在的意义就是对记录集做扁平状的浏览, 没有记录集,那数据表当然就没法正常使用..你如果需要非绑定控件, 还有很多可以选择, datagrid.msflexgrid . spreadsheet, 这些对ado和dao都可以很好的支持. 你可以考虑用datagird或者speadsheet. 最后再编程提交.

 

 



国文 发表于:2009-08-25 17:25:51

谢谢版主,对不起,我不知道在哪里可以找到您所说的两个控件,可以告诉我吗?



阳阳 发表于:2009-08-25 22:52:50

不绑定后台源数据,可以创建一个临时表(空的)作为子窗体数据源,以提交的方法更新后台数据,这样可以避免写入冲突.。



国文 发表于:2009-08-26 09:27:28
7楼说的方法我也试过,但是这样的话会出现很多空白的表,因为只要有这种需求就需要创建一个空白表

总记录:8篇  页次:1/1 9 1 :