我在程序中用的ACCESS数据库,想做符合条件的搜索,然后把结果另存为文本文件,高手们请帮忙,分不够,再开贴。谢谢!

解决方案 »

  1.   

    我使用了DAO,
    dim db as database
    dim rs recordset
    Set db = OpenDatabase(t)
    Set rs = db.TableDefs("db_biaoyi").OpenRecordset(dbOpenDynaset)
    rs.Filter = "作者=frmsearch.comboauthor.text"
    rs.Sort = "作者"
    Set rss = rs.OpenRecordset()
    rs.Close
    rss.MoveFirst
    Do While Not rss.EOF
    For Each fld In rss.Fields
    rss.MoveFirst
    Do While Not rss.EOF
    For Each fld In rss.Fields
    Open "c:\temp.txt" For Append Lock Write As filenum
    Print #filenum, fld
    Close #filenum
    Next
    rss.MoveNext
    rss.MoveNext
    Loop
    rss.Close
    db.Close结果程序报错,说Set rss = rs.OpenRecordset()
    这句参数有误。
    下周得交,请高手帮忙,万分感谢!
      

  2.   

    dim db as database
    dim rs recordset
    Set db = OpenDatabase(t)
    Set rs = db.TableDefs("db_biaoyi").OpenRecordset(dbOpenDynaset)
    rs.Filter = "作者=frmsearch.comboauthor.text"
    rs.Sort = "作者"rs.MoveFirst
    Do While Not rs.EOF
       For Each fld In rss.Fields
          Open "c:\temp.txt" For Append Lock Write As filenum
          Print #filenum, fld
          Close #filenum
       Next
       rs.MoveNext
    Loop
    rs.Close
    db.Close
      

  3.   

    Private Sub Command1_Click()
        Dim db As Database
        Dim rss As Recordset
        Set db = OpenDatabase(t)
        Set rss = db.TableDefs("db_biaoyi").OpenRecordset(dbOpenDynaset)
        rss.Filter = "作者=frmsearch.comboauthor.text"
        rss.Sort = "作者"    rss.MoveFirst
        Do While Not rss.EOF
            For Each fld In rss.Fields
                Open "c:\temp.txt" For Append Lock Write As filenum
                Print #filenum, fld
                Close #filenum
            Next
            rss.MoveNext
        Loop
        rss.Close
        db.Close
    End Sub
      

  4.   

    用ADO的话这样做(已测试):
    引用ADO(“工程”/“引用”/Microsoft ActiveX Data 2.X Library)Private Sub Command1_Click()
        Dim cn As New ADODB.Connection, rs As New ADODB.Recordset, i As Integer
        cn.CursorLocation = adUseClient
        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Test.mdb;Jet OLEDB:DataBase password=;"    rs.Open "select * from 表名称 where 作者='" & frmsearch.comboauthor.Text & "' order by 作者 ", cn, adOpenKeyset, adLockReadOnly    rs.MoveFirst
        While Not rs.EOF
            For i = 0 To rs.Fields.Count - 1
                Open "c:\temp.txt" For Append Lock Write As #1
                Print #1, rs(i)
                Close #1
            Next
            rs.MoveNext
        Wend
        rs.Close
        cn.Close
    End Sub
      

  5.   

    改进写文件:
      避免经常打开经常关闭操作    rs.MoveFirst
       Open "c:\temp.txt" For Append Lock Write As #1
          While Not rs.EOF
            For i = 0 To rs.Fields.Count - 1
                Print #1, rs(i)
            Next
            rs.MoveNext
        Wend
    Close #1    rs.Close
        cn.Close
    End Sub
      

  6.   

    感谢 faysky2() ,您的方法我试了,果然实现了查询,有一个小问题,查询到的记录每一字段都被分成了一行。谢谢!有其他朋友有好办法请继续告知,谢谢!
      

  7.   

    用ADO吧:
    不想每个字段做一行,只要稍微改一下上面的代码就行了Private Sub Command1_Click()
        Dim cn As New ADODB.Connection, rs As New ADODB.Recordset, i As Integer, strTemp As String
        cn.CursorLocation = adUseClient
        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Test.mdb;Jet OLEDB:DataBase password=;"
        
        rs.Open "select * from 表名称 where 作者='" & frmsearch.comboauthor.Text & "' order by 作者 ", cn, adOpenKeyset, adLockReadOnly
        
        rs.MoveFirst
        Open "c:\temp.txt" For Append Lock Write As #1
        While Not rs.EOF
            For i = 0 To rs.Fields.Count - 1
                strTemp = strTemp & rs(i) & " "
                Print #1, strTemp
            Next
            strTemp = ""
            rs.MoveNext
        Wend
        Close #1
        rs.Close
        cn.Close
    End Sub
      

  8.   

    发了两个贴子,今天得到了解决。还是很高兴的。感谢CSDN,感谢这么多朋友热心相助。给分了。