没有为一个或多个必需的参数给定值 - 导入文本访问(No value given for one o

2019-09-28 14:48发布

我想导入该代码的文本文件导入Access 2007数据库文件:

Dim test As New cAccess
test.Connect()
test.Command.Connection = test.Connection
test.Command.CommandText = 
        "insert into kvks " &
        "select f1 as artnr, f2 as [lfdnr-kal], f3 as saln, f4 as suchbegriff, f5 as wert, f6 as eh " &
        "from [Text;FMT=Delimited;HDR=No;CharacterSet=850;DATABASE=" & txtKvks.Text.Substring(0, txtKvks.Text.LastIndexOf("\")) & "].[" & txtKvks.Text.Substring(txtKvks.Text.LastIndexOf("\") + 1) & "]"
Dim start As DateTime = Now
test.Command.ExecuteNonQuery()

但我得到的错误“没有为一个或多个必需的参数给定值”。

该文本文件分隔的分号( ; )。 起初我以为,这是因为它承认一行作为一个字段,因为标准的逗号分隔符,然后当然另一个字段缺失。

我插在同一个目录中,该文件被保存过一个schema.ini文件,但相同的结果。

可能是什么问题呢?

Answer 1:

此错误的一个可能的原因是,使用时SCHEMA.INI与Jet / ACE“文本”文件引擎的HDR=No在条款[Text;...]数据库将被忽略。

因此,对于名为现有的表[MyExistingTable]

CREATE TABLE MyExistingTable (
    id INT,
    firstname TEXT(255)
)

名为“toImport.txt”的文本文件

1;Larry
2;Hank
3;Artie

和“SCHEMA.INI”文件

[toImport.txt]
Format=Delimited(;)

命令

cmd.CommandText =
        "INSERT INTO MyExistingTable " &
        "SELECT F1 AS id, F2 AS firstname " &
        "FROM [Text;FMT=Delimited;HDR=No;CharacterSet=850;DATABASE=C:\Users\Public].[toImport.txt];"

会失败,因为它会解释“toImport.txt”的第一行作为列名: [1][Larry] ,而不是默认的[F1][F2]时没有包括列名被分配。

最简单的解决方法是添加ColNameHeader=False的“SCHEMA.INI”文件

[toImport.txt]
Format=Delimited(;)
ColNameHeader=False

你也可以变得更加复杂,并添加完整的柱规格进入“SCHEMA.INI”文件(请参阅文档获取详细信息)。

另一个可能的原因:

该错误还可以通过被保存为UTF-8 BOM(字节顺序标记)为“SCHEMA.INI”文件引起的。 喷气机“文本”引擎预先日期Unicode和仅支持两种字符集- “ANSI”或“OEM” - 两个数据文件和“SCHEMA.INI”文件。



文章来源: No value given for one or more required parameters - import Text to Access