请问我这代码错在什么地方?
一运行就死了Private Sub Form_Load()
On Error GoTo connceterror
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
    Dim rst As ADODB.Recordset
    cn.ConnectionString = "driver={SQL Server};server=local;UID=sa;Database = Test"
    cn.Open
    cn.BeginTrans
    Set rst = cn.Execute("select * from po_header")
    rst.MoveFirst
    Do While Not rst.EOF
        If rst.Fields("po_no") = "CA00002" Then
            Text1.Text = rst.Fields("PRINT_DATE")
        End If
        rst.MoveNext
    Loop
    cn.Close
connceterror:
    cn.Close
    MsgBox "Connection false"
End Sub

解决方案 »

  1.   

    从代码上看,好象看不出有什么问题,你可以单步执行,看看在哪一句死的,或许容易找出问题,顺便说一下,要是SQL服务器有问题可能会死一会儿。
      

  2.   

    好在我在最后加了cn.close,要不就死翘翘了
    我再看看
      

  3.   

    你的事物处理用的好象有问题啊!
    只有cn.BeginTrans没有cn.CommitTrans和cn.RollbackTrans 
    至于死掉了是什么原因,你自己单步调式一下吧!
    另外在错误处理中把错误信息打出来啊!
      

  4.   

    Private Sub Form_Load()
    On Error GoTo connceterror
        Dim cn As ADODB.Connection
        Set cn = New ADODB.Connection
        Dim rst As ADODB.Recordset
        set rst = New ADODB.Recordset    cn.ConnectionString = "driver={SQL Server};server=local;UID=sa;Database=Test"
        cn.Open    rst.open "select * from po_header",cn,adOpenDynamic, adLockOptimistic    Do While Not rst.EOF
            If rst.Fields("po_no") = "CA00002" Then
                Text1.Text = rst.Fields("PRINT_DATE")
            End If
            rst.MoveNext
        Loop
        cn.Close
        exit sub
    connceterror:
        cn.Close
        MsgBox "Connection false"
    End Sub
      

  5.   

    错误处理前要加个Exit Sub啊!不然不管有没有都会走到处理的程序里啊!
      

  6.   

    Private Sub Form_Load()
    On Error GoTo connceterror
        Dim cn As new ADODB.Connection
        Dim rst As new ADODB.Recordset
        dim i as integer
        if cn.state=adstateopen then cn.close
        cn.ConnectionString = "driver={SQL Server};server=local;UID=sa;Database = Test"
        cn.Open
        cn.BeginTrans
        if rst.state=adstateopen then rst.close
        rst.open " select * from po_header",cn,adopenkeyset,adlockreadonly
        for i=1 to rst.recordcount
            If rst!po_no = "CA00002" Then
                Text1.Text = rst!PRINT_DATE
            End If
            rst.MoveNext
        next i
        set rst=nothing
        set cn=nothing
        exit sub
    '错误处理
    connceterror:
        screen.mousepointer=vbdefault
        msgbox "操作失败,错误原因为:" & err.description,vbexclamation,"提示
        set rst=nothing
        set cn=nothing
        exit sub
    End Sub
      

  7.   

    一到cn.open就死了
    不知道为什么-___-
      

  8.   

    换一种方式连数据库
    使用DSN试试!!
      

  9.   

    竟然说在odbc中没有发现指定的sqlserver!!!!!
    但我用odbc连接的时候是可以连接到的哟!!!
      

  10.   

    DNS??复杂呀,都不知道搞什么,比java的jdbc还难搞,哎
    应该说我苯吧
      

  11.   

    有DSN可以哟,但为什么用我一开始的方法就不行???
      

  12.   

    搞定了,原来server那里不能写local,而要写上计算机的名字
    真874  -___-
      

  13.   

    谢谢Leftie(Leftie)和rexyudl(雪人)  ^-^