Mostrar datos en gridview con tablas unidas

Hola.. Quisiera saber si me podrías ayudar con lo siguiente..
Estoy realizando un pequeño proyecto en visual Basic.Net y usando sql server.. En este ultimo tengo 3 tablas.. Las cuales se relacionan así:
Tablas SM3GUIA y sm3ped Columnas: SM3GUIA. NUM_REF y sm2ped. NUM_REF
Tablas sm3ped y cmcli Columnas sm3ped.RFCCTE y cmcli.RFC
Para ello tengo un inner join creado en el sqlDataSource... A continuación pongo el código y marco con negritas donde se me marca el error:
Dim conn5 As System.Data.SqlClient.SqlConnection = New System.Data.SqlClient.SqlConnection("Data Source=6X.XX.XXX.9X;Initial Catalog=DATABASE1;Persist Security Info=True;User ID=usuario01;Password=xxxxxx")
Dim objCmd5 As SqlClient.SqlCommand = New SqlClient.SqlCommand("SELECT cmcli.NOMCLI, sm3ped.NUM_REF, sm3ped.REGIMEN, sm3ped.CVEPEDIM, sm3ped.NUM_PED, sm3ped.FEC_PAG, sm3ped.VALADUANA,SM3GUIA.NUMGUIA FROM SM3GUIA INNER JOIN (sm3ped INNER JOIN cmcli ON sm3ped.RFCCTE=cmcli.RFC) ON sm3ped.NUM_REF=SM3GUIA.NUM_REF WHERE (sm3ped.NUM_REF=('" & txtbuscar.Text & "')", conn5)
Dim ObjLector5 As SqlClient.SqlDataReader
Dim datgr5 As New DataGrid
'Con esto lleno el gridview
Me.SqlDataSource13.SelectParameters("NUM_REF").Def aultValue = Me.txtconsulta.Text
Me.SqlDataSource13.DataSourceMode = SqlDataSourceMode.DataReader
objCmd5.Connection.Open()
ObjLector5 = objCmd5.ExecuteReader
Me.GridView6.DataSourceID = String.Empty
Me.GridView6.DataSource = ObjLector5
Me.GridView6.DataBind()
ObjLector5.Close()
objCmd5.Connection.Close()
If Me.GridView6.Rows().Count = 0 Then MsgBox("No se Encuentran Datos", MsgBoxStyle.OkOnly)
'Codigo del SqlDataSource
SelectCommand="SELECT cmcli.NOMCLI, sm3ped.NUM_REF, sm3ped.REGIMEN, sm3ped.CVEPEDIM,
             sm3ped.NUM_PED, sm3ped.FEC_PAG, sm3ped.VALADUANA,SM3GUIA.NUMGUIA
FROM   sm3ped INNER JOIN
            SM3GUIA ON SM3GUIA.NUM_REF=sm3ped.NUM_REF INNER JOIN
            cmcli ON sm3ped.RFCCTE=cmcli.RFC
WHERE (sm3ped.NUM_REF=@NUM_REF)">
        <SelectParameters>
            <asp:ControlParameter ControlID="txtbuscar" Name="NUM_REF"
                PropertyName="Text" />
        </SelectParameters>
    </asp:SqlDataSource>
----------------------------------------------------
Al momento de ejecutarlo me muestra error en sintaxis.. Que me falta un On.. Pero el inner join que tengo creo que ya esta correcto.. Necesito más ideas para hacer esto.. ¿me puedes ayudar? De antemano.. Gracias..

1 respuesta

Respuesta
1
El primer INNer JOIN no lo entiendo, creoq ue esta mal, el segundo si esta bien, pero no colocaste en donde exactamenet da el error
Ok.. la sintaxis es así:
SELECT cmcli.NOMCLI, sm3ped.NUM_REF,sm3ped.IMP_EXP, sm3ped.REGIMEN, sm3ped.CVEPEDIM,sm3ped.NUM_PED, sm3ped.FEC_PAG, sm3ped.VALADUANA,SM3GUIA.NUMGUIA,SM3FRA.VALCOM FROM sm3ped INNER JOIN SM3GUIA ON SM3GUIA.NUM_REF=sm3ped.NUM_REF INNER JOIN cmcli ON sm3ped.RFCCTE=cmcli.RFC INNER JOIN SM3FRA ON sm3ped.NUM_REF=SM3FRA.NUM_REF WHERE (sm3ped.NUM_REF=('" & txtbuscar.Text & "'))
donde txtbuscar es el cuadrod e texto donde se recoge el numero que se va a buscar.. en el SqlDatasource.. solo cambia a WHERE (sm3ped.NUM_REF=@NUM_REF)
Lo de los inner joins son porque voy a sacar la inforcacion de 4 tablas distintas dentro de una misma BD... las tablas se relacionan así:
TAblas Columnas
sm3ped y SM3GUIA                    NUM_REF (en ambas)
cmcli y sm3ped                            cmcli.RFC y sm3ped.RFCCTE
SM3FRA y sm3ped                      NUM_REF (ambos)
No te puedo especificar el error por que no me muestra el error.. bueno... no me mostraba el error.. ahora simplemente no me llena el gridview.. Se me pasa directamente al If.. ¿Alguna idea que me puedas dar? De antemano.. Gracias..
Ejecuta la sentencia en el query analyzer del sql a ver si te devuelve algo o no, y corriges la sentencia sql en el query analyzer
Ya lo ejecuté.. pero sin el Where..(ya que no recuerdo como ponerle para que me pida un valor je je) y si me muestra los datos..
Por eso digo que ahí no es.. lo que pasa es que como que no me llena el gridview.. ¿alguna sugerencia para llenar el gridview? O la vdd ya no se ni que le pasa... de antemano.. gracias
Si no llena el gridview es porque no esta devolviendo valores, para probar el where colocas el campo y armas la condición y el valor le colocas lo que vas a colocar si te lo pide la aplicación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas