vbscript将访问查询导出到制表符分隔文件不起作用

时间:2008-11-24 14:19:18

标签: 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 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

这意味着连接到访问数据库并生成制表符分隔的文本文件。 tblAuction1是数据库中的一个查询,并且确定存在并且不会以任何方式拼写错误,但是我收到一个无法找到或不存在的错误。当我将它更改为tblAuction(表的名称)时,我收到一个错误,指出f.WriteLine a被错误地调用。

编辑:我现在只遇到f.writeline a的问题,说已经提供了错误的参数。我不再遇到tblAuction1

的问题

编辑:用于查询的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;

3 个答案:

答案 0 :(得分:2)

我曾尝试在多个数据库和计算机上重现这一点,但我无法让您的代码失败。

离开:

  • 一个损坏的数据库,请你修复并再试一次?
  • 数据库中抛出查询的字段,我已经尝试了几种可能性,但找不到任何可以扼杀代码的内容。要排除其他内容,您可以尝试创建一个新表,看看您的代码是否适用于该表。
  • 你的dll有问题,可以在另一台机器上试试。

回答(看看我们如何得到答案看评论)

你的数据库中有unicode字符,其中writeline不接受,因为你创建了文本文件作为ASCI。在这种情况下的字符特别是♥♥♥

使其有效:

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

P.S。

之前使用transfertext宏here回答了这个问题 正如Remou指出这看起来更清晰。使其适用于非默认分隔符有点痛苦。首先通过右键单击导出要导出的查询,然后选择导出。在以下对话框中,指定规范并保存这些规范。创建宏时,请选择刚保存的规格。

答案 1 :(得分:0)

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

试试这个:

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

HTH

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

答案 2 :(得分:0)

试试这个


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