1

我有两张桌子,一张桌子需要在另一张桌子上找到匹配项。

假设我有 table1 和 Masterfiles 表。Table1 具有与 Masterfiles 相同的名称字段。

但是 table1 名称字段具有不同的值,因为它只有中间名,而 Masterfiles 有中间名。

现在我想从名为“Gender”的 Masterfiles 中获取另一个字段值,因为 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 字段的某些值在中间首字母中有句点,而其他行没有句点。请参考上面的示例数据。“Smith, John”的中间首字母有句号,而“Canard, Donald”没有句号。

那么如何查询 Masterfiles 并获取 Gender 字段的值并将其放入 table1 性别字段中呢?

4

2 回答 2

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 & "%'"

但是,从长远来看,您可能应该修复您的设计:

  • 给每个人一个在所有表格中都相同的数字 ID。
  • 将名称拆分为第一个、中间和最后一个字段。
  • 使用单个表来存储个人独有的所有信息。然后使用 ID 将其链接到其他表。
于 2013-04-18T15:12:36.117 回答
0
 strSQL = "SELECT [Name], Gender FROM Masterfiles WHERE [Name] Like '%" & replace(Me!txtName,".","") & "%'"
于 2013-04-18T15:03:37.490 回答