目前,我有一个数据表,其中包含以下数据作为示例:
FieldOne FieldTwo
TestOne.01 TestOne.01.01
TestOne.01 TestOne.01.02
TestTwo.02 TestTwo.02.01
TestThree.03 TestThree.03.03
TestFour.02 TestFour.02.02
TestFour.02 TestFour.02.03
我有一个包含组合框的表单。组合框的值是 FieldOne 中的所有值。我也想在同一个表单上有一个文本框,在从组合框中选择一个值后,将该特定记录的 FieldTwo 中的下一个递增值分配到文本框中。
例如,如果我从组合框中选择值TestThree.03
,我想用TestThree.03.04
填充文本框。如果我选择值TestTwo.02
,则应使用TestTwo.02.02
到目前为止,我试图开始使用它:
Dim frmDS As SubForm
Dim criteria As String
Set frmDS = getSubForm("form", "datasheet")
criteria = "FieldOne = '" & Me.comboBox & "'"
With frmDS.Form
.RecordsetClone.FindFirst criteria
If Not .RecordsetClone.NoMatch Then
MsgBox .RecordsetClone.Fields("FieldTwo")
End If
End With
但是我面临两个难题:
TestOne.01
,由于有2条记录包含TestOne.01
,因此会显示TestOne.01.01
而不是最后值TestOne.01.02
< / LI>
我不确定我最初的方法是否正朝着正确的方向前进。
我如何克服这些问题?
由于
答案 0 :(得分:1)
对于问题1 ,答案很简单
而不是.RecordsetClone.FindFirst criteria
使用.RecordsetClone.FindLast criteria
对于问题2 ,您只需要一些VBA代码即可首先获取最后一个代码,然后将其格式化为追加。
您没有提供格式化的所有细节,因此我假设最简单的解决方案 - 即最后一个代码长度为2位数。如果不是,您可以使用Instr和Mid或Right函数的变体来查找最后一个代码
示例:
Dim intLastCode as Integer
Dim strLastCode as String
With frmDS.Form
' Get last two digits from Field 2
strLastCode = Right(.RecordsetClone.Fields("FieldTwo"),2)
intLastCode = CInt(strLastCode) + 1
' Format and append incremented value to Field 1
MyTextBox.Value = .RecordsetClone.Fields("FieldOne") & "." & Format(intLastCode,"00")
End With