'主程序:
  Sub Main()
    Dim Rst As ADODB.Recordset
    Dim Sql As String
    Sql = "select * from ls.txt where not isnull(m1)  "
    Set Rst = ConnectRstTxt(Sql)
    Rst.MoveFirst
    For ii = 0 To Rst.RecordCount - 1
      For jj = 0 To Rst.Fields.Count - 1
        Debug.Print Rst.Fields(jj) & ",";
      Next jj
      Rst.MoveNext
      Debug.Print
    Next ii
  End Sub
  
  Function ConnectRstTxt(Sql)
    Dim Rs As ADODB.Recordset
    Set conn = CreateObject("ADODB.Connection")
    Set Rs = CreateObject("adodb.recordset")
    conn.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ=", "", ""
    Rs.Open Sql, conn, 1, 3
    Set ConnectRstTxt = Rs
  End Function现在的问题是,这个程序只能SQL当前目录下的文本文件ls.txt
如果将ls.txt文件放到d:\下。
conn.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\", "", ""
程序通过。
目标需求是
当前目标下的子目录\txt下。
conn.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\", "", ""改了n次没有成功。
请问各位大侠如何解决。
谢谢主。

解决方案 »

  1.   


    conn.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\子目录\", "", ""
    这样不行?
      

  2.   

    到这里找找:http://www.connectionstrings.com
      

  3.   

    谢谢
    Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\txtFilesFolder\;Extensions=asc,csv,tab,txt;
    还是绝对路径。
      

  4.   

    ''SQL操作文本文件
      Function ConnectRstTxt(Sql As String)
        Dim Rs As ADODB.Recordset
        Set conn = CreateObject("ADODB.Connection")
        Set Rs = CreateObject("adodb.recordset")
        'conn.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & ThisWorkbook.Path & "\, "", """
        'conn.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ=D:\", "", """"
        
        conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" & ThisWorkbook.Path & "\" & ";Extensions=asc,csv,tab,txt"    Rs.Open Sql, conn, 1, 3
        Set ConnectRstTxt = Rs
      End Function
    重新改了一下,基本达到目标。没搞清原理