【发布时间】:2017-05-29 06:37:12
【问题描述】:
我目前知道如何手动导入这些文件,但我希望通过我的导入按钮执行一个 vb 代码来自动完成。有一个链接到导入按钮的字段,要求您输入日期并单击导入。单击导入后,我希望它根据文件名上的日期抓取文件。
这些文件是文本文件,文件名有两种格式:
第一种格式 - P.RR1234.ABCDEF.D160112.T123456
第二种格式 - G1234.ABCDEF.D160112.T123456
这是我当前表单的 vb 代码(我目前已将其映射到我的桌面,但有 100 个位于该格式的网络/共享路径上的文件):
Option Compare Database
Private Sub cmdImport_Click()
On Error GoTo Click_Err
If Nz(txtReportDate, "") = "" Then
MsgBox "NOTICE! Please enter the Report Month you wish to Import."
Else
Dim rs As Recordset
Dim sql As String
'Loop through recordset of all Contracts and import files
sql = "SELECT DISTINCT FROM AAAAB_CE"
Set rs = CurrentDb.OpenRecordset(sql)
rs.MoveLast
rs.MoveFirst
If rs.RecordCount > 0 Then
Do While rs.EOF = False
ImportFile rs!DISTINCT
rs.MoveNext
Loop
End If
DoCmd.Hourglass True
DoCmd.SetWarnings False
DoCmd.Hourglass False
DoCmd.SetWarnings True
MsgBox "Finished Importing!"
DoCmd.OpenQuery "query_Files_Loaded_CE", acViewNormal, acReadOnly
click_Exit:
DoCmd.Hourglass False
DoCmd.SetWarnings True
Exit Sub
Click_Err:
DoCmd.Hourglass False
MsgBox "Error Detected: " & Err.Number & " - " & Err.Description, vbCritical, "Error"
Resume click_Exit
Exit Sub
End If
End Sub
模块:
Option Explicit
Option Compare Database
Public Function ImportFile(Contract As String)
DoCmd.TransferText acImportFixed, "123_Files", "AAAAB_CE", "C:\Users\123456\Desktop\TestingFolder\test.txt", False
End Function
我正在尝试将这些文本文件导入到一个表中。文件很多,手动是不够的。
目前,如果我在表单文本日期上输入随机日期并单击导入。它导入我选择的文件,但格式完全错误。这很奇怪,因为我保存的规范是以正确的格式完成的。
总的来说,我正在努力完成三件事。
1) 通过在表单上的字段中输入日期(日期将是文件名的一部分)并单击导入按钮自动导入 2)以正确的结构导入文本文件,固定列 3) 如果输入的日期不正确,请不要导入任何内容。
【问题讨论】:
-
我重新做了导入规范,现在点击导入时提示该规范不存在,但该规范确实存在。
-
1)+3) 和 2) 是非常不同的、不相关的问题。请把它们分成两个问题。对于 2) 我们将需要您的表结构、输入格式和导入规范(请参阅pcreview.co.uk/threads/…)
-
@Andre 我的表有 20 列(最后两列是导入日期和文件名。所有列都是文本,除了 ImportDate 是日期/时间)。对于表结构,我可以为您提供哪些更多信息?设置文本文件以匹配表格。当我手动导入它(它是一个固定的纺织品)时,我现在可以正确导入它了。
-
@Andre 输入格式是什么意思?就像您如何在我的表单上的字段中键入日期一样?如果是这样,它应该是 MMDDYYYY。另外,对于导入规范,我正在使用访问,我如何使用您提供的 SQL 语句来给我我的规范?我在我的模块和表单中运行查询,我没有得到任何结果。保存的导入不显示我的规范的详细信息。我的规范保存为:我应该为哪些问题打开一个新线程?问题 1 和 3?
-
@Andre 我目前正在重新进行手动导入,当我单击前进时,我收到一条消息,指出下标超出范围。我想这就是我为您获取规范的地方。