我想将带有此代码的文本文件导入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文件,该目录存储了该文件,但结果相同。
有什么问题吗?
发布于 2014-10-19 15:22:31
造成此错误的一个潜在原因是,当使用schema.ini文件和Jet/ACE "Text“引擎时,[Text;...]数据库规范中的HDR=No子句将被忽略。
因此,对于名为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-8BOM(字节顺序标记)保存的"schema.ini“文件引起。Jet "Text“引擎预日期Unicode,并且只支持两个字符集-- "ANSI”或"OEM“--用于数据文件和"schema.ini”文件。
https://stackoverflow.com/questions/26451257
复制相似问题