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递增。但是当我看着桌子而不是有越来越多的offcut的记录时,所有记录都是1
答案 0 :(得分:2)
尝试像这样在DMax中发送where子句,假设表中的WOID字段是数字类型而不是文本或日期。
"[WOID] = " & Forms![frmAddStockBooking]![MouldWO]
答案 1 :(得分: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
时,这可能无法满足您的需求。
答案 2 :(得分:0)
我设法通过为我写的表创建主键来解决更新多个记录的问题。
我认为因为Access无法唯一地识别记录,所以它会编辑满足标准或类似内容的所有记录。我不完全确定自己。