Vamos a hacer un ACME(Actualizar, Consultar, Modificar, Eliminar) para una aplicación de escritorio, esta aplicación tendrá un formulario con un dataGridview para mostrar los datos, también tendrá un BindingNavigator para "navegar" por los datos que recuperemos en el Datagridview y enlazaramos el BindingSource del BindingNavigator para mostrar en tetxbox relativos con los campos de la tabla empleado(codigo, nombres, cargo, jefe, departamento) la información correspondiente del empleado por la que vayamos avanzando según avancemos con el BindingNavigator, al final tendremos un formulario asi:
Lo primero va ser crear un nuevo proyecto, en este ejemplo aparecen los códigos para VB y C# así que ustedes deciden que lenguaje utilizar (igual no escribiremos mucho código pues una de las ventajas de utilizar TableAdapter es que no te complicas demasiado escribiendo código) luego muestro en la imagen a continuación el Server Explorer la base de datos y la tabla a la que nos vamos a conectar, en la cual todos los campos son tipo string
Ahora vamos a agregar un nuevo elemento a nuestro proyecto que sera el Dataset sobre el que se trabajara, para esto nos colocamos en el Solution Explorer y damos click derecho sobre nuestro proyecto, nos vamos a agregar(Add) y New Item, tal como muestro en la imagen
agregamos un Dataset y como nombre le ponemos PruebaDS y click en aceptar, tal como se muestra
Al hacerlo lo primero que veremos sera una pantalla gris con esto y lo que vamos a hacer es "jalar", "arrastrar" la tabla empleados desde el Server Explorer a esta parte gris y ahora en la pantalla gris tendremos un DataTable
Tendremos este Datatable con el nombre empleado, que lo toma por defecto del nombre de la tabla, lo podemos cambiar pero en este ejemplo lo dejaremos así ahora bien, se nos crean dos métodos en el empleadoTableAdapter que son Fill y GetData(), lo que haremos sera dar click derecho sobre la parte gris y agregar una query
Tendremos la siguiente ventana, aquí podemos escoger entre
- Utilizar sentencias SQL y asi crear por nuestra cuenta la sentencia SQL a utilizar o bien
- Crear un nuevo procedimiento almacenado que actuara sobre la tabla empleado y se guardara en la base de datos prueba y por ultimo
- Utilizar un procedimiento almacenado existente en nuestra base.
Tal como lo muestra la imagen y para todas las acciones que crearemos sobre la base de datos seleccionaremos la primera opción, la de definir por nuestra cuenta la sentencia SQL a utilizar y damos click al botón Next
a continuación escogeremos el tipo de query que se va a crear, aquí seleccionaremos la primera opción que tal como ven en la imagen es la de SELECT a fin que nos devuelva un conjunto de valores, aunque utilizaremos también el UPDATE, DELETE y el INSERT, al final la única que no utilizaremos sera opción 2.
Aqui nos pide especificar la sentencia que utilizaremos, para el caso de SELECT en nuestro proyecto de ejemplo puede quedar tal como se muestra en la imagen, pero podemos modificarla según lo que queramos hacer, mas abajo en esta entrada encontraran las sentencias de UPDATE, DELETE e INSERT.
Antes de continuar, quiero hacerles notar que en caso deban hacer una consulta muy complicada o simplemente no recuerden como se construye adecuadamente una sentencia SQL, pueden hacer usos del Query Builder que es el botón que aparece en la parte inferior derecha
Luego pondremos un nombre a los métodos que deseamos agregar y damos click en finalizar
Acabamos de crear un query, si se fijan lo hicimos para la opción de seleccionar, al cual le deje el nombre de FillBySelect pero igualmente deberemos crear 3 mas, uno para Eliminar, otro para Insertar y otro para Modificar, al final el datatable nos queda así
y ahora muestro el Form que utilizaremos
Ahora bien, para utilizar nuestro tableadapter debemos escribir esto en código
Dim clientes As New PruebaDSTableAdapters.empleadoTableAdapter
clientes.nombre del query
Como ven el formulario utiliza un BindingNavigator y tiene un DataGridView para navegar y mostrar TODOS los datos respectivamente y conforme se avance en el DataGridView se irán mostrando los datos en los textbox, cada textbox se llama de acuerdo al campo de la tabla que va mostrar.
Todo lo anterior lo hace la función Mostrar
Codigo en VB
Private
Sub Mostrar()
Dim
Clientes As New
PruebaDSTableAdapters.empleadoTableAdapter
Dim bs As New BindingSource
bs.DataSource = Clientes.GetData
DataGridView1.DataSource = bs
BindingNavigator1.BindingSource = bs
TCodigo.DataBindings.Clear()
TCodigo.DataBindings.Add(New Binding("text", bs, "codigo"))
TNombres.DataBindings.Clear()
TNombres.DataBindings.Add(New Binding("text", bs, "nombres"))
TCargo.DataBindings.Clear()
TCargo.DataBindings.Add(New Binding("text", bs, "cargo"))
TJefe.DataBindings.Clear()
TJefe.DataBindings.Add(New Binding("text", bs, "jefe"))
TDepartamento.DataBindings.Clear()
TDepartamento.DataBindings.Add(New Binding("text", bs, "departamento"))
End Sub
Codigo en C#
private void Mostrar() {
PruebaDSTableAdapters.empleadoTableAdapter
clientes= new PruebaDSTableAdapters.empleadoTableAdapter();
BindingSource bs = new BindingSource();
bs.DataSource = clientes.GetData();
bindingNavigator1.BindingSource =
bs;
dataGridView1.DataSource = bs;
TCodigo.DataBindings.Clear();
TCodigo.DataBindings.Add(new Binding("text", bs, "codigo"));
TNombres.DataBindings.Clear();
TNombres.DataBindings.Add(new Binding("text", bs, "nombres"));
TCargo.DataBindings.Clear();
TCargo.DataBindings.Add(new Binding("text", bs, "cargo"));
TJefe.DataBindings.Clear();
TJefe.DataBindings.Add(new Binding("text", bs, "jefe"));
TDepartamento.DataBindings.Clear();
TDepartamento.DataBindings.Add(new Binding("text",
bs, "departamento"));
}
Explicare el código del evento click para el botón consultar: busca el codigo en especifico que se escriba en el textbox llamado Tcodigo si lo encuentra lo muestra solo en el DataGridView pues por un dato no se va activa el BindingNavigator.
En caso de no escribir nada en el textbox Tcodigo y dar click al botón consultar entonces listara todos los datos en el Datagridview, igualmente utilizara un BindingNavigator y mostrara los datos según se avance en los textbox, muestro la consulta y el código del evento click del botón Consultar:
SELECT codigo, nombres, cargo, jefe, departamento
FROM empleado
WHERE (codigo = @codigo)
Codigo en VB
Private
Sub BConsultar_Click(sender As System.Object,
e As System.EventArgs)
Handles BConsultar.Click
Dim
Clientes As New
PruebaDSTableAdapters.empleadoTableAdapter
If (Not (String.IsNullOrEmpty(TCodigo.Text)))
Then
Me.DataGridView1.DataSource
= Clientes.GetDataBySelect(Me.TCodigo.Text)
Else
Mostrar()
End If
End Sub
Codigo en C#
private void BConsultar_Click(object sender, EventArgs e){
PruebaDSTableAdapters.empleadoTableAdapter
clientes = new PruebaDSTableAdapters.empleadoTableAdapter();
if (string.IsNullOrEmpty(TCodigo.Text))
{
Mostrar();
}
else
{
this.dataGridView1.DataSource
= clientes.GetDataBySelect(TCodigo.Text);
}
}
- Ahora el código del evento click para el boton Eliminar, muestro la consulta SQL que agregamos al Tableadapter y el código para el evento click del boton Eliminar:
WHERE ([codigo] = @codigo)
Codigo en VB
Private Sub BEliminar_Click(sender As System.Object, e As System.EventArgs) Handles BEliminar.Click
Private Sub BEliminar_Click(sender As System.Object, e As System.EventArgs) Handles BEliminar.Click
Dim clientes As New PruebaDSTableAdapters.empleadoTableAdapter
clientes.Eliminar(TCodigo.Text)
Mostrar()
End Sub
Codigo en C#
private void BEliminar_Click(object sender, EventArgs e){
Codigo en C#
private void BEliminar_Click(object sender, EventArgs e){
PruebaDSTableAdapters.empleadoTableAdapter
clientes= new PruebaDSTableAdapters.empleadoTableAdapter();
clientes.Eliminar(TCodigo.Text);
Mostrar();
}
- Para agregar datos tenemos la siguiente consulta y código para el evento click del botón Insertar:
VALUES (@codigo, @nombres, @cargo, @jefe, @departamento);
Codigo en VB
Private Sub BInsertar_Click(sender As System.Object, e As System.EventArgs) Handles BInsertar.Click
Private Sub BInsertar_Click(sender As System.Object, e As System.EventArgs) Handles BInsertar.Click
Dim
clientes As New
PruebaDSTableAdapters.empleadoTableAdapter
clientes.Insertar(TCodigo.Text,
TNombres.Text, TCargo.Text, TJefe.Text, TDepartamento.Text)
Mostrar()
End Sub
Codigo en C#
private void BInsertar_Click(object sender, EventArgs e){
PruebaDSTableAdapters.empleadoTableAdapter
clientes = new PruebaDSTableAdapters.empleadoTableAdapter();
clientes.Insertar(TCodigo.Text, TNombres.Text, TCargo.Text, TJefe.Text,
TDepartamento.Text);
Mostrar();
}
- Para modificar datos tenemos la siguiente consulta y código para el evento click del botón Actualizar:
UPDATE empleado
SET nombres = @nombres, cargo = @cargo, jefe = @jefe, departamento = @departamento
WHERE (codigo = @codigo);
Private Sub BActualizar_Click(sender As System.Object, e As System.EventArgs) Handles BActualizar.Click
Dim
clientes As New
PruebaDSTableAdapters.empleadoTableAdapter
clientes.Modificar(TNombres.Text,
TCargo.Text, TJefe.Text, TDepartamento.Text, TCodigo.Text)
Mostrar()
End Sub
Codigo en C#
private
void BActualizar_Click(object
sender, EventArgs e){
PruebaDSTableAdapters.empleadoTableAdapter
clientes = new PruebaDSTableAdapters.empleadoTableAdapter();
clientes.Modificar(TNombres.Text, TCargo.Text, TJefe.Text,
TDepartamento.Text, TCodigo.Text);
Mostrar();
}
eso es todo :)