首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MS访问:查找(不包括已选定的值);在记录输入完成之前检查唯一键

MS访问:查找(不包括已选定的值);在记录输入完成之前检查唯一键
EN

Stack Overflow用户
提问于 2017-02-08 13:40:55
回答 1查看 183关注 0票数 0

目前,我很难在数据表或窗体视图中为表单设置验证规则,这些规则会立即触发到记录中的另一个字段或另一个记录中。

我的表单旨在将记录添加到一个目标表中,其中主键列需要匹配源表的任何记录中特定字段的值。表单(和目标表)中的其余字段用于一般用户输入(一些DateTime字段、一些文本、一些十进制)。

当用户尝试释放时,我可以获得显示标准错误对话框的权限--在选择另一个字段或记录后立即输入列表中的值。显示的错误是

您输入的文本不是列表中的项. 从列表中选择一项,或输入与所列项目之一匹配的文本“

如果我重新选择一个已经选定的查找值并转到下一个记录,我将得到

您请求对表进行的更改没有成功,因为它们将在索引、主键或关系中创建重复值。更改字段中包含重复数据的数据、删除索引或重新定义索引以允许重复条目,然后再试一次。

但是,如果进入同一记录中的另一个字段,我希望该错误(或类似的)立即出现。换句话说,我希望它告诉我,在允许用户在表单或表中填写当前记录的其余部分之前,它是一个副本。

我希望选择列表仅限于目标表中以前没有出现的值。显然,如果编辑一个已经创建的条目,您应该能够保留以前的值(也就是说,该值不会被从下拉列表中排除)。

或者,如果复制了另一个有效值,则会出现一个选择对话框。

复制值 你已经用过那个值了。是否要更改此记录或先前输入的记录。 ⪡这个⪢<⪢>

如果选择了“前一个”,它将跳到指定记录中的同一个字段,为重新选择提供下拉列表(一旦完成将跳回“当前”记录并自动选择临时重复的值。

我将用表的设计细节以及表单的源代码设置来编辑这篇文章。

EN

回答 1

Stack Overflow用户

发布于 2017-02-09 17:05:32

在VBA中“解决”了这个问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Private Sub MyControl_AfterUpdate()
    newval = Me.MyControl.Value
    oldval = Me.MyControl.OldValue
    If newval = oldval Then Exit Sub ' everything's okay
    Dim rs As Object
    Set rs = Me.Form.Recordset
    whereclause = "MyControl = '" & newval & "'"
    qry = "SELECT COUNT(*) as c FROM MyQuery WHERE " & whereclause
    qrs = CurrentDb.OpenRecordset(qry)
    If qrs.Count = 1 Then cnt = qrs(0).Value
    If cnt >= 1 Then
        selval = MsgBox("Would you like to keep your selection for this record?" & vbCrLf & "[yes = change previous record's MyField; no = change MyField for this record]", vbYesNo Or VbMsgBoxStyle.vbExclamation Or vbSystemModal Or vbDefaultButton2 Or vbMsgBoxSetForeground, "Duplicate MyField selection encountered")
        If selval = vbYes Then
            ' set focus to the other entry, preserving selection here
            thissel = Me.MyControl.ListIndex
            Me.MyControl.Value = "temp" ' if a string is okay & so we can jump away from this record
            thisloc = Me.Form.CurrentRecord ' record number
            rs.Findfirst (whereclause)
            thatloc = Me.Form.CurrentRecord
            Debug.Print (thisloc & "now  ;  was" & thatloc)
            Me.MyControl.Value = "invalid"
            DoCmd.GoToRecord , , acGoTo, thisloc  ' jump to the new row
            Me.MyControl.Value = newval
            DoCmd.GoToRecord , , acGoTo, thatloc  ' jump to the one to change
            If thissel <= 0 Then thissel = 1 ' may not be useful, given the error handling below
            On Error Resume Next
            Me.MyControl.ListIndex = thissel - 1
            On Error GoTo 0
            Me.MyControl.Dropdown
        ElseIf selval = vbNo Then
            Me.MyControl.Value = Me.MyControl.OldValue
            Me.MyControl.Undo ' for some reason this doesn't clear the "dirty" bit, resulting in the edit pencil showing up for the row.
            Me.MyControl.SetFocus
        End If
    Else
        Debug.Print ("There were no matches! Das ist gut")
    End If
End Sub

剩余问题

  1. 从对话中选择“是”,然后点击转义,将无效的“无效”字符串放入框中,这将忽略将最终选择限制在列表中的任何要求(即限制为list = 1)。理想情况下,这将“回滚”两行。
  2. 也许我应该将它更改为OnExit事件,这样它就不会在我离开单元格之前触发?不过,不确定主键冲突是否会发生在此触发器之前。OnChange触发得太频繁了(每次你按下箭头进入列表)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42124168

复制
相关文章
如何修复WordPress发生的max_execution_time致命错误
WordPress网站产生的max_execution_time致命错误在您的WordPress管理仪表盘中如下所示:
Yangsh888
2022/04/05
5.2K0
这9种URL错误对SEO优化有致命影响
时光太瘦,指缝太宽。不经意间的一瞥,已隔经年。如果你不努力,一年后的你仍然是现在的你。要知道,你不是别人羡慕的“富二代”。你想要是生活,别人无法给你,只有靠自己拼搏,靠自己努力,靠自己奋斗,汗水永远比泪水更能打动成功,汗水的浇灌注定绽会放出绚丽的花朵! 今天给大家讲解下有关页面URL的问题,URL在SEO中,可以说是比标题还要重要,可以说是禁忌中的禁忌,各位同学一定要多加留意。现在我给各位同学讲解下,在日常中我们都会遇到哪些URL问题。 1 URL上使用#号好不好? URL当中的#号是一个锚点的标志位
黄伟SEO
2018/05/17
4.1K0
iOS中防止数组越界之后发生崩溃
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/56011127
用户1451823
2018/09/13
2K0
特斯拉与NTSB在致命的Model X撞车事故调查中发生冲突
AiTechYun 编辑:nanan 特斯拉已被NTSB(美国国家运输安全委员会)从海湾地区的Model X撞车事故调查中踢出。 在特斯拉继续发布有关事故调查的信息后,NTSB将这家电动汽车制造商从调
AiTechYun
2018/04/17
5930
特斯拉与NTSB在致命的Model X撞车事故调查中发生冲突
Qt程序继承QApplication发生崩溃的原因
QApplication是Qt开发中经常用到的一个类,用来管理应用程序的生命周期。跟其相关的类还有QCoreApplication和QGuiApplication,分别用于不同场景下为应用程序的控制流和事件处理提供基础的框架。这三个类的构造函数都接收两个参数(分别是argc和argv),和C/C++程序的main函数的参数差不多。因此,大部分情况下我们是直接将main函数的这两个参数传给QApplication(这里以GUI程序为例):
24K纯开源
2019/07/02
2.4K0
禁用WordPress致命错误(WSOD)处理
WordPress 5.2内置了一个新功能,当检测到插件或主题发生错误时,自动发送邮件通知网站管理员,即使在后端完全无法访问的情况下(例如发生所谓的“白屏死机”),管理员仍然有机会登录并对此问题采取措施。
可定
2020/04/20
6020
Java中String转换为JSONArray发生错误[通俗易懂]
第一种解析的字符串结构 keywords:[{keyword=关键字,matchType=1},{keyword=关键字,matchType=1}]
全栈程序员站长
2022/08/31
5.8K0
CAD 2020 安装时出现“安装错误1603:安装过程中的致命错误”
错误1603是Microsoft Windows Installer(MSI)生成的一般错误。此错误倾向于与系统相关,而不是与特定软件相关联。以下是1603错误的常见示例:
知识兔下载
2023/01/31
9.3K0
在vscode中go编码发生的问题整理
使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理。
happlyfox
2021/03/19
1.6K0
在vscode中go编码发生的问题整理
使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理。
happlyfox
2021/03/17
2.4K0
让Chrome崩溃的代码
这是实际项目中,遇到了chrome崩溃掉之后,分析代码抽离出来的那部分“有问题”的代码:
meteoric
2018/11/16
6900
tp5.0 致命错误: Class ‘\think\cache\driver\Test‘ not found
作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 ---- tp5.0的config文件中. 把type类型改为File.就行了 'cache' => [ // 驱动方式 'type' => 'File', // 缓存保存目录 'path' => CACHE_PATH, // 缓存前缀 'prefix' => '
贵哥的编程之路
2022/09/23
5390
go新手容易犯的三个致命错误
最近因为以前一些重要且古老的go项目基本没有人专职维护了,所以被安排去熟悉这些项目的代码,所以看了大量go的代码。历史原因,这些代码中或多或少有一些刚刚从PHPer转过来的Gopher去设计和开发的,自然有不少是在php(fpm模式下)码代码思路下埋藏的一些坑。今天我就来和大家一起分享一下最近发现的出现比率比较高的三个致命错误。
用户1093396
2020/10/29
5710
go新手容易犯的三个致命错误
安卓程序崩溃错误捕捉
在开发安卓程序时,本地测试没任何问题,但去到客户处不是这里麻烦就是哪里不行。最后还来个程序崩溃。。最令人头疼的就是崩溃,因为程序的崩溃总是悄然无息的,有时候根本都没办法进行复现处理,,经过一段的摸索后,总算发现安卓有个程序崩溃前的接口(CrashHandler)在崩溃前会执行,这样就能很好的捕获到错误了。
谭广健
2019/11/13
1.3K0
学习Java时应避免的10个致命错误
要编码还是不编码?看来您已经选择了第一个选项。编程是专业发展的绝佳领域,它使您有机会参与有趣的项目并在任何需要的地方工作。
可大可小
2020/04/07
5450
程序发生崩溃dump文件_failed to create dump file
解决办法:VirtualProtect函数使用VirtualProtectEx代替即可!
全栈程序员站长
2022/10/01
1.4K0
发生致命事故8个月后,优步被获准在匹兹堡恢复自动驾驶测试
八个月前,优步的一辆自动驾驶汽车在亚利桑那州坦佩市出了致命事故,现在,宾夕法尼亚州交通部已经重新给优步开了绿灯,让其部署匹兹堡的车队。
AiTechYun
2018/12/29
3990
发生致命事故8个月后,优步被获准在匹兹堡恢复自动驾驶测试
利用 ReSharper 自定义代码中的错误模式,在代码审查之前就发现并修改错误
发布于 2018-03-20 11:54 更新于 2018-03-20 12:35
walterlv
2018/09/18
1.5K0
利用 ReSharper 自定义代码中的错误模式,在代码审查之前就发现并修改错误
独家 | 7个新手数据讲述者犯下的致命错误
在制作数据故事时,很容易迷失在细节中,并且无法创造出可以激发别人动手操作的数据故事。下面是新手数据讲师所犯的最常见的错误,以及如何改正它们。这些技巧来自“像数据讲述者一样思考”研究会。
数据派THU
2018/12/26
5120
点击加载更多

相似问题

在发生致命错误后继续执行代码

13

在代码中添加容器视图时发生致命错误

10

单击textInput响应本机致命崩溃

10

在Ubuntu中构建llvm源代码时发生致命错误

212

+ Robospice本机在Android 6上崩溃-致命信号11 (SIGSEGV),代码1

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文