我有两个表,1个表需要在另一个表上找到匹配。
说我有table1和Masterfiles表。 Table1的名称字段与Masterfiles相同。
但是table1名称字段具有不同的值,因为它只有中间的初始值而Masterfiles具有中间名。
现在我想从Masterfiles中获取名为“Gender”的其他字段值,因为table1在性别字段上没有值。
表格如下:
Table1 Masterfiles
Name Gender Name Gender
Smith, John E. Smith, John Estaw M
Canard, Donald R Canard, Donald Reever M
由于table1中有很多需要获取性别字段值的记录,我需要以编程方式进行。
目前我有以下代码:
Dim db As Database
Dim rs As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
Set rs = db.OpenRecordset("Table1")
Do While Not rs.EOF
strSQL = "SELECT [Name], Gender FROM Masterfiles WHERE [Name] Like '%" & Me!txtName & "%'"
Set rs2 = db.OpenRecordset(strSQL)
If rs2.RecordCount > 0 Then
rs!Gender = rs2!Gender
End If
Loop
但是这段代码不会得到任何结果,因为table1中Name字段的某些值在初始中间有一个句点,而其他行没有句点。请参阅上面的示例数据。 “史密斯,约翰”的中间首字母有句,而“卡纳德,唐纳德”没有句号。
那么如何查询Masterfiles并获取Gender字段的值并将其放在table1性别字段中?
答案 0 :(得分:0)
strSQL = "SELECT [Name], Gender FROM Masterfiles WHERE [Name] Like '%" & replace(Me!txtName,".","") & "%'"
答案 1 :(得分:0)
你有VB的名字;在搜索之前,最好只使用VB从名称末尾删除任何.
:
Dim searchName as String
If Me!txtName.Substring(Me!txtName.Length - 1,1) = '.' Then
searchName = Me!txtName.Substring(0,Me!txtName.Length - 1)
Else
searchName = Me!txtName
End If
strSQL = "SELECT [Name] FROM Masterfiles WHERE [Name] Like '%" & searchName & "%'"
然而,从长远来看,你应该修复你的设计: