Solución: La que explico a continuación.
Necesito llenar mi DataGridView con los datos que tengo en diferentes tablas de mi base de datos, por lo que el select es un poquito complejo y no puedo crearlo directamente con un DataTable tipado, así que tengo que hacerlo por código.
Voy a suponer que mi select sería algo así:
select campo1, campo2, campo3 from tablaA, tablaB where relacionA1 = relacionB2
Obviamente por la complejidad de mi select, decido ponerlo en un SP, el cual por ejemplo, me quedaría así:
create procedure sp_prueba @variable int as select campo1, campo2, campo3 from tablaA, tablaB where relacionA1 = relacionB2 and restriccionB1 = @variable GO
Esa fue la parte que tengo que realizar en mi base de datos, ahora la parte del Visual Basic .Net.
Tengo mi formulario creado llamado Form1, el cual contiene un DataGridView llamado DataGridView1 junto con los campos necesarios creados en modo diseño.
Ahora creo un procedimiento para llenar este grid.
Private Sub Llenar_DataGridView() 'Los argumentos de conexión a la base de datos Dim args As String = "Data Source=;" & _ "Initial Catalog= ;Integrated Security=SSPI" 'Abro la conexión Using connection As SqlConnection = New SqlConnection(args) Dim command As SqlCommand Dim adapter As SqlDataAdapter Dim dtTable As DataTable 'Indico el SP que voy a utilizar command = New SqlCommand("sp_prueba", connection) command.CommandType = CommandType.StoredProcedure adapter = New SqlDataAdapter(command) dtTable = New DataTable With command.Parameters 'Envió los parámetros que necesito .Add(New SqlParameter("@variable", SqlDbType.Int)).Value = valor End With Try 'Aquí ejecuto el SP y lo lleno en el DataTable adapter.Fill(dtTable) 'Enlazo mis datos obtenidos en el DataTable con el grid DataGridView1.DataSource = dtTable 'Si no pongo esta línea, se crean automáticamente los campos del grid dependiendo de los campos del DataTable DataGridView1.AutoGenerateColumns = False 'Aquí le indico cuales campos del select de mi SP van con los campos de mi grid With DataGridView1 .Columns("Campo1").DataPropertyName = "campo1" .Columns("Campo2").DataPropertyName = "campo2" .Columns("Campo3").DataPropertyName = "campo3" End With Catch expSQL As SqlException MsgBox(expSQL.ToString, MsgBoxStyle.OkOnly, "SQL Exception") Exit Sub End Try End Using End Sub
Este procedimiento lo llamo desde el load de la aplicación.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Llenar_DataGridView() End Sub
Y listo, con esto, los datos de mi select se mostrarán en el grid de mi aplicación.
¿Quedó claro mi linda Alondra? Muchos besitos para ti.