2013-04-30 58 views

回答

6

DoCmd.TransferText method将SpecificationName作为其参数之一。按照How to Create an Import Specification的说明创建并保存导入规范。

现在进入访问选项,导航选项,并显示隐藏/系统对象。您现在应该可以打开名为“mSysIMEXSpecs”的表。根据SpecName列查找您之前创建的导入规格。将该导入规范的“StartRow”列更改为3(StartRow从零开始)。

现在您应该可以使用DoCmd.TransferText方法传递您创建的导入规范的名称,它将跳过您的前三行。

+0

+1偷偷摸摸!如果决定使用这种技术,那么在代码中记录**这绝对是一个好主意,否则,在该数据库上工作的下一个可怜的灵魂可能会疯狂地试图找出为什么最初的行会被跳过。不过,谢谢分享! – 2013-04-30 14:18:59

+0

好点。我实际上编写了一个类模块,它以编程的方式管理我的导入/导出规格,因为在尝试调试问题时,我厌倦了查找现有规范。但是这是一篇我不想进入的博客文章! – mwolfe02 2013-04-30 14:54:20

+0

@ mwolfe02我只是这样做,它的工作表示感谢。我只想指出StartRow是基于0的。在我的情况下,我想跳过2行,并且我在StartRow中输入2,所以对于这个例子他应该在StartRow中输入3。如果他进入4,他将失去一行数据。 – mendel 2013-10-24 17:02:36

1

在Access VBA我会使用两个TextStream对象,一个到.ReadLine原始CSV文件线由行和对方.WriteLine到一个临时文件,跳过的前三行的输入文件的。在Scripting.FileSystemObject上进行一些网络搜索,我相信你会找到一些示例代码。我想用DoCmd.TransferText acImportDelim将临时文件导入到Access中。

+0

+1这种方法实际上是我的第一个想法。管理临时文件带有自己的一套开销,但程序员的意图会更明确,而不需要好的评论。我以六个半的方式看到它。 – mwolfe02 2013-04-30 14:57:29

1

Docmd.TransferText方法是一个很好的选择,但作为修改导入规范的替代方法,您可以考虑导入所有内容并在导入后进行一些验证。

因此,您可以导入整个文件,然后使用删除查询从表中删除数据。

正如在上面的评论中提到的,通过系统表修改规范对于其他人来说可能很棘手,因为在你的代码中有一个很好的小评论的删除查询可能会起作用。如果需要使用它,则可以将其注释掉。

相关问题