我是VB和Access的新手,所以不要在这个上打我太多:-P 我试图从未绑定的文本框中取一个值,并在数据库(Access 2010)中搜索与该值匹配的表名。棘手的部分是该值在文本框中输入为ABC-123。我正在使用mid(Me.Text ...将值拆分为两部分.ABC是一个前缀,也是一个名为ABC-Tools的表名。这个前缀改变了(MTE,MOLD,MFG等)取决于所需的条目。但我似乎一直在坚持如何在整个函数中使用表名。一旦我得到它,那么我想更进一步,进入表并比较下一部分文本框条目,123部分是资产编号(表中自动生成的主键)。我尝试过使用DLookup但我遇到了同样的问题.FYI,这是一个公司自行开发的校准管理数据库,此代码位于表单上的“记录数据”按钮内。所有文本框都是未绑定的,并且还将其内容导出到预先格式化的Excel电子表格中以便记录。
到目前为止,这是我的代码。也许我对如何正确地做到这一点感到满意。如果您需要更多信息,请与我们联系。
Cat = Mid(Me.Text4.Value, 1, InStr(Me.Text4.Value, "-") - 1) 'Takes data on the left of the "-" within unbound text4 box for tool asset prefix (eg. MOLD-xxx)
AssetNum = Mid(Me.Text4.Value, InStr(Me.Text4.Value, "-") + 1) 'Takes data on the right of the "-" within unbound text4 box for tool asset number (eg. xxxx-001)
'Check database for tool
If "& Cat &-Tools" <> "{look_for_table_matching & Cat &-Tools}" Then
msg = _
MsgBox("Tool " & Cat & "-" & AssetNum & " does not exist. Please check that the tool is in the database and retry.", _
vbExclamation, "")
Else {continue on with the rest of the script}
End If
答案 0 :(得分:2)
搜索数据库中的表格列表:
Dim tdf as TableDef
Dim MatchingTable as String
For each tdf in CurrentDB.TableDefs
If tdf.Name Like Cat & "*" Then
MatchingTable = tdf.Name
Exit For
End If
Next
If MatchingTable = "" Then 'table not found
Msgbox...
End If
然后搜索表格:
'Dlookup returns a null value if nothing found
str = Nz(Dlookup("<Name of field>",MatchingTable,"AssetNumber = " & AssetNum),"")
If str = "" Then 'asset num not found
Msgbox...
End If