2012-08-01 118 views
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 

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

编辑:此代码正在使用窗体的当前属性。当我使用窗体上的按钮创建新记录时,Dmax用于在表格中找到最高的Offcut No值并添加一个。

由于offcut没有txtbox增量,这似乎在窗体中起作用。但是当我看表而不是越来越多的切口没有记录相反所有记录读取1

+0

如果不止一个人可能同时添加offcuts,这可能会导致重叠,甚至根据@KFleschner的建议进行更正。 – Fionnuala 2012-08-01 15:57:39

+0

嗯,没有。我想在创建新记录时增加值 – VBwhatnow 2012-08-02 16:06:55

+0

我刚刚尝试过,但仍然遇到同样的问题。这真是令人费解 – VBwhatnow 2012-08-03 07:50:47

回答

0

我已经成功地解决了通过为我写入的表创建主键来更新多个记录的问题。

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

2

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

"[WOID] = " & Forms![frmAddStockBooking]![MouldWO] 
+0

我想你的意思不是文本或日期,而不是自动编号。这对自动编号会很好。 – Fionnuala 2012-08-01 15:49:47

+0

是的,谢谢Remou。我纠正了它。 – KFleschner 2012-08-01 18:01:18

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时,这可能不会给你想要的。

+0

Nz的+1,并减少了需要被触发的查询的数量 – SeanC 2012-08-01 18:30:33

+0

不幸的是,这仍然不能解决我在该领域中具有相同值的每个值的问题。但我接受了你的建议并使用了Nz() – VBwhatnow 2012-08-02 07:57:45

+0

我将编辑我的问题以显示我的代码 – VBwhatnow 2012-08-02 09:13:55