需要在ms access vba中优化代码片段

时间:2018-02-21 19:02:22

标签: vba ms-access while-loop

我们有一个包含超过100,000条记录的txt文件。我们将其导入Microsoft Access数据库。该文件有4列用空格分隔(vbTab作为分隔符," Sep"代码中的变量)。给定代码将每个列值与每行分开,并存储在临时变量中。然后使用sql将其插入数据库。

此代码使用最多需要10分钟才能进行编译。目前相同数据需要大约1小时。谁能请帮忙。查询优化是否会解决或存在其他问题。

While Not EOF(1)
Line Input #1, WholeLine
If WholeLine = "" Then GoTo EndMacro
NextPos = InStr(1, WholeLine, Sep)
TempVal1 = Mid(WholeLine, 1, NextPos - 1)
Pos = NextPos + 1
NextPos = InStr(Pos, WholeLine, Sep)
TempVal = Mid(WholeLine, Pos, NextPos - Pos)
strSignum = Trim(TempVal)
Pos = NextPos + 1
NextPos = InStr(Pos, WholeLine, Sep)
TempVal2 = Mid(WholeLine, Pos, NextPos - Pos)
Pos = NextPos + 1
NextPos = InStrRev(WholeLine, Sep)
TempVal3 = Mid(WholeLine, NextPos, Len(WholeLine) - NextPos)
If strSignum = "" Then GoTo NextRow
    strSQL1 = "INSERT INTO HRMS_DATA 
(User,OrgUnit,JobName,ParentOrganizationUnit) VALUES('" & Trim(TempVal) & "','" & Trim(TempVal1) & "','" & Trim(TempVal2) & "','" & Trim(TempVal3) & "');"

DoCmd.RunSQL strSQL1
RowNdx = RowNdx + 1
NextRow:
Wend

GoTo EndMacro

2 个答案:

答案 0 :(得分:1)

您不需要所有VBA代码。 创建导入规范,保存并使用Do.Cmd TransferText方法。 这是一步一步的指南:

Creating an Import Specification in Access 2003

答案 1 :(得分:0)

这是一个记录集任务 - 而不是编码任务。你使用了错误的方法。做Rene的帖子 - 或其他方式:

创建文本文件的链接 使用文本文件作为源

设置Make Table查询