[VB - SQL]Problema con Visual Basic-SQL al usar INNER JOIN

Iniciado por SionTf, 6 Agosto 2013, 14:42 PM

0 Miembros y 1 Visitante están viendo este tema.

SionTf

Buenos días, me conecto al foro a ver si me pueden resolver una duda que llevo días para solventar, y buscando por google no he encontrado ninguna solución que me ayudara.

Estoy conectando una BD de SQL Server en VB, pero cuando en el comando incluye un INNER JOIN, no me funciona y me da error en:


---> sqldatadapter.Fill(dataset)


String del comando:
Dim str As String = ("select productos.nombreProducto, productos.distribuidorProducto, cantidad " & _
" from compras " & _
"inner Join (productos) ON compras.codproducto = productos.codproducto" & _
"where codFactura = 3")



Si cambio la instruccion a "select * from compras" por ejemplo, lo muestra sin problemas, pero es incluir el INNER JOIN y salta siempre el error (si pongo el mismo codigo en SQL Server, funciona perfectamente).

No comprendo cual puede ser el error, ¿ Tal vez deba usar alguna función diferente, o declarar las tablas del inner join de alguna forma distinta?


Muchas gracias por adelantado!
Rubén.

SionTf

Me auto respondo, por si alguien precisa tal informacion.


Public Sub llenarGridviewPROCEDURE(ByRef dtg As DataGridView, ByRef codFactura As Integer)

        Dim cnx As SqlClient.SqlConnection = New SqlClient.SqlConnection(con)
        'ClsCon.connectionString is a class that contains the connection string
        Dim cmd As SqlClient.SqlCommand = New SqlClient.SqlCommand()

        If cnx.State = ConnectionState.Closed Then cnx.Open()

        cmd.Connection = cnx
        cmd.CommandText = "mostrarFacturaCompleta"
        cmd.CommandType = CommandType.StoredProcedure

        Dim prm As New SqlClient.SqlParameter

        prm.ParameterName = "@codFactura"
        prm.SqlDbType = SqlDbType.Int
        prm.Direction = ParameterDirection.Input
        prm.Value = codFactura
        cmd.Parameters.Add(prm)

        Dim adp As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(cmd)

        Dim DataSet As DataSet = New DataSet

        adp.Fill(DataSet)

        If (DataSet.Tables(0).Rows.Count > 0) Then
            dtg.DataSource = DataSet.Tables(0)
        Else
        End If

    End Sub



Al final tuve que crear el PROCEDURE en SQL (mostrarFacturaCompleta)
Lo carga desde VB, crendo la conexion, el SQL command (cmd) y añade el parametro (prm -@codFactura)
y lo guarda en el DateGridView que le mandes.

Un saludo Rubén

arfgh