如何将sql server2000的数据输出到文本文件中?

解决方案 »

  1.   

    1、使用ADO读取数据库数据
    2、操作文本,写入数据
      

  2.   

    1、bcp命令行工具
    2、recordset.save...保存到dat文件中。
      

  3.   

    参考
    http://www.csdn.net/develop/read_article.asp?id=22674
      

  4.   

    实例,测试通过
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Private Sub Command2_Click()
        Dim strSQl As String
        strSQl = "select * from people"
        rs.Open strSQl, cn, adOpenDynamic, adLockOptimistic    Open "d:\aa.txt" For Append As #1
        While Not rs.EOF
            Print #1, rs!ID & vbTab & rs!Name & vbTab & rs!res
            rs.MoveNext
        Wend
        Close #1
        rs.Close    MsgBox "成功导出到文本!"
    End SubPrivate Sub Form_Load()
        If cn.State = 1 Then
            cn.Close
        End If
        cn.Open "driver={SQL Server};" & _
          "server=students;uid=sa;pwd=;database=学生库"
    End Sub
      

  5.   

    如果你要在程序中实现用冰的方法可以,你还可以用sql的导出/导入向导,选择其中的导出为文本文件,按照提示做就可以了
      

  6.   

    谢谢SoHo_Andy(冰),我登陆这个网站没多长时间,用同学的帐号,刚才给你分不知是否收到。还有一个问题:
    我已经把数据读到文本文件中了,现在我要把文本文件中的数据读到文本框中,怎样一次读一条记录?
      

  7.   

    你还没有结贴呢,所以我没有得到分
    要结贴才有分'按行读取文本
    Private Sub Command1_Click()
        Dim filenum         As Integer
        Dim fileContents    As String
        Dim fileInfo()      As String
        Dim i               As Integer
        
        filenum = FreeFile
        Open "d:\aa.txt" For Binary As #filenum
            fileContents = Space(LOF(filenum))
            Get #filenum, , fileContents
        Close filenum
        fileInfo = Split(fileContents, vbCrLf)
        '循环每一行,给文本框赋值    
        For i = 0 To UBound(fileInfo) - 1
            text1.text=text1.text & fileInfo(i) & vbnewline
        Next
    End Sub
      

  8.   

    你的程序是把所有记录显示在一行,我现在加了一个回车符,为什么还显示在一行?  
    For i = 0 To UBound(fileInfo) - 1
            Text1.Text = Text1.Text & vbCrLf & fileInfo(i) & vbNewLine
    Next i
      

  9.   

    是不是Text1控件的多行显示你没有设置为True啊,默认就只有一行的
    MultiLine 设置为 True 即可
      

  10.   

    还不如就放到记录集中,你用只读方式打开记录集
    得到的记录集和数据源已经断开连接既然你的程序不关闭,把数据放到内存中读取的速度是很快的,这和你读取文件效率
    只高不低当点击下一题时,
    rs.movenext
    text1.text=ra!题目就好了
      

  11.   

    rs.open语句和rs.movenext不在一个事件里,是不是应该有书签记住上一次的位值。
      

  12.   

    不用,每次rs.movenext都是从上一次的位置向后开始移动的
      

  13.   

    rs.open语句和rs.movenext不在一个事件里,下面不可行??
    Private Sub Command1_Click()'第一题
    rs.open"",dbcon,1,1
    do while rs.eof
      text1.text=rs.fields("题目")
      rs.movenext
    loop
    end sub
    Private Sub Command2_Click()'下一题
      rs.movenext
      text1.text=rs.fields("题目")
    end sub
      

  14.   

    修改
    Private Sub Command1_Click()'第一题
    rs.open"",dbcon,1,1
    if not rs.eof then
      text1.text=rs.fields("题目")
    end if
    end sub
    Private Sub Command2_Click()'下一题
      rs.movenext
      text1.text=rs.fields("题目")
    end sub
      

  15.   

    方法可行,就是点击command1后再点击command1则出现“operation is not allowed when the object is open”
      

  16.   

    你要这样写
    Dim rs As New ADODB.Recordset
    Private Sub Command1_Click() '第一题
        rs.MoveFirst
        Text1.Text = rs.Fields("题目")
    End Sub
    Private Sub Command2_Click() '下一题
        rs.MoveNext
        Text1.Text = rs.Fields("题目")
    End Sub
    Private Sub Command3_Click() '最后一题
        rs.MoveLast
        Text1.Text = rs.Fields("题目")
    End SubPrivate Sub Form_Load()
        rs.Open "", dbcon, 1, 1
    End Sub
      

  17.   

    还有一些问题,如果连续点击下一题就会出错,我把程序改了一点。还不能解决这个错误?
    Private Sub Command1_Click() '第一题
    If Not rs.EOF Then
        rs.MoveFirst
        Text1.Text = rs.Fields("dlmc")
    End IfEnd Sub
    Private Sub Command2_Click() '下一题
    If Not rs.EOF Then
       rs.MoveNext
        Text1.Text = rs.Fields("dlmc")End If
    End Sub
    Private Sub Command3_Click() '最后一题
    If Not rs.EOF Then
        rs.MoveLast
        Text1.Text = rs.Fields("dlmc")
    End If
    End Sub
      

  18.   

    Open "d:\aa.txt" For Append As #1
    我想问一下这个#1是什么意思的阿,有什么用的,是用来输出的吗?
      

  19.   

    我结贴了。谢谢SoHo_Andy(冰),把分给你。