防止同月访问中的重复条目

时间:2015-12-08 21:19:46

标签: ms-access

我有一个每月更新但超过一周的表格。 TABLE1有4个重要字段DatePlaceLocationReading。为了防止重复的表格条目,我将DatePlaceLocation字段设置为主键,这样就不会让用户输入重复的地点,位置,日期组合。这只适用于所有三个都是重复的,如果日期是一天后它被添加到表中。由于我的日期条目可能会持续数天,因此如果未仔细完成数据输入,或者在一天后将下一批地点,位置,读数发送到办公室,则可能会在同一个月内产生重复条目。

有没有办法让它在同一个月内不能输入重复的地方,位置组合? 地点,位置和日期都需要允许重复,但不允许所有三个重复。

3 个答案:

答案 0 :(得分:0)

使用查询作为表单的来源:

Select 
    [Date], Place, Location, Reading, Format([Date], "yyyymm") As YearMonth
From
    YourTable

现在,在您的数据输入表格中输入YearMonth,并在BeforeUpdate事件中使用以下内容:

Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
rs.FindFirst "[Place] = '" & Me!Place.Value & "' And Location = '" & Me!Location.Value & "' And YearMonth = " & Format(Me!Date.Value, "yyyymm") & ""
Cancel = Not rs.NoMatch

If Cancel = True Then
    MsgBox "Data for this month has been recorded."
End If

答案 1 :(得分:0)

据我所知,你每个月都需要一张纪录......

从数据库的角度来看,数据库可以在几天后接受,因为没有检测到重复的组合......

首先,正如@nicomp所说...... 您可以使用表单强制执行业务逻辑......

其次,您可以更改表格并更改组合。例如:

将“日期”属性划分为2个组合,月份和年份...... 您最终会得到4个主键组合Month (Integer) Year (Integer) Place Location

答案 2 :(得分:0)

只需利用您要唯一的所有字段的组合索引即可。

refer the screenshot