我正在尝试构建MS Access数据库。
其中一个要素是记录管理表单中的自动填充。
表格布局:
请注意,电池ID和型号在一个表中(参见表1),化学类型,规格电压,规格容量根据型号存储在另一个表中(参见表2)。这两个表在模型编号条目中以一对多关系连接在一起。
我想要达到的目的是让用户能够输入电池ID,使用afterupdate()
,搜索表1,获取型号,如果电池ID条目已经存在。然后搜索表2,获取电池型号详细信息(如果存在)。
“匹配电池ID的搜索表1”部分使用以下代码:
Private Sub txtBatteryID_AfterUpdate()
'Set the path to the Battery Records table
Set RS = CurrentDb.OpenRecordset("Batteries for Portable Radios", dbOpenDynaset)
'do a findfirst search for the Battery ID, using value from textbox txtBatteryID
RS.FindFirst "[Battery ID]=" & txtBatteryID
'If no matching record, leave the other fields empty
If RS.NoMatch Then
cmbModelNumber.Value = Null
cmbChemistryType.Value = Null
txtSpecVoltage.Value = Null
txtSpecCapacity.Value = Null
'If there is a matching record, then, grab the model number
Else
cmbModelNumber.Value = RS("Model Number")
'as there is an existing record with model number, run a search on the model number and grab the model info
Call cmbModelNumber_AfterUpdate
End If
'close recordset
RS.Close
'clear recordset path
Set RS = Nothing
End Sub
对于“搜索表2匹配型号”部分,我认为它将是相同的结构:
Private Sub cmbModelNumber_AfterUpdate()
'Set the path to the Model Records table
Set ModelRS = CurrentDb.OpenRecordset("tblInfoBatteryModelByModel#", dbOpenDynaset)
'do a findfirst search for the Model Number, using value from combobox cmbModelNumber
ModelRS.FindFirst "[Model Number]=" & cmbModelNumber
'If no matching record, leave the other fields empty
If ModelRS.NoMatch Then
cmbChemistryType.Value = Null
txtSpecVoltage.Value = Null
txtSpecCapacity.Value = Null
'If there is a matching record, then, grab the Model Info
Else
cmbChemistryType.Value = ModelRS("Chemistry Type")
txtSpecVoltage.Value = ModelRS("Spec Voltage (V)")
txtSpecCapacity.Value = ModelRS("Spec Capacity (mAh)")
End If
'close recordset
ModelRS.Close
'clear recordset path
Set ModelRS = Nothing
End Sub
除了这次当我输入现有的电池ID或型号时,它会抛出3070错误。
错误信息:
问题线:
我不知道为什么这不会带来价值。
由于您的Model Number
字段看起来是一个字符串,您需要用单引号或双引号括起提供给FindFirst
方法的条件值,例如:
ModelRS.FindFirst "[Model Number]='" & cmbModelNumber & "'"
要么:
ModelRS.FindFirst "[Model Number]=""" & cmbModelNumber & """"