1
Private Sub Form_Current()
Dim bytoffcut As Byte
Dim strCriteria
strCriteria = "[WOID] = " & Forms![frmAddStockBooking]![MouldWO]

bytoffcut = Nz(DMax("OffcutNo", "dbo_tblOffcuts", strCriteria), 0) + 1
MsgBox bytoffcut
Me.txtOffcut.Value = bytoffcut

Me.WOID.Value = Forms![frmAddStockBooking]![MouldWO]
Me.txtdate.Value = Now()

End Sub

谁能告诉我为什么这不起作用?当我创建新记录时,该变量的行为与预期一样,其中 bytoffcut 递增 1。但是当我检查表格时,绑定到 txtOffcut 的字段读取 1 而不是增量值。

编辑:此代码正在表单的 On current 属性中使用。当我使用表单上的按钮创建新记录时,Dmax 用于在表中查找最高的 offcut No 值并将其添加到其中。

随着 offcut no txtbox 的增加,这似乎在表单中起作用。但是当我查看表格而不是记录增加的切边时 no 而是所有记录都读取 1

4

3 回答 3

2

尝试像这样在 DMax 中发送 where 子句,假设表中的 WOID 字段是数字类型而不是文本或日期。

"[WOID] = " & Forms![frmAddStockBooking]![MouldWO]
于 2012-08-01T15:44:41.860 回答
2

最好DMax()只评估一次表达式,特别是如果dbo_tblOffcuts是一个没有可用索引的大型链接表[WOID]

如果您的DMax()表达式可以返回 Null,请使用Nz()将 Null 转换为零。然后加一个。

Dim bytoffcut As Byte
Dim strCriteria
strCriteria = "[WOID] = " & Forms![frmAddStockBooking]![MouldWO]
'Debug.Print strCriteria '
bytoffcut = Nz(DMax("OffcutNo", "dbo_tblOffcuts", _
    strCriteria), 0) + 1
MsgBox bytoffcut
Me.txtOffcut.value = bytoffcut

当其他用户正在编辑时,这可能无法为您提供所需的内容dbo_tblOffcuts

于 2012-08-01T18:02:49.177 回答
0

通过为我正在写入的表创建主键,我设法解决了多个记录被更新的问题。

我认为,因为 Access 无法唯一标识记录,它会编辑所有符合条件或类似条件的记录。我自己也不完全确定。

于 2012-08-07T12:41:31.010 回答