cmd.Parameters.Add( _
            New OleDbParameter("ReturnValue", oleDbType.wchar, 4, _
            ParameterDirection.ReturnValue, False, 0, 0, _
            String.Empty, DataRowVersion.Default, Nothing))提示:重载决策失败,没有可访问的NEW()能够不经收缩转换即可被调用.

解决方案 »

  1.   

     Public Function CreateCommand(ByVal procName As String, ByVal prams As OleDbParameter())        Me.open()
            Dim cmd As OleDbCommand = New OleDbCommand(procName, oleconn)
            cmd.CommandType = CommandType.Text
            If prams IsNot Nothing Then            Dim parameter As OleDbParameter
                For Each parameter In prams
                    parameter.IsNullable = True
                    cmd.Parameters.Add(parameter)
                Next
            End If
            cmd.Parameters.Add( _
                New OleDbParameter("ReturnValue", OleDbType.Char, ParameterDirection.ReturnValue, Nothing))

                  Return cmd
        End Function注:红色部分的功能是什么?不用加这句也可以.
    主要问题是在添加记录时,老提示不能为空(数据库已设置可空。用过程传值),我怀疑是不是这句话的问题(在构造参数时要设置),一直不得其解。Public Function MakeInParam(ByVal ParamName As String, ByVal dbtype As OleDbType, ByVal Size As Integer, ByVal Value As Object)
            Return makeparam(ParamName, dbtype, Size, ParameterDirection.Input, Value)
    End FunctionPublic Function makeparam(ByVal paramname As String, ByVal dbtype As OleDbType, ByVal size As Int32, ByVal direction As ParameterDirection, ByVal value As Object)
            Dim param As OleDbParameter
            If (size > 0) Then
                param = New OleDbParameter(paramname, dbtype, size)
            Else
                param = New OleDbParameter(paramname, dbtype)
            End If        param.Direction = direction
            param.IsNullable = True ‘这句话应该设置可以空值了。
            param.Value = value        'End If
            Return param
        End Function Public Function RunProcReturn(ByVal procName As String, ByVal prams As OleDbParameter(), ByVal tbName As String)
            Dim dap As OleDbDataAdapter = CreateDataAdaper(procName, prams)
            Dim ds As DataSet = New DataSet()        dap.Fill(ds)
            Me.close()        Return ds
        End Function
        
    Private Function CreateDataAdaper(ByVal procName As String, ByVal prams As OleDbParameter())        Me.open()
            Dim dap As OleDbDataAdapter = New OleDbDataAdapter(procName, oleconn)
            dap.SelectCommand.CommandType = CommandType.Text
            If prams IsNot Nothing Then
                Dim parameter As OleDbParameter
                For Each parameter In prams
                    dap.SelectCommand.Parameters.Add(parameter)            Next        End If
            dap.SelectCommand.Parameters.Add(New OleDbParameter("ReturnValue", OleDbType.Integer, ParameterDirection.ReturnValue, Nothing))
            Return dap
        End Function    Public Function RunProc(ByVal procName As String, ByVal prams As OleDbParameter())
            Dim cmd As OleDbCommand = CreateCommand(procName, prams)
            cmd.ExecuteNonQuery()
            Me.close()
            Return cmd.Parameters("ReturnValue").Value
        End Function
        
    Public Function CreateCommand(ByVal procName As String, ByVal prams As OleDbParameter())        Me.open()
            Dim cmd As OleDbCommand = New OleDbCommand(procName, oleconn)
            cmd.CommandType = CommandType.Text
            If prams IsNot Nothing Then            Dim parameter As OleDbParameter
                For Each parameter In prams
                    parameter.IsNullable = True
                    cmd.Parameters.Add(parameter)
                Next
            End If
                          Return cmd
        End Function
    End Class