Y la primer consulta que uno se hace al mirar este control es como lleno el datagridview con mi consulta, para esto vamos a realizar los siguientes pasos.
1.- Insertamos un control Datagridview en nuestro formulario.
2.- Insertamos un boton para obtener los datos de la consulta.
- Colocamos el texto a mostrar del boton en la propiedad Text, en este caso usaremos el texto "Obtener datos."
- Antes debemos tener creada una base de datos en mi caso la llamaremos Pruebas.
- Crearemos una tabla llamada personas.
- USE [pruebas]
GO
/****** Object: Table [dbo].[Personas] Script Date: 07/11/2013 09:06:34 a.m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Personas](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Nombres] [nvarchar](50) NULL,
[Apellidos] [nchar](10) NULL,
CONSTRAINT [PK_Personas] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
- Llenamos la tabla con registros de prueba.
- En la vista codigo de nuestro formulario o haciendo doble click en el formulario, nos aparecera la ventana donde escribiremos todo el codigo necesario para interactuar en nuestra aplicacion.
- Debemos hacer referencias al espacio de nombres Imports System.Data.SqlClient ya que trabajaremos con clases que pertenecen a este espacio de nombres.
- Ejecutamos la aplicacion, y probamos el resultado al dar click en el boton Obtener datos.
Ya para despedirme cabe aclarar que es una buena practica de programacion encapsular nuestro codigo con un bloque de Try Catch, por cualquier problema inesperado y asi evitar que nuestra aplicacion se cuelgue.
el codigo final quedaria asi.
Eso es todo por hoy, cualquier duda comentario o sugerencia, pueden hacerla publicando su comentario en la parte de abajo.
Si hay algun tema en especial sobre el que les gustaria que escribiera tambien me lo pueden indicar, y se los hare saber por medio de un correo electronico.
El codigo fue escrito en Visual Basic.Net 2008
La Base de datos se hizo en SQL Server 2012.
excelente aporte
ResponderEliminarGracias, excelente aporte.
ResponderEliminarComo hago para que el datagrid solo me muestre el resultado de la busqueda es decir que no pueda ver los demas registros si no solo el que haya buscado agaredeceria su respuesta.
ResponderEliminarHola Eliza, disculpa que no conteste tu consulta, ya dias no entraba al blog, todavia nececitas la respuesta?, o ya resolviste tu consulta?.
EliminarMe avisas.
Muy interesante y nada complicado
ResponderEliminarSeria tambien interesante que mostraras si, a partir del datagridview, se puede rellenar la BD
Te refieres a pasar los datos que estan en el datagrid hacia la base de datos?
EliminarRecuerda que estos estan ya en la base de datos.
Si me explicas mejor la idea para entender que es lo que deseas saber con gusto encontrare una solución.
que pasa si programe en tres capas¡¡ como puedo mostrar los datos en datagridview
ResponderEliminarque pasa si programe en tres capas¡¡ como puedo mostrar los datos en datagridview
ResponderEliminarseria igual, ya que los datos que obtienes los puedes colocar en un dataset o un datatable y este enlazarlo al datagrid con la propiedad datasource.
ResponderEliminargracias hermano, yo lo utilice para organizar mi tabla por orden alfabético según mi criterio.
ResponderEliminaraqui mi aporte por si a alguien le interesa lo mismo, solo deben sustituir donde dice "select id, nombre, apellido from personas" por "SELECT * FROM PROVEEDORES ORDER BY NOMBRE_PROVEEDOR ASC" donde provvedores es mi tabla y nombre_proveedor en la columna la cual se va a organizar, ASC significa que se van a organizar de manera ascendente, si se quiere organizar de manera descendente solo deben poner DESC.
muy buen dato estimado, peor una pequeña consulta, que pasaria si quisiera hacer que por ejemplo...
ResponderEliminarque mi datagridview tenga mas campos que los que tengo en la tabla por ejemplo tiene de cabecera 1 2 3 4 5 y en mi tabla tengo 1 3 5, como le puedo hacer para que en el datagridview se muestren en el orden que quiero, es decir que mi datagridview deberia quedar con los campos 1 3 5 llenos y los 2 y 4 en blanco
Si lo que quieres es agregar nuevas columnas a tu datagriview si que estas salgan de una tabla de base de datos, solo debes darle click derecho a tu datagridview luego punchar la opción "editar columnas" ahi agregas las columnas adicionales que quieras.
EliminarSi lo que quieres es agregar nuevas columnas a tu datagriview si que estas salgan de una tabla de base de datos, solo debes darle click derecho a tu datagridview luego punchar la opción "editar columnas" ahi agregas las columnas adicionales que quieras.
EliminarXQ ESTAN RAYADAS ESAS BASES?
ResponderEliminarDisculpa me podrias ayudar para poder agragar filas a un datagridview que se encuentra enlazado a datos.
ResponderEliminarTe explico.
Tengo un formulario el cual contiene un texbox y un datagridview. Cuando se introduce un codigo en el textbox y se precione enter se busca en la bd y me muestra el resultado en el datagridview.
Si quiero seguir introduciendo codigos al textbox se vayan añadiendo al datagridview.
Solo puedo hacer que se muestre una fila y si busco un nuevo codigo se sobreescribe el que ya estaba.
Te dejo mi correo si me puedes ayudar.
frank33bet@gmail.com
Saludos
Saludos frank.
EliminarQuisas pueda ayudarte, por lo que entiendo estas tratando de filtar los datos en tu datagridview, pero cuando lo haces y borras para buscar otro la datagridview se queda solo con los datos consultados?
De ser asi notificame y si no aclarame bien para ayudarte.
Saludos.
Asi es solo me muestra el dato consultado mas reciente. Te Muestro el codigo con el que lo estoy realizando
EliminarImports System.Data.SqlClient
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DataGridView1.AutoGenerateColumns = False //Las columnas las genero en tiempo de diseño
End Sub
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
If e.KeyChar = Convert.ToChar(Keys.Enter) Then
DataGridView1.DataSource = GetByid(TextBox1.Text)
End If
End Sub
Public Function GetByid(ByVal idProducto As String) As List(Of EProducto)
Dim productos As New List(Of EProducto)
Using cnx As New SqlConnection("Data Source=.;Initial Catalog=FACTURACION;Integrated Security=True")
cnx.Open()
Const sqlGetById As String = " SELECT IdProducto, Descripcion, Precio FROM PRODUCTOS WHERE IdProducto=@id ORDER BY IdProducto ASC "
Using cmd As New SqlCommand(sqlGetById, cnx)
cmd.Parameters.AddWithValue("@id", idProducto)
Dim dataReader As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
While dataReader.Read()
Dim producto As New EProducto()
producto.IdProducto = Convert.ToString(dataReader("IdProducto"))
producto.Descripcion = Convert.ToString(dataReader("Descripcion"))
producto.Precio = Convert.ToDecimal(dataReader("Precio"))
productos.Add(producto)
End While
Return productos
End Using
End Using
Return Nothing
End Function
End Class
Solo tengo un textbox y un datagridview en el formulario.
y quiero que se vayan agregando al datagridview los resultados de la busqueda.
En el datagridview No hay nada hasta que se realiza la primer consulta
Saludos
En ese caso solo debes devolver los valores de la tabla completa a tu datagridview, en el evento formload debes hacer que tus datos se cargen en el datagrid, eso en caso de que quieras ver los datos al iniciar tu formulario, lo otro seria para cuando borres el texbox de busqueda y te cargen todos los datos en tu datagrid nuevamente puedes hacer lo siguiente:
Eliminar1- vas al evento keydown de tu textbox.
2- escribes la condicion :
If e.KeyCode = Keys.Back Then
Using cnx As New SqlConnection("Data Source=.;Initial Catalog=FACTURACION;Integrated Security=True")
cnx.Open()
Const sqlGetById As String = " SELECT * FROM PRODUCTOS ORDER BY IdProducto ASC "
Using cmd As New SqlCommand(sqlGetById, cnx)
End If
y listo, la condicion es que "si la tecla precionada es igual a back(borrar) entonces te ejecutara la sentecia que quieras", puse de ejemplo una parte de tu codigo, lo unico que fijate para que te cargen todos los datos de esa tabla colocas "select * from tabla", ahi te llamara todas las columnas de tu tabla y el order by de organizara bajo tu criterio.
espero que te aya servido de algo, cualquier duda podemos charlar
adamfrancisco09@gmail.com
saludos.
Disculpa amigo buenas noches estoy trabajando en un proyecto y usando tu codigo solo tengo un detalle quiero filtar con la busqueda del usuario haciendo uso de una caja de texto denominada Poliza.txt me podrias ayudar
ResponderEliminarPrivate Sub Poliza_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Poliza.KeyPress
EliminarIf Asc(e.KeyChar) = 13 Then
Dim dt As New DataTable
Dim conexion As String = "Server=CIAMAS01-PLC\TECHNOTEL;Database=ENTERPRISEADMINDB;User Id=sa;Password=12345;"
Using adaptador As New SqlDataAdapter("SELECT * FROM TABLA WHERE Poliza='" & Poliza.Text & "'", conexion)
adaptador.Fill(dt)
End Using
DataGridView1.DataSource = dt
End If
End If
End Sub
Al usar este último código, me manda este mensaje de error:
EliminarNO SE CONTROLÓ ARGUMENTEXCEPTION:
El formato de la cadena de inicialización no se ajusta a la especificación que comienza en el índice 46.
¿Me puedes ayudar por favor?
GRACIAS POR SU AYUDA YA ENTENDÍ
ResponderEliminarExcelente!
Eliminarhola como estas, a mi me funciono perfecto tu codigo, solo que me gustaría que ayudaras con el tema de filtros, es decir que pueda filtrar los resultados de la consulta entre un rango de fechas específico. te agradeceria mucho tu ayuda.
ResponderEliminarTendrías que agregar dos parámetros mas a la consulta fecha de Inicio y fecha Final para poder generar la consulta de acuerdo al rango especificado.
ResponderEliminarEjemplo
SELECT ID, Descripcion, Costo, Precio, FechaCreacion
FROM PRODUCTOS With (NoLock)
WHERE FechaCreacion between @fechaInicio and @fechaFinal
Saludos!!
Y como lo puedo hacer para entorno web con datareader? De antemano muchas gracias
ResponderEliminarcomo le hago para agregar el resultado en una columna especifica creada con anterioridad en el data?
ResponderEliminarhola que tal, quisiera saber si me pueden ayudar a mi, quisiera que cuando yo ponga una palabra clave o numero clave correspodiente a algun producto ya almacenado en mi base de datos me lo agrege al datagrid. Utilizando un text box, un boton y el datagrid.
ResponderEliminarQuisiera que pueda hacer mas de una consulta osea que yo llame varios productos con el Id y me los agrege uno bajo el otro sin que me los pise.
Vi este video y me funcionó y me permitió descargar el proyecto , se los comparto! https://www.youtube.com/watch?v=-99UfBDSZeE&t=3s
ResponderEliminar