Vba 如果组合框中的值已在contins表单的上一条记录中选中,则隐藏组合框中的值

Vba 如果组合框中的值已在contins表单的上一条记录中选中,则隐藏组合框中的值,vba,ms-access,combobox,Vba,Ms Access,Combobox,对不起,安德烈,你说的对,我已经编辑了我的问题 我有一个名为frmIntContPhasesubform的子表单,它有一个名为currency的字段,它的行源是一个名为lookupRegimen的表,它有大约15个药丸的名称,名称本身就是主键。每个患者都会得到五片药片的组合,当给患者开药片时,我不希望在该子表单中该患者的下一个组合字段选项中显示相同的名称。我附上了表格的照片。你认为什么是解决这个问题的好办法 假设组合框的条目是从表或查询中提取的,您只需使用WHERE x NOT IN语句排除以前

对不起,安德烈,你说的对,我已经编辑了我的问题


我有一个名为frmIntContPhasesubform的子表单,它有一个名为currency的字段,它的行源是一个名为lookupRegimen的表,它有大约15个药丸的名称,名称本身就是主键。每个患者都会得到五片药片的组合,当给患者开药片时,我不希望在该子表单中该患者的下一个组合字段选项中显示相同的名称。我附上了表格的照片。你认为什么是解决这个问题的好办法

假设组合框的条目是从表或查询中提取的,您只需使用WHERE x NOT IN语句排除以前已选择的值即可。此外,假设处方药片在每个日期都有限制

tbl_Patient_Medicing将是一个表格,该表格将1名患者与所需的药片链接在一起,并带有Patient_ID_FK和Pill_Name_FK字段 tbl_Pills将包含具有字段Pill_Name的Pills的信息

将患者和日期的文本框命名为tbxPatient和tbxDate,然后组合框RowSource查询可以如下所示:

SELECT Pill_Name
FROM tbl_Pills
WHERE Pill_Name Not In 
        (SELECT Pill_Name_FK FROM tbl_Patient_Medication 
        WHERE Patient_ID=[tbxPatient] AND pDate=[tbxDate]);
要正常工作,请将以下GotFocus事件添加到名为cboPill的组合框中:

Private Sub cboPill_GotFocus()
Me.cboPill.Requery
Me.Recalc
End Sub

我已经编辑了我的问题,请检查并给我一个解决方案。谢谢这个答案是一个合适的解决方案。如果您仍然有困难,请使用数据示例编辑问题,以将表结构显示为文本,而不是图像。我希望记录保留在子窗体上,直到关闭窗体。现在,当我在组合框中选择一个值时,它会立即保存并开始一个新记录。虽然从组合框中的列表中减去这些值,但如果我想给新患者开处方或为不同的日期开处方,则无法恢复这些值。这些值似乎在组合框的记录源中被删除,或者可能是查询中的where条件似乎不起作用。我还附上了数据结构的图片。我编辑了我的问题,请检查并给我一个解决方案。谢谢