代码之家  ›  专栏  ›  技术社区  ›  nasck

如何在vb中为odbc发送表

  •  0
  • nasck  · 技术社区  · 7 年前

    我正在尝试在vb中为odbc发送一个表。datatable参数是P\u DETALLE,但我得到如下错误:

    没有对象类型系统的赋值。数据DataTable到已知托管提供程序的本机类型

    代码如下:

    Sub ADMINISTRAR_ARTEFACTO(ByVal P As E_ARTEFACTO)
        Dim CONECTION As New OdbcConnection
        Try
            CONECTION.ConnectionString = ConfigurationManager.ConnectionStrings("ALURHE_DBConnectionString_64").ConnectionString + ";pwd=123"
            Dim COMMAND As OdbcCommand = New OdbcCommand("{call SP_ADM_ARTEFACTO (?,?,?,?,?,?,?,?)}", CONECTION)
    
            With COMMAND
    
                .Parameters.AddWithValue("V_SERIE", P.P_SERIE)
                .Parameters.AddWithValue("V_TIPO_ARTEFACTO", P.P_TIPO_ARTEFACTO)
                .Parameters.AddWithValue("V_MODELO", P.P_MODELO)
                .Parameters.AddWithValue("V_MARCA", P.P_MARCA)
    
                .Parameters.AddWithValue("V_DETALLE", P.P_DETALLE)
                .Parameters.AddWithValue("V_USUARIO", P.P_USUARIO)
                .Parameters.AddWithValue("V_ID_ARTEFACTO", If(P.P_TIPO_OPERACION = "M", P.P_ID_ARTEFACTO, DBNull.Value))
                .Parameters.AddWithValue("V_TIPO_OPERACION", P.P_TIPO_OPERACION)
    
    
            End With
    
    
            'If P.P_TIPO_OPERACION = "M" Then
            '    COMMAND.Parameters.AddWithValue("@ID_PRODUCTO", P.P_ID_PRODUCTO)
            'End If
    
            CONECTION.Open()
            COMMAND.ExecuteNonQuery()
            CONECTION.Close()
    
        Catch ex As Exception
            If (CONECTION.State = ConnectionState.Open) Then
                CONECTION.Close()
            End If
    
            Throw ex
        End Try
    End Sub
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Crowcoder    7 年前

    A. DataTable 不能是ODBC提供程序的命令参数值, it is not supported

    如果您指定 SqlDbType.Structured

    您可以做的一件事是从 数据表 然后在查询/过程中对该表进行联接。