Sql 如何删除中间初始ms访问的周期

Sql 如何删除中间初始ms访问的周期,sql,ms-access,ms-access-2010,Sql,Ms Access,Ms Access 2010,我有两张桌子,一张桌子需要在另一张桌子上找到匹配的 假设我有表1和主文件表。表1有一个与主文件相同的名称字段 但table1名称字段有不同的值,因为它只有中间的首字母,而主文件有中间的名称 现在我想从主文件中获取另一个字段值,称为“性别”,因为表1中的性别字段没有值 该表如下所示: Table1 Masterfiles Name Gender Name

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

假设我有表1和主文件表。表1有一个与主文件相同的名称字段

但table1名称字段有不同的值,因为它只有中间的首字母,而主文件有中间的名称

现在我想从主文件中获取另一个字段值,称为“性别”,因为表1中的性别字段没有值

该表如下所示:

Table1                              Masterfiles

Name             Gender             Name                      Gender
Smith, John E.                      Smith, John Estaw         M
Canard, Donald R                    Canard, Donald Reever     M
因为我在表1中有很多记录需要获取性别字段的值,所以我需要以编程方式进行

目前我有以下代码:

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
<> p>但此代码不会得到任何结果,因为表1中的name字段的值中有一个在中间初始的周期,而另一个行没有句点。请参考上面的样本数据。“Smith,John”的中间首字母有句号,“Canard,Donald”没有句号


那么,我如何查询主文件并获取性别字段的值并将其放入table1性别字段中呢?

您在VB中有名称;在搜索之前,最好使用VB删除名称末尾的任何

 strSQL = "SELECT [Name], Gender FROM Masterfiles WHERE [Name] Like '%" & replace(Me!txtName,".","") & "%'"
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将其链接到其他表

如果rs2.recordcount>1,您可能希望将记录标记为异常。