能不能用一句sql语句解决?excel工作表导入access数据库可以写作:select * into _
[;database=c:\test.mdb].[td] from [sheet1$],不知对txt文件有没类似的方法?哪位能够给段代码,多谢。

解决方案 »

  1.   

    dim iConc as string
    iConc = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\;" & "Extended Properties=""text;HDR=no;FMT=Delimited(;)"";"
    '引用ado2.0
    dim Cn as connection 
    set Cn =new connection
    cn.connectionstring=iConc
    cn.open
    cn.execute "select * into [;database=c:\test.mdb].[td] from [test#txt]"
      

  2.   

    逗号分隔的txt文本文件可以改一下后缀名,变成Excel文件的。.csv就可以用Excel打开了。也可以用代码写,要用Split函数。第一个方法很简单。可以试一下先。
      

  3.   

    多谢frankwong,不知能不能给段dao的代码,我的程序是用dao访问数据库的,再改成ado要费很大的工夫,多谢了!
      

  4.   

    frankwong,你的代码不能执行啊,vb提示错误:查询输入必须包含至少一个表或查询,是哪里出问题了?
      

  5.   

    Data Source=c:\test.txt
    cn.execute "select * into [;database=c:\test.mdb].[td] from [test.txt]"
      

  6.   

    zgvslch(烟花离落),你的写法也不行啊,到cn.open这一句就执行不下去了,vb提示:c:\test.txt不是有效路径。,frankwong的代码可以执行到cn.execeut,我记得vb打开单表的数据库(比如dbf数据库)时,data source只能写文件所在的路径,不能写文件名,所以对txt文件来说,
    data source应该也只能写路径c:\了
      

  7.   

    frankwong,代码执行到cn.execute一句,错误提示:查询输入必须包含至少一个表或查询,是不是from子句后面的表达有误,帮我查下,多谢了,我输入的文本文件名已核对多次了,是正确的
      

  8.   

    '试试
    '引用dao
    dim db as database
    Set db = OpenDatabase("c:\", False, False, "Text;HDR=no;FMT=Delimited(;)")
    db.execute "select * into [;database=c:\test.mdb].[td] from [test#txt]"
      

  9.   

    frankwong,你好,还是提示:查询输入必须包含至少一个表或查询,在你的机子上能够执行吗?帮我试试看
      

  10.   

    frankwong,你好,我将你的代码最后一句改为:set data1.recordset=db.openrecordset("select * from [text#txt]")可以正确执行,在msflexgrid中显示出了文本文件的内容,不知道为什么换成
    select * into 就不能执行了呢?
      

  11.   

    ///select * into 就不能执行了呢?select * into 会生成一个新的表,不会返回记录集,所以会报错
      

  12.   

    aohan(景升),不是的,我执行select * into 时是用:db.execute "select * into_ [;database=c:\test.mdb].[td] from [test#txt]"来执行的。
      

  13.   

    '这个测试通过的,数据源颠倒过来,以逗号分隔的文本文件,系统会自动识别,不用指定
    Dim db As Database
    Dim rs As Recordset
    Set db = OpenDatabase("c:\test.mdb")
    db.Execute ("SELECT * into td from [Text;HDR=no;DATABASE=C:\].[test#txt]")
      

  14.   

    frankwong,太感谢了,总算解决了,我测试了一下,改成:
    db.excute "select * into [td] in 'c:\test.mdb' from [test#txt]"也可以解决,你之前给的代码我用到程序中时有一些细节没注意改一下,所以系统报错,改了以后就通过了,真的很感谢,最后请教一下:如果导入空格分隔的txt文本文件时,db.opendatabase的connect参数该怎么设置(是在FMT=Delimited()这设置吧?),还有,我要导入的txt文本文件有些是逗号分隔的,有些是空格分隔的,有没办法将connect参数设成以“逗号and空格”作为分隔符(就象execel导入txt文件一样,可以同时选逗号和空格做分隔符)
      

  15.   

    以字符串(即多于一个字符)分隔的,ado与dao好像不支持,你其实可以将其当做按逗号分隔来出来,然后各字段值去掉后面的一个空格就行了,还有,如果要处理的文本文件名固定的话,建议创建一个schema.ini描述文件,该方法更适合于定长分隔的文本文件.