首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要一个yes no字段,但是该表没有一个.The表对我来说是只读的

我需要一个yes no字段,但是该表没有一个.The表对我来说是只读的
EN

Stack Overflow用户
提问于 2014-06-28 06:33:26
回答 2查看 1.1K关注 0票数 0

我在工作中的任务是,在没有不必要的努力的情况下,产生一组“由主管批准”的记录,通过报告.This每周从记录中识别出来,使用一个简单的select查询在一个链接表上运行,我对此没有控制,只有只读访问权限。

问题1)我正在从intranet上定期更新的源表中工作。这是一个我不能以任何方式编辑的表。我也不能让其他人编辑它。此表当前没有是/No字段,我只能链接到该表

请在答案中将此表称为“tblsource”。

到目前为止,我的WorkaRound是:-当前的工作原型想法是通过添加的是/否勾选框字段工具来实现批准。(勾选框是浏览所选记录并给予“已主管批准”(即我)批准的最快方法。通过组合框选择记录将远远慢得多)我目前已经成功地使用make table查询完成了这一操作,然后手动将yes/No字段添加到“tblmade”,但这导致了问题2)。

问题2)保持记录的“已批准”状态,直到下一次访问该列表,此时记录可能仍然存在于源表中,也可能不存在。我目前工作中的问题是..每次使用make table查询似乎都意味着重新开始,即所有记录都被擦除,然后重新填充,因此在重新审批现有记录时复制了大量工作

我克服问题2的另一个想法是,可以创建某种针对的查询,该查询将填充一个表,其中我的复选框相对于唯一记录保持不变,即,我研究了Dlookup但还看不到实现此tblsource的方法的源表的主键-我会很高兴地阐述我必须做的工作和我遇到的问题的性质

一些进一步的信息

tblsource中的主要索引是具有唯一序列号/letters的txt字段,我使用的tbsource中的其他3个字段都是txt字段

问题1)源tbl没有yes/ no字段,源表只有链接到时才可用,不能修改,即只读权限

问题2) tblsource每天更新/更改,大约有5-8%的删除和/或添加。这不是一个大型数据集,tblsource中只有1100-1200条记录,在我的简单select查询之后,我只需扫描150 -200条即可批准或不批准

请注意,从我的个人资料,我的MS访问技能水平是初级到中等我可以建立一个宏,但原始的VBA仍然是一个方法,但我可以剪切和粘贴相当好,如果你指向属性列表中的位置,如数据-“onUpdate”等

EN

回答 2

Stack Overflow用户

发布于 2014-07-03 04:04:42

这实际上很简单。

添加一个包含ID字段(这将是tblSource表的外键,因此在lookup选项卡中定义适当的关系)和一个approval字段(是/否)的新表tblForApproval

然后创建一个新表单,并以它将tblSourcetblForApproval左连接的方式定义它的数据源。

然后,在表单中添加一些文本字段和复选框,并将它们绑定到查询的返回值(参见屏幕截图-属性表-数据-控件源[字段“已批准”已链接到表列“已批准”)。不要忘记用于批准的复选框以及相关的Save和Next Record按钮。

或多或少就是这样。现在您可以浏览您的记录集了。如果您尚未批准,左联接最初将提供一个空值,但一旦您保存记录,Access将自动在approval表中添加一条记录。

此方法还将保留对源表的更新-审批是单独保存的。

顺便说一句:这实际上不需要任何VBA,除非你想做一些像“点击批准时自动保存”的事情。

票数 1
EN

Stack Overflow用户

发布于 2014-06-30 01:10:45

一种解决方案是运行make-table查询来获取链接表的本地副本,然后将批准的Yes/No字段添加到本地副本中。这可以在VBA中完成,代码如下:

代码语言:javascript
复制
Option Compare Database
Option Explicit

Public Function GetDataForApproval()
    Dim cdb As DAO.Database, qdf As DAO.QueryDef, fld As DAO.Field
    Const LocalTableName = "tblForApproval"  ' or whatever name you like

    DoCmd.DeleteObject acTable, LocalTableName  ' delete old copy
    ' run make-table query
    Set cdb = CurrentDb
    Set qdf = cdb.CreateQueryDef("", _
            "SELECT * " & _
            "INTO [" & LocalTableName & "] " & _
            "FROM tblsource")
    qdf.Execute
    Set qdf = Nothing
    ' now add [Approved] Yes/No field
    Set fld = New DAO.Field
    fld.Name = "Approved"
    fld.Type = dbBoolean
    cdb.TableDefs(LocalTableName).Fields.Append fld
    fld.Properties.Append fld.CreateProperty("DisplayControl", dbInteger, acCheckBox)
    Set fld = Nothing
    Set cdb = Nothing
End Function
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24461704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档