在VB环境中运行时正常,可是生成exe后运行,到了msgbox这一行时就会提示“无效的调用过程或参数”,之后点确定后,就运行到msgbox这行,真不知什么原因!

解决方案 »

  1.   

    不贴代码无法分析,应该就是msgbox这行出错了。
      

  2.   

    看看是不是哪里 被当作FUNCTION呼叫了
      

  3.   

    '=======================================
    '以下为数据库连接代码
    '=======================================
    Public Function Conn() As ADODB.Connection    '定义函数
    On Error GoTo doerror
    Set Conn = New ADODB.Connection              '返回一个数据库连接
    Conn.Open "Driver={SQL Server};Server=" + server_ip + ";Database=po;Uid=sa;Pwd="
    doerror:
    MsgBox Err.Description
    End
    End Function这是在模块里的,在VB中运行就没有提示说无效的调用过程或参数但生成EXE后就会提示,点确定后又能显示msgbox这一行
      

  4.   

    Public Function Conn() As ADODB.Connection
        On Error GoTo doerror
        Set Conn = New ADODB.Connection
        Conn.Open "Driver={SQL Server};Server=" + server_ip + ";Database=po;Uid=sa;Pwd="
        Exit Function '<-没有这句,正常执行都会进入错误处理代码,哪来的 Err.Description
    doerror:
        MsgBox Err.Description
        End
    End Function 
      

  5.   


    Public Function Open_Conn(Conn) As Boolean
    On Error GoTo doerror
        Set Conn = New ADODB.Connection
        Conn.Open "Driver={SQL Server};Server=" + server_ip + ";Database=po;Uid=sa;Pwd="
        Open_Conn = True
        Exit Function 
    doerror:
        MsgBox Err.Description '->此处应该详细点,比如列举函数名?
        Open_Conn = False
        'End '<-End不要用 这样等于让程序驻留了内存,你的程序许多东西都没有释放.就是程序窗口已经没了,进程却还在
    End Function 
      

  6.   

    如果不用  END 话,它加多一个错误提示:对象关闭时无法操作
      

  7.   

    LZ:8楼9楼的意见正确,你的EXE是否不是在编译此EXE的环境下运行。
      

  8.   


    'ADO方式连接数据库
    Public Function Open_Cn(cn) As Boolean
    On Error GoTo err
    'DbUserName是数据库用户名,DbUserPwd是数据库密码,DbName是数据库名,SvrName是服务器名
    Set cn = New ADODB.Connection
        cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security info=False;User ID='" & DbUserName & "';Password='" & DbUserPwd & "';Initial Catalog='" & DbName & "';Data Source='" & SvrName & "'"
        cn.CommandTimeout = 30
        cn.CursorLocation = 3
        cn.Open
        Open_Cn = True
        Exit Function
    err:
    msgbox err.description,vbinformation,""
    open_cn = false
    End FunctionPublic Sub Open_Rs(rss, ocn)
    On Error GoTo err
    Set cn = New ADODB.RecordSet
        rss.ActiveConnection = ocn
        rss.CursorType = 3
        Exit Sub
    err:
    msgbox err.description,vbinformation,""
    End Sub'例如:
    private sub Test()
    on error goto err
    '局部链接
    dim cn as object
    dim rs as object

    call open_cn(cn)
    call open_rs(rs,cn)
    'your code..

    set cn = nothing
    set rs = nothing
    exit sub
    err:
    set cn = nothing
    set rs = nothing
    'msgbox ?
    end sub
    '数据库连接代码,你可以看下
      

  9.   

    第一个是能显示msgbox是因为你没有在doerror:前加exit function
    第二个是应该没问题才对
      

  10.   

    Private Sub img_login_Click()
    Dim admin_user As Variant
    Dim user As Variant
    Dim password_user As Variant
    Dim result As Boolean
    Static intMyTimes As Integer     '定义输入密码的次数
    admin_user = Trim(admin.Text)
    If IsNumeric(admin_user) Then
      If Not Conn.Execute("select short_name from shop where shop_num='" + admin_user + "'").EOF Then
      user = Conn.Execute("select short_name from shop where shop_num='" + admin_user + "'")(0)
      Else
      user = ""
      End If
    Else
    user = admin_user
    End IfIf Conn.Execute("select id from admin where admin='" + user + "'").EOF Then
    l_c.Caption = "[用户名输错]"
    l_c.ForeColor = &HFF&
    admin.Text = ""
    admin.SetFocus
    Else
    password_user = md5(Trim(password.Text))
    result = login(user, password_user, 1, "admin", "admin", "password", "danji")        '与asp里的验证保持一致
    If result Then
    shop_num = user               '保存登录名                    '
    Load main
    main.Show
    Unload Me
    Else
    MsgBox "密"                     ‘’这里一加入这个msgbox就提示“无效的调用过程或参数”
    'l_p.Caption = "[密码输错了]"
    'l_p.ForeColor = vbRed
    'password.Text = ""
    'password.SetFocus
    End If
    End If
    End Sub