Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access vbscript将access查询导出到以制表符分隔的文件不起作用_Ms Access_Vbscript - Fatal编程技术网

Ms access vbscript将access查询导出到以制表符分隔的文件不起作用

Ms access vbscript将access查询导出到以制表符分隔的文件不起作用,ms-access,vbscript,Ms Access,Vbscript,我有以下代码: db = "C:\Dokumente und Einstellungen\hom\Anwendungsdaten\BayWotch4\Neuer Ordner\baywotch.db5" TextExportFile = "C:\Dokumente und Einstellungen\hom\Anwendungsdaten\BayWotch4\Neuer Ordner\Exp.txt" Set cn = CreateObject("ADODB.Connection") Set

我有以下代码:

db = "C:\Dokumente und Einstellungen\hom\Anwendungsdaten\BayWotch4\Neuer Ordner\baywotch.db5"
TextExportFile = "C:\Dokumente und Einstellungen\hom\Anwendungsdaten\BayWotch4\Neuer Ordner\Exp.txt"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open _
   "Provider = Microsoft.Jet.OLEDB.4.0; " & _
   "Data Source =" & db

strSQL = "SELECT * FROM tblAuction1"

rs.Open strSQL, cn, 3, 3

Set fs = CreateObject("Scripting.FileSystemObject")

Set f = fs.CreateTextFile(TextExportFile, True)

a = rs.GetString

f.WriteLine a

f.Close
这意味着要连接到access数据库并生成以制表符分隔的文本文件。tblAuction1是数据库中的一个查询,它确实存在,并且没有以任何方式出现错误,但我得到一个错误,即它找不到或不存在。当我将其更改为tblAuction(表的名称)时,会出现一个错误,表明f.WriteLine a被错误调用

编辑:我现在只发现f.writeline a有问题,说提供了不正确的参数。我不再有TBLAUCTION 1的问题

编辑:用于我的查询的sql代码:

SELECT tblAuction.article_no, tblAuction.article_name, tblAuction.subtitle, tblAuction.current_bid, tblAuction.start_price, tblAuction.bid_count, tblAuction.quant_total, tblAuction.quant_sold, tblAuction.start, tblAuction.ends, tblAuction.origin_end, tblUser.user_name, tblAuction.best_bidder_id, tblAuction.finished, tblAuction.watch, tblAuction.buyitnow_price, tblAuction.pic_url, tblAuction.private_auction, tblAuction.auction_type, tblAuction.insert_date, tblAuction.update_date, tblAuction.cat_1_id, tblAuction.cat_2_id, tblAuction.article_desc, tblAuction.countrycode, tblAuction.location, tblAuction.condition, tblAuction.revised, tblAuction.paypal_accept, tblAuction.pre_terminated, tblAuction.shipping_to, tblAuction.fee_insertion, tblAuction.fee_final, tblAuction.fee_listing, tblAuction.pic_xxl, tblAuction.pic_diashow, tblAuction.pic_count, tblAuction.item_site_id
FROM tblUser INNER JOIN tblAuction ON tblUser.id = tblAuction.seller_id;

我认为连接字符串中的空格有问题

试试这个:

cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.ConnectionString = db
cn.Open

更新: 对数据库的访问权限可能有问题? 或者mdb已经被另一个用户独占打开(您可以在设计模式下访问)?

试试这个


cn.Open _
  "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  "Persist Security Info=False;" & _
  "Data Source=" & db

我已经试着在几个数据库和机器上复制这个,我不能让你的代码失败

离开:

  • 数据库已损坏,请运行修复并重试好吗
  • 在数据库中抛出查询的字段中,我尝试了几种可能的方法,但找不到任何阻止代码的方法。若要排除其他内容,可以尝试创建一个新表,并查看代码是否在该表上工作
  • 你的dll有问题,你能在另一台机器上试试吗
答案(要了解我们是如何得出答案的,请参阅评论)

您的数据库中存在writeline不接受的unicode字符,因为您将文本文件创建为ASCI。本例中的字符特别是♥♥♥

要使其发挥作用:

Set f = fs.CreateTextFile(TextExportFile, True, True)
附言

前面使用transfertext宏回答了这个问题
正如所指出的,这看起来像是一个更清洁的解决方案。让它与非默认分隔符一起工作有点麻烦。首先,右键单击并选择“导出”,开始导出要导出的查询。在以下对话框中,指定规范并保存这些规范。创建宏时,请选择刚保存的规范。

您好,谢谢您的帮助,但这并不能解决问题。我得到错误80040e37,这没有帮助。应该是dbo.tblAuction1 nstead还是别的什么?access数据库对任何人都是开放的,如果access完全关闭,我就会收到错误。从我读到的内容来看,我需要给出完整的标识符,但我不确定这意味着什么。要尝试的两件事:向表中添加大括号:[tblAuction1]并向连接字符串中添加User Id=admin。这仍然没有什么区别。在access中运行宏时,我会遇到相同的错误:请在access中尝试“压缩/修复数据库”。损坏的access db通常是所有神秘错误的来源,它在我的机器上工作,windows XP上安装了visual studio 2005和MS access 2000,没有问题。你能详细介绍一下你的配置吗?您的查询在access self中工作吗?你能让它为你定义的新表工作吗?(有几个简单的列)这与此相关,正如该线程中提到的,如果无法从Access导出,则会出现一些主要问题。您使用的是纯MS Access还是其他后端?我使用的是纯Access 2003。在access中运行TransferText宏时出现的错误是错误3001,在尝试运行vbscript时出现错误80040e37。是否使用表名而不是查询来尝试此操作?如果这样做,我在f.writeline a上会出现错误,但我仍然需要此查询?能否向文件写入简单字符串?将行[f.WriteLine a]替换为[f.WriteLine“Testing”],然后查看是否可以向文件写入任何内容。它现在正在查找tblAuction1,但现在表示f.WriteLine a有问题,这是程序的错误参数。如果它现在正在查找表,请尝试正常的传输文本。当我提供上面的代码时,它是为了测试您的数据库,看看有什么可能是错误的。你用的是什么操作系统?你做了什么让它找到它?修理?它对tblAuction有效吗?您可以发布TBLAUCTION 1的sql查询吗?我还原了数据库的一个旧版本,这很有趣,因为查询根本没有更改,所以它一定有点损坏。我现在遇到的问题是宏找不到我指定要写入的文件名,而vbs的f.WriteLink有问题。能否将文件写入没有空格的路径?C:\temp\Exp.txt还是什么?