【发布时间】:2016-02-26 16:14:28
【问题描述】:
我正在尝试创建一个新表,其中源文件中的字段名称是一个变量。例如,源数据中的ID字段可以是“ID”或“HB_REF_NO”,出生日期可以是DoB、Date of Birth或Date_of_birth
我编写了一个代码来搜索各种字段名称并返回它们所在的列,但我正在努力将这些列中的数据传输到表中
这里是代码,请原谅它无疑是野蛮的方法......
Private Sub cmdCompare_Click()
Set db = CurrentDb()
Set RecordSet1 = db.OpenRecordset("OriginalData")
Dim Fld As DAO.Field
Dim FldArray() As String
Dim i As Integer
Dim j As Integer
Dim SQLCreate As String
Dim SQLInsert As String
Dim s As Integer
Dim d As Integer
Dim b As Integer
Dim p As Integer
j = RecordSet1.Fields.Count - 1
ReDim FldArray(j)
'Assigns field names to the array
For Each Fld In RecordSet1.Fields
FldArray(i) = Fld.Name
i = i + 1
Next
For i = 0 To j
If FldArray(i) = "Surname" Then
s = i
Else
End If
Next
For i = 0 To j
If FldArray(i) = "HB_REF_NO" Then
d = i
Else
End If
Next
For i = 0 To j
If FldArray(i) = "NC_DATE_OF_BIRTH" Then
b = i
Else
End If
Next
For i = 0 To j
If FldArray(i) = "POSTCODE" Then
p = i
End If
Next
SQLCreate = "CREATE TABLE OriginalComp" & _
"(ID varchar(255), Surname varchar(255), DoB varchar(255), Postcode varchar(255))"
DoCmd.RunSQL SQLCreate
SQLInsert = "INSERT INTO OriginalComp (ID, Surname, DoB, Postcode) " & _
"VALUES ('" & FldArray(d) & "','" & FldArray(s) & "','" & FldArray(b) & "','" & FldArray(p) & "');"
DoCmd.RunSQL SQLInsert
End Sub
【问题讨论】:
-
此查询是否显示您要插入到
OriginalComp的数据? ->SELECT HB_REF_NO AS ID, Surname, NC_DATE_OF_BIRTH AS DoB, POSTCODE FROM OriginalData -
不知道怎么查。我这样做的原因是因为文件通常有不同的字段名称,所以一旦我对这个进行了排序,我需要更改它,以便它同时搜索“出生日期”和“出生日期” ",例如
-
在 Access 查询设计器中创建一个新查询。将其切换到 SQL 视图。粘贴
SELECT语句并运行查询。 -
HansUp,效果很好
-
在这种情况下,将其转换为“追加查询”:
INSERT INTO OriginalComp (ID, Surname, DoB, Postcode) SELECT HB_REF_NO, Surname, NC_DATE_OF_BIRTH, POSTCODE FROM OriginalData