表完全忽略变量

时间:2012-08-01 15:31:43

标签: vba ms-access access-vba

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

3 个答案:

答案 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无法唯一地识别记录,所以它会编辑满足标准或类似内容的所有记录。我不完全确定自己。