Principales respuestas
Llenar fila por fila un DataGridView

Pregunta
-
Hola estoy intentando llenar un DataGridView Fila a fila uso el siguiente código en un botón
Dim MiDataSet As New DataSet()
Dim Comando As New SqlDataAdapter("SELECT * FROM producto where codigo = '" & txtcodbarras.Text & "' ", conexion)
Comando.Fill(MiDataSet, "producto")
Me.datalistado.DataSource = MiDataSet.Tables("producto")cuando doy clic me carga el registro filtrado por el txtcodbarras.text y lo muestra sin ningún problema en el DataGridView pero si elijo otro registro sobreescribe el anterior y no se como hacer para recorrer el datagridview y ponerlo debajo a medida que los valla agregando Gracias
Respuestas
-
Hola:
En un Form como el de la imagenCopia y pega el siguiente código
Option Explicit On
Option Strict On
Imports System.Data.SqlClientPublic Class Form1
Private moDataTable As New DataTable
Private msCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.DataGridView1.AllowUserToAddRows = False
'
moDataTable.Columns.Add(New DataColumn("EmployeeId", Type.GetType("System.Int16")))
moDataTable.Columns.Add(New DataColumn("FirstName", Type.GetType("System.String")))
Me.DataGridView1.DataSource = moDataTable
End SubPrivate Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
' Configuramos una conexión con el origen de datos.
Using loConexion As New SqlConnection(msCadenaSQL)
loConexion.Open()
Dim lsQuery As String = "Select EmployeeID, FirstName from employees Where EmployeeID=@ID"
Using loComando As New SqlCommand(lsQuery, loConexion)
loComando.Parameters.Add(New SqlParameter("@ID", Me.txtId.Text))
Using loDataReader As SqlDataReader = loComando.ExecuteReader()
Dim Fila As DataRow = moDataTable.NewRow
Do While loDataReader.Read()
Fila.Item("EmployeeID") = loDataReader.Item("EmployeeID")
Fila.Item("FirstName") = loDataReader.Item("FirstName")
Loop
moDataTable.Rows.Add(Fila)
End Using
End Using
End UsingCatch ex As Exception
MessageBox.Show(ex.Message)
End TryEnd Sub
End Class
Un saludo desde Bilbo
Carlos- Marcado como respuesta Bruno030 jueves, 13 de julio de 2017 20:56
Todas las respuestas
-
Hola:
Tienes que hacer una colección inicial y por cada búsqueda ir agregando a la colección el elemento recuperado, pareciera que quieres hacer un arrito de ventas, entonces tu solución aproximada podría ser analiza este articulo:
Llenar DataGridView con datos de TextBox’s usando Datasource o el método Add()
En el encontraras como agregar un item a una colección y mostrar la colección en un DataGridView, también podrás encontrar cuando un item ya existe en la lista entre otras utilidades que se que te serán de ayuda.
Lo único que tendrías que cambiar es la forma en que recuperas la información desde la Bd ya que tendrías que usar una clase para poder trabajar en sincronía con lo que te sugiero.
Saludos desde Monterrey, Nuevo León, México!!!
-
-
Hola:
En un Form como el de la imagenCopia y pega el siguiente código
Option Explicit On
Option Strict On
Imports System.Data.SqlClientPublic Class Form1
Private moDataTable As New DataTable
Private msCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.DataGridView1.AllowUserToAddRows = False
'
moDataTable.Columns.Add(New DataColumn("EmployeeId", Type.GetType("System.Int16")))
moDataTable.Columns.Add(New DataColumn("FirstName", Type.GetType("System.String")))
Me.DataGridView1.DataSource = moDataTable
End SubPrivate Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
' Configuramos una conexión con el origen de datos.
Using loConexion As New SqlConnection(msCadenaSQL)
loConexion.Open()
Dim lsQuery As String = "Select EmployeeID, FirstName from employees Where EmployeeID=@ID"
Using loComando As New SqlCommand(lsQuery, loConexion)
loComando.Parameters.Add(New SqlParameter("@ID", Me.txtId.Text))
Using loDataReader As SqlDataReader = loComando.ExecuteReader()
Dim Fila As DataRow = moDataTable.NewRow
Do While loDataReader.Read()
Fila.Item("EmployeeID") = loDataReader.Item("EmployeeID")
Fila.Item("FirstName") = loDataReader.Item("FirstName")
Loop
moDataTable.Rows.Add(Fila)
End Using
End Using
End UsingCatch ex As Exception
MessageBox.Show(ex.Message)
End TryEnd Sub
End Class
Un saludo desde Bilbo
Carlos- Marcado como respuesta Bruno030 jueves, 13 de julio de 2017 20:56
-