Vba DLast函数固定在特定条目上,而不是最后一个条目上

Vba DLast函数固定在特定条目上,而不是最后一个条目上,vba,ms-access,Vba,Ms Access,我完全不明白为什么我的代码中的DLast函数不是查找表中的最后一个条目,而是查找特定的条目(精确地说是第8个条目)。有趣的是,代码(似乎)一直工作到条目数达到10 我的代码: NrLast = DLast("Paraiskos_nr", "tblNew_sys") 'it should find the very last entry in the table NewNr = Split(NrLast, "-")(1) 'since entry needed is in string, this

我完全不明白为什么我的代码中的DLast函数不是查找表中的最后一个条目,而是查找特定的条目(精确地说是第8个条目)。有趣的是,代码(似乎)一直工作到条目数达到10

我的代码:

NrLast = DLast("Paraiskos_nr", "tblNew_sys") 'it should find the very last entry in the table
NewNr = Split(NrLast, "-")(1) 'since entry needed is in string, this part splits it and converts to integer number part of the string. 
NewNr = CInt(NewNr) + 1 'now its starts to generate new number by adding 1 to the extracted number from the last entry 
NewNr = "STV-" & CStr(NewNr) 'converts whole thing back to string in specific format 
Forms![frmNewSys_newEntry]![Paraiskos_numeris].Value = NewNr 'fills specific column with newly generated info on the new entry.
关于我的函数的更多信息:我正在尝试创建一个函数,该函数将为表中的新条目生成特定格式的序列号(它们是通过特殊形式添加的)。数字格式为字符串,类似于“STV-XXXX”(x代表数字)


我上面的代码似乎在工作,直到表中的条目数达到10(第10条条目失败)。现在每个新条目都会生成编号“STV-9”。我试图找出问题所在,似乎是代码中的
DLast
函数每次都返回“STV-8”数字。是什么原因造成的?我应该如何修复它?

记录没有固有的顺序。不能依赖DLast和DFirst(以及SQL Last和First)返回表中感知到的第一条或最后一条记录。此外,STV-10将在STV-8之前排序。为了正确排序字母数字值,数字部分需要占位符零:STV-0009将在STV-0010之前排序。因此,DMax将找到最新的值。或者使用ID和DLookup的DMax来获得生成的顺序值


DLookup(“Paraiskos_nr”,“tblNew_sys”,“ID=DMax('ID','tblNew_sys')”)

是否有索引对该字段或表中的其他字段进行排序?是的,它是按访问自动生成的ID进行排序的,并且是唯一的,据我所知总是在增加。因此,您可能需要最后一个ID,以及来自该ID的DLookup nr?我在读了DLast函数上的MS Docks()后发现,虽然记录没有顺序,但我不确定。那个函数名一开始误导了我。。。然而,您的解决方案比官方文档中提供的解决方案要优雅得多(使用单个记录创建另一个查询或使用ADO记录集(对我来说这是一种复杂的方式))。