
这样,用户可以使用复选框“选择”多个记录,然后单击按钮上的命令按钮以运行更新所选记录的脚本.无需永久存储这些检查值.
通常,我会在底层表中添加一个布尔字段,并将该复选框与该字段相关联.但有没有办法在不修改表格的情况下做到这一点?即将复选框值存储在内存中?
解决方法 您可以在表单中包含记录选择复选框断开连接的记录集.这是您在内存中创建的ADO记录集,不受任何数据源的约束.使用记录集中的主键,命令按钮的单击过程可以遍历记录集以检索“选定”记录的主键列表.如果这种方法听起来很有用,请参阅Danny Lesandrini在 Database Journal: Create In-Memory ADO Recordsets上的这篇文章
我根据该文章的代码创建了这个表单.主窗体包括一个基于断开连接的记录集的子窗体,该子窗体在子窗体的Form_Open期间加载.
请注意,您实际上不需要在表单中显示主键(ID);只要它包含在记录集中,您就可以在遍历记录集时检索它.
Private Sub Form_Open(Cancel As Integer) Dim dbs As DAO.Database Dim fld As ADODB.FIEld Dim rstAdo As ADODB.Recordset Dim rstDao As DAO.Recordset Dim strsql As String Set rstADO = New ADODB.Recordset With rstAdo .FIElds.Append "EmployeeID",adInteger,adFldKeyColumn .FIElds.Append "Firstname",adVarChar,10,adFldMayBeNull .FIElds.Append "Lastname",20,adFldMayBeNull .FIElds.Append "Selected",adBoolean .CursorType = adOpenKeyset .CursorLocation = adUseClIEnt .LockType = adLock@R_165_3270@ .Open End With Set dbs = CurrentDb strsql = "SELECT EmployeeID,Firstname,Lastname " & _ "FROM Employees ORDER BY Lastname,Firstname" Set rstDao = dbs.OpenRecordset(strsql,dbOpenSnapshot) Do Until rstDao.EOF rstAdo.AddNew rstAdo!EmployeeID = rstDao!EmployeeID rstAdo!Firstname = rstDao!Firstname rstAdo!Lastname = rstDao!Lastname rstAdo!Selected = False rstAdo.Update rstDao.MoveNext Loop Set Me.Recordset = rstAdo rstDao.Close Set rstDao = nothing Set dbs = nothingEnd Sub
该代码示例使用ADO的早期绑定,这需要为Microsoft ActiveX数据对象的版本设置引用.但是,它可以适用于后期绑定的适当修改.
这种方法并不是轻量级的.但是,它允许您使用选择复选框,而不将它们绑定到实际数据表中的“是/否”字段.当用户可能覆盖共享表中的每个其他选择时,这将是多用户应用程序中的挑战.断开连接的记录集巧妙地避免了这种冲突.
总结以上是内存溢出为你收集整理的ms-access – 访问连续表单:添加控件而不修改基础表?全部内容,希望文章能够帮你解决ms-access – 访问连续表单:添加控件而不修改基础表?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)