【问题标题】:VBA Code - Import a text file into an Access table - With ConditionVBA 代码 - 将文本文件导入 Access 表 - 有条件
【发布时间】:2015-09-04 05:53:05
【问题描述】:

我需要将文本文件导入 Access 表,但使用 TXT 文件中的导入条件。

下面是我的 VBA 代码。它仅在您不使用 WHERE 子句时才有效,因为它要求输入参数。我认为问题在于缺少字段格式规范。

您建议进行哪些调整?任何建议将不胜感激。

文本文件 - Teste.txt

1;24;433;43;5
2;436;424;43;24
3;5454;656;656;555
4;545;545;0;0
5;65465;756;0;0

我的代码 VBA 访问:

Sub MyTableImport()

    Dim sqlStr As String

    sqlStr = "SELECT * INTO NewTable "
    sqlStr = sqlStr & " FROM [Text;HDR=Yes;FMT=Delimited;Database=C:\Temp].Teste.txt "
    sqlStr = sqlStr & " WHERE field4 <> '0' AND field5 <> '0';"

    DoCmd.SetWarnings False
    DoCmd.RunSQL sqlStr
    DoCmd.SetWarnings True

End Sub

【问题讨论】:

  • 您可以简单地省略 WHERE 子句,并在导入后执行 DELETE * FROM NewTable WHERE field4 = '0' OR field5 = '0'
  • 请不要使用 setwarnings 它是不安全的和系统范围的。改为对数据库实例使用 Execute。
  • 如果你有非标准分隔符stackoverflow.com/questions/12137085/…,你可能需要使用schema.ini文件
  • @Fionnuala - 根据。我实施了一个新版本。关注:code Dim sqlStr As String Dim db As DAO.Database db.Execute sqlStr, dbFailOnError db.Close`

标签: sql ms-access vba


【解决方案1】:

我使用了Schema.ini 方法as Fionnuala suggested,类似于您在问题的早期版本之一中使用的方法。

使用您的 Teste.txt 源文件、Schema.ini 和下面的查询,这是 NewTable 的结果。所有五个字段都是文本数据类型:

这是C:\Temp\Schema.ini:

[Teste.txt]
ColNameHeader=False
Format=Delimited(;)
Col1="field1" Text
Col2="field2" Text
Col3="field3" Text
Col4="field4" Text
Col5="field5" Text

这是创建NewTable的查询:

SELECT t.field1, t.field2, t.field3, t.field4, t.field5
INTO NewTable
FROM [Text;HDR=No;FMT=Delimited;Database=C:\Temp].[Teste.txt] AS t
WHERE (((t.field4)<>'0') AND ((t.field5)<>'0'));

【讨论】:

  • 完美的@HansUp / @Fionnuala / @Andre451。我又放了一小段代码来从自己的项目中获取文本文件。如下:code Dim strFolder As String strFolder = CurrentProject.Path sqlStr = sqlStr & " FROM [Text;HDR=No;FMT=Delimited;Database=" & strFolder & "].Teste.txt AS t"
  • @HansUp 我在我的一个项目中应用了您的方法,但结果不一致。虽然我没有使用文本文件作为源,而是使用xlsb Excel 文件,但我认为这不是问题(这可能是我错的地方)。感谢您是否可以查看here,我只是想了解为什么它会给出不一致的结果并听听您对此的看法。
猜你喜欢
  • 2016-05-22
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 2014-09-19
相关资源
最近更新 更多