首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个或多个所需参数没有给定值-导入要访问的文本

一个或多个所需参数没有给定值-导入要访问的文本
EN

Stack Overflow用户
提问于 2014-10-19 14:01:37
回答 1查看 640关注 0票数 1

我想将带有此代码的文本文件导入Access 2007数据库文件:

代码语言:javascript
复制
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文件,该目录存储了该文件,但结果相同。

有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-19 15:22:31

造成此错误的一个潜在原因是,当使用schema.ini文件和Jet/ACE "Text“引擎时,[Text;...]数据库规范中的HDR=No子句将被忽略。

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

代码语言:javascript
复制
CREATE TABLE MyExistingTable (
    id INT,
    firstname TEXT(255)
)

一个名为"toImport.txt“的文本文件

代码语言:javascript
复制
1;Larry
2;Hank
3;Artie

和一个"schema.ini“文件

代码语言:javascript
复制
[toImport.txt]
Format=Delimited(;)

命令

代码语言:javascript
复制
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“文件中

代码语言:javascript
复制
[toImport.txt]
Format=Delimited(;)
ColNameHeader=False

您还可以变得更复杂,并将完整的列规范添加到"schema.ini“文件中(有关详细信息,请参阅文档 )。

另一个可能的原因:

错误也可能由用UTF-8BOM(字节顺序标记)保存的"schema.ini“文件引起。Jet "Text“引擎预日期Unicode,并且只支持两个字符集-- "ANSI”或"OEM“--用于数据文件和"schema.ini”文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26451257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档