挑战在标题中。
如何使用<DB>.DoCmd.TransferText...
使用CurrentDB中的Import Spec将文件导入单独的数据库?
如果您的建议是创建目标数据库的链接表,或者在目标数据库中创建导入规范,请不要回复。
到目前为止,这是我的代码,但显然它不起作用,因为文件规范是在CurrentDB而不是目标数据库。
Option Compare Database
Function job1()
Dim sFinalDB As String, sTableName As String, sSpecName As String, sFileName As String
sFinalDB = "path\db.mdb"
sTableName = "tblName"
sSpecName = "specName"
sFileName = "path\test.csv"
fn_ImportTxt sFinalDB, sSpecName, sTableName, sFileName, True
End Function
Function fn_ImportTxt(sDBPath As String, _
sSpecName As String, _
sTableName As String, _
sFileName As String, _
bHeaders As Boolean)
Dim acApp As Access.Application
Set acApp = New Access.Application
acApp.OpenCurrentDatabase sDBPath
acApp.DoCmd.TransferText acImportDelim, sSpecName, sTableName, sFileName, bHeaders
acApp.CloseCurrentDatabase
acApp.Quit acQuitSaveNone
Set acApp = Nothing
End Function
答案 0 :(得分:1)
我今天偶然发现了这个问题,试图自己做同样的事情。 我发现规格存储在两个系统对象表中&#34; MSysIMEXColumns&#34;和&#34; MSysIMEXSpecs&#34;。 我所做的是每次运行导入过程之前将两个系统对象表复制到目标数据库,这就是为什么规范在目标数据库中也可用。
DoCmd.TransferDatabase acExport, "Microsoft Access", DBPath, acTable, "MSysIMEXColumns", "MSysIMEXColumns"
DoCmd.TransferDatabase acExport, "Microsoft Access", DBPath, acTable, "MSysIMEXSpecs", "MSysIMEXSpecs"
Dim NewAccessApp As Access.Application
Set NewAccessApp = New Access.Application
With NewAccessApp
.OpenCurrentDatabase strDBPath, True
.DoCmd.TransferText acImportDelim, ImportSpec, TabelName, FilePath, True
.CloseCurrentDatabase
.Quit
End With
显然,只有在您不介意覆盖目标数据库中的规范表时,这才有效。
答案 1 :(得分:0)
我能够回答&#34;为什么不创建到目标数据库的链接表&#34;。我在一个环境中工作,因为网络安全,ADO,DAO,ODBC和任何直接访问都是不可能的。我可以使用带有DoCmd方法的模块对远程数据库进行直接查询。如果网络安全消除了这种情况,我将不得不更深入地搜索,但我可以导入数据并使用远程查询来处理数据。