Módulo 13 Trabajando con filas de un datagrid

microsoft-azure-logo

Objetivo del curso: Ayudar a quienes deseen aprender a generar aplicaciones WPF con enlace a bases de datos en Azure de una manera en la que no sea requerido un conocimiento previo en el tema utilizando lenguaje coloquial para quienes inician recién en el mundo de la programación utilizando C# como lenguaje de programación y SQL Server.

Objetivo General: Desarrollar un sistema que permita llevar el seguimiento de peso y estatura de alumnos.

Objetivo del tutorial: Utilizar una fila de la información mostrada correspondiente al contenido de la tabla en sql azure.

Requerimientos:

  • Visual Studio 2017 o versión anterior.
  • Aplicación WPF
  • Cuenta de Azure vigente
  • Base de datos y tablas creadas en los módulos anteriores
  • Contenido del tutorial de mostrar información

Interfaz

datagrid

Código

private void btnsuma_Click(object sender, RoutedEventArgs e)
{
try
{
int suma = 0;
foreach(DataRowView row in datagrid.Items) //recorremos las lineas del datagrid
{

//le decimos que queremos la información de la fila 6 para sumarla
suma = suma + int.Parse(row.Row.ItemArray[6].ToString());
txtpesosuma.Text = suma.ToString(); //mostramos la suma

}
}
catch(Exception ex)
{

}

}

Curso completo: aquí

Anuncios

Módulo 12 Llamar Procedimientos almacenados en SQL Azure

microsoft-azure-logo

Objetivo del curso: Ayudar a quienes deseen aprender a generar aplicaciones WPF con enlace a bases de datos en Azure de una manera en la que no sea requerido un conocimiento previo en el tema utilizando lenguaje coloquial para quienes inician recién en el mundo de la programación utilizando C# como lenguaje de programación y SQL Server.

Objetivo General: Desarrollar un sistema que permita llevar el seguimiento de peso y estatura de alumnos.

Objetivo del tutorial: Llamar un procedimiento almacenado de una base de datos en SQL Azure desde un formulario WPF.

Requerimientos:

  • Visual Studio 2017 o versión anterior.
  • Aplicación WPF
  • Cuenta de Azure vigente
  • Base de datos y tablas creadas en los módulos anteriores

Interfaz:

insertar

Código

private void btnguardar_Click(object sender, RoutedEventArgs e)
{//validamos que todos los datos del formulario esten llenos
if (txtnombre.Text != “” && txtapellido1.Text != “” && txtapellido2.Text != “” && txtedad.Text != “” && txtpeso.Text != “” && txtestatura.Text != “”)
{//declaramos un reader para que verifique la información
SqlDataReader rdr = null;
//creamos la conexión
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“conexion”].ConnectionString);
//abrimos la conexión
conn.Open();
//ingresamos el nombre de nuestro procedimiento almacenado en un sqlcommand
SqlCommand cmd = new SqlCommand(“registrousuariocurso”, conn);
//decimos que es un procedimiento almacenado
cmd.CommandType = System.Data.CommandType.StoredProcedure;
//asignamos a las variables creadas en el procedimiento los valores del formulario
cmd.Parameters.Add(new SqlParameter(“@nombre”, txtnombre.Text));
cmd.Parameters.Add(new SqlParameter(“@apellido1”, txtapellido1.Text));
cmd.Parameters.Add(new SqlParameter(“@apellido2”, txtapellido2.Text));
cmd.Parameters.Add(new SqlParameter(“@sexo”, combosexo.SelectedValue.ToString()));
cmd.Parameters.Add(new SqlParameter(“@edad”, int.Parse(txtedad.Text)));
cmd.Parameters.Add(new SqlParameter(“@peso”, float.Parse(txtpeso.Text)));
cmd.Parameters.Add(new SqlParameter(“@estatura”, float.Parse(txtestatura.Text)));
//ejecutamos el reader
rdr = cmd.ExecuteReader();
//cerramos el reader y la conexión
rdr.Close();
conn.Close();

}
}

Curso completo: aquí

Módulo 11 Mostrar información de tablas SQL Azure

microsoft-azure-logo

Objetivo del curso: Ayudar a quienes deseen aprender a generar aplicaciones WPF con enlace a bases de datos en Azure de una manera en la que no sea requerido un conocimiento previo en el tema utilizando lenguaje coloquial para quienes inician recién en el mundo de la programación utilizando C# como lenguaje de programación y SQL Server.

Objetivo General: Desarrollar un sistema que permita llevar el seguimiento de peso y estatura de alumnos.

Objetivo del tutorial: Mostrar toda la información de nuestra tabla en un datagrid usando una base de datos en SQL Azure.

Requerimientos:

  • Visual Studio 2017 o versión anterior.
  • Aplicación WPF
  • Cuenta de Azure vigente
  • Base de datos y tablas creadas en los módulos anteriores con registros

Interfaz:

datagrid

Código

private void btnmostrar_Click(object sender, RoutedEventArgs e)

{

//Creamos la conexión

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings[“conexion”].ConnectionString);

//Creamos un sqldataadapter

SqlDataAdapter ada = new SqlDataAdapter(“Select * from registroalumno”, con);

//creamos un dataset

DataSet ds = new DataSet();

//abrimos la conexión

con.Open();

//agrega o actualiza las filas del dataset

ada.Fill(ds, “registroalumno”);

//cerramos la conexión

con.Close();

//cargamos la informaicón a nuestro datagrid convirtiendola en un dataview

datagrid.ItemsSource = new DataView(ds.Tables[“registroalumno”]);

}

Curso completo: aquí

Módulo 9 Actualizar información en tablas SQL Azure

microsoft-azure-logo

Objetivo del curso: Ayudar a quienes deseen aprender a generar aplicaciones WPF con enlace a bases de datos en Azure de una manera en la que no sea requerido un conocimiento previo en el tema utilizando lenguaje coloquial para quienes inician recién en el mundo de la programación utilizando C# como lenguaje de programación y SQL Server.

Objetivo General: Desarrollar un sistema que permita llevar el seguimiento de peso y estatura de alumnos.

Objetivo del tutorial: Actualizar información resultante del tutorial de búsqueda utilizando el numcontrol en nuestra base de datos en SQL Azure.

Requerimientos:

  • Visual Studio 2017 o versión anterior.
  • Aplicación WPF
  • Cuenta de Azure vigente
  • Base de datos y tablas creadas en los módulos anteriores
  • Código del tutorial de buscar información

Interfaz:

insertar

 

Código:

private void btnactualizar_Click(object sender, RoutedEventArgs e)

{//validamos que el usuario ingrese todos los datos

if (txtnombre.Text != “” && txtapellido1.Text != “” && txtapellido2.Text != “” && txtedad.Text != “” && txtpeso.Text != “” && txtestatura.Text != “”)

{//creamos la conexión enlazando con las credenciales de app.config

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“conexion”].ConnectionString);

//abrimos la conexión

conn.Open();

//creamos el sqlcommand y lo igualamos con la conexión para hacer la consulta

using (SqlCommand command = conn.CreateCommand())

{

//creamos la sentencia de actualización con todos los parametros y basandonos en el numero de control previamente ingresado

command.CommandText = “Update registroalumno set nombre=@nombre,apellido1=@apellido1,apellido2=@apellido2,sexo=@sexo,edad=@edad,peso=@peso,estatura=@estatura where numcontrol='” + txtncontrol.Text + “‘”;

//le asignamos a las variables de actualización, la información ingresada por el usuario

command.Parameters.AddWithValue(“@nombre”, txtnombre.Text);

command.Parameters.AddWithValue(“@apellido1”, txtapellido1.Text);

command.Parameters.AddWithValue(“@apellido2”, txtapellido2.Text);

command.Parameters.AddWithValue(“@sexo”, combosexo.SelectedValue.ToString());

command.Parameters.AddWithValue(“@edad”, int.Parse(txtedad.Text));

command.Parameters.AddWithValue(“@peso”, float.Parse(txtpeso.Text));

command.Parameters.AddWithValue(“@estatura”, float.Parse(txtestatura.Text));

//validamos que se actualizará la informacion con el executenonquery el cual regresa el número de líneas afectadas

int estatus = command.ExecuteNonQuery();

//sí las lineas afectadas son mayor a 0 se notifica el cambio

if (estatus > 0)

{

txtestatus1.Text = “Información de usuario actualizada”;

}

else

{

txtestatus1.Text = “Algo fallo”;

}

}

}

else

{

txtestatus1.Text = “Ingresa toda la información para poder actualizar”;

}

}

Curso completo: aquí

Módulo 8 Buscar información de tablas SQL Azure

microsoft-azure-logo

Objetivo del curso: Ayudar a quienes deseen aprender a generar aplicaciones WPF con enlace a bases de datos en Azure de una manera en la que no sea requerido un conocimiento previo en el tema utilizando lenguaje coloquial para quienes inician recién en el mundo de la programación utilizando C# como lenguaje de programación y SQL Server.

Objetivo General: Desarrollar un sistema que permita llevar el seguimiento de peso y estatura de alumnos.

Objetivo del tutorial: Buscar registros a través del numcontrol en nuestra base de datos en SQL Azure.

Requerimientos:

  • Visual Studio 2017 o versión anterior.
  • Aplicación WPF
  • Cuenta de Azure vigente
  • Base de datos y tablas creadas en los módulos anteriores

Interfaz:

buscar

Código:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“conexion”].ConnectionString); //Creamos una sql conexión enlazando con app.config

conn.Open(); //Abrimos la conexión

using (SqlCommand command = conn.CreateCommand()) //creamos un sqlcommand y la igualamos a la conexión

{

SqlCommand cms = new SqlCommand(“Select * from registroalumno where numcontrol='” + txtncontrol.Text+ “‘”, conn); //generamos la sentencia igual que en sql server

SqlDataReader dr = cms.ExecuteReader(); //creamos un datareader que será el que busque en la base de datos el numcontrol del usuario

while (dr.Read()) //una vez encontrado el usuario, traemos su información y la asignamos a los campos del formulario

{

txtnombre.Text = dr[“nombre”].ToString();

txtapellido1.Text= dr[“apellido1”].ToString();

txtapellido2.Text = dr[“apellido2”].ToString();

txtedad.Text = dr[“edad”].ToString();

txtpeso.Text= dr[“peso”].ToString();

txtestatura.Text= dr[“estatura”].ToString();

combosexo.SelectedValue=dr[“sexo”].ToString();

}

dr.Close();//cerramos el datareader

conn.Close(); //cerramos la conexión

}

Curso completo: aquí

Módulo 7 Insertar información en tablas

microsoft-azure-logo

Objetivo del curso: Ayudar a quienes deseen aprender a generar aplicaciones WPF con enlace a bases de datos en Azure de una manera en la que no sea requerido un conocimiento previo en el tema utilizando lenguaje coloquial para quienes inician recién en el mundo de la programación utilizando C# como lenguaje de programación y SQL Server.

Objetivo General: Desarrollar un sistema que permita llevar el seguimiento de peso y estatura de alumnos.

Objetivo del tutorial: Insertar registros nuevos en nuestra base de datos en SQL Azure sin utilizar procedimientos almacenados, revisar que la información proporcionada por el usuario sea válida, es decir, cadenas de texto y números

Requerimientos:

  • Visual Studio 2017 o versión anterior.
  • Aplicación WPF
  • Cuenta de Azure vigente
  • Base de datos y tablas creadas en los módulos anteriores

Interfaz de usuario

En esta ocasión he decidido dividir en dos partes la interfaz de usuario, la primera de ellas es la sección de Información Personal dónde se toman los datos personales de los chicos, el segundo apartado es la sección de peso y estatura.

insertar

Funcionamiento:

El usuario puede navegar entre las secciones, pero al dar clic en guardar debe validar que todos los datos sean ingresados con anterioridad.

Código:

Agregamos información al combo de sexo de la siguiente manera:

combosexo.Items.Add(“H”);

 combosexo.Items.Add(“M”);

Para cumplir con el funcionamiento de las secciones agregamos el siguiente código:

private void btnpersonal_Click(object sender, RoutedEventArgs e) //Hace visible el grid personal y oculta el grid de perso y estatura {

gridpersonal.Visibility = Visibility.Visible;

gridpeso.Visibility = Visibility.Collapsed;

}

private void btnpeso_Click(object sender, RoutedEventArgs e) //Hace visible el grd de peso y estatura / oculta el grid de datos personales

{

gridpeso.Visibility = Visibility.Visible;

gridpersonal.Visibility = Visibility.Collapsed;

}

Insertando información en la base de datos

private void btnguardar_Click(object sender, RoutedEventArgs e)

{

if (txtnombre.Text != “” && txtapellido1.Text != “” && txtapellido2.Text != “” && txtedad.Text != “” && txtpeso.Text != “” && txtestatura.Text != “”) //validamos que la información sea ingresada

{

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“conexion”].ConnectionString); //creamos la conexión a nuestra base de datos llamando la información de app.config

using (SqlCommand command = conn.CreateCommand()) //creamos el sqlcommand e igualamos a la conexión

{

command.CommandText = “insert into registroalumno(nombre,apellido1,apellido2,sexo,edad,peso,estatura)values(@nombre,@apellido1,@apellido2,@sexo,@edad,@peso,@estatura)”; //generamos la sentencia insert, igual que en SQL Server

//Asignamos a las variables de inserción los valores del formulario

command.Parameters.AddWithValue(“@nombre”, txtnombre.Text);

command.Parameters.AddWithValue(“@apellido1”, txtapellido1.Text);

command.Parameters.AddWithValue(“@apellido2”, txtapellido2.Text);

command.Parameters.AddWithValue(“@sexo”, combosexo.SelectedValue.ToString());

command.Parameters.AddWithValue(“@edad”, int.Parse(txtedad.Text));

command.Parameters.AddWithValue(“@peso”, float.Parse(txtpeso.Text));

command.Parameters.AddWithValue(“@estatura”, float.Parse(txtestatura.Text));

//abrimos la conexión

conn.Open();

// command.ExecuteNonQuery() nos devuelve el número de líneas afectadas

int estatus = command.ExecuteNonQuery();

//Sí es mayor a 0, el usuario se ha registrado

if (estatus > 0)

{

txtestatus.Text = “Usuario registrado con éxito”;

}

else

{

txtestatus.Text = “Algo fallo”;

}

}

//se cierra la conexión

conn.Close();

}

else //notifica al usuario de que falta ingresar alguna información

{

txtestatus.Text = “Debes ingresar toda la información para poder continuar con el registro”;

}

}

Validamos que sean exclusivamente números los que el usuario ingrese en los campos de edad, peso y estatura de la siguiente manera:

private void txtpeso_KeyDown(object sender, KeyEventArgs e)

{

if (e.Key >= Key.D0 && e.Key <= Key.D9 || e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9)

{

txtestatus.Text = “”;

}

else

{

txtestatus.Text = “El peso debe contener valores númericos”;

}

}

Corremos el código y listo tenemos nuestros datos insertados sin el uso de procedimientos almacenados.

Curso completo: aquí

Módulo 5 Ventanas Modales y No Modales

microsoft-azure-logo

Objetivo del curso: Ayudar a quienes deseen aprender a generar aplicaciones WPF con enlace a bases de datos en Azure de una manera en la que no sea requerido un conocimiento previo en el tema utilizando lenguaje coloquial para quienes inician recién en el mundo de la programación utilizando C# como lenguaje de programación y SQL Server.

Objetivo General: Desarrollar un sistema que permita llevar el seguimiento de peso y estatura de alumnos.

Objetivo del tutorial: Conocer los tintos tipos de formularios que nosotros podemos utilizar si estamos utilizando aplicaciones WPF, sus diferencias y cómo implementarlas en nuestros proyectos.

Requerimientos:

  • Visual Studio 2017 o versión anterior.
  • Aplicación WPF
  • 3 ventanas una principal y dos adyacentes

Un formulario puede ser de dos tipos, modal y no modal

  • Una venta no modal debe cerrarse u ocultarse para que el usuario pueda continuar trabajando con el resto de la aplicación.
  • Los formularios modales permiten alternar el foco entre dos formularios sin necesidad de cerrar el formulario inicial. El usuario puede continuar trabajando en otro lugar, en cualquier aplicación, mientras se muestra el formulario.

Módulo 5 Ventanas Modales y No Modales

Implementando ventanas Modal

Para implementar una ventana Modal debemos llamar el siguiente formulario con el método ShowDialog, de la siguiente manera:

Form formn = new Form();

formn.ShowDialog();

El método Show Dialog tiene un argumento opcional, owner, que se puede utilizar para especificar una relación entre elemento primario y elemento secundario para un formulario.

Implementando ventanas No Modal

Para implementar una Ventana no modal debemos implementar el método Show.

Form formn = new Form();

formn.Show();

Diferencias entre utilizar ventanas Modal y No Modal

El código que sigue al método ShowDialog se ejecuta hasta que se cierra el cuadro de dialogo

El código que sigue al método Show se ejecuta inmediatamente después de que se muestra el formulario.

Ejemplo:

MainPage  Modal

Debemos agregar dos botones, uno para implementar una ventana modal y el otro para el estilo No Modal; Los botones deben contar con el evento Clic cada uno.

Evento Clic botón efecto Modal

insertarv modal = new insertarv();

modal.Owner = this;

Aplicaefecto(this); //aplicamos el efecto de difuminado a la ventana

modal.ShowDialog(); // implementamos la ventana Modal abriendo la nueva ventana.

bool? resultado = modal.DialogResult; // Verificamos si el usuario a cerrado una ventana que cuenta con el efecto modal para quitar el efecto de difuminado.

if(resultado != null)

{

if (resultado == false)

{

Quitarefecto(this);

}

}

Método Aplicaefecto

  public void Aplicaefecto(Window win)

{

var efecto = new System.Windows.Media.Effects.BlurEffect(); //aplicacimos el efecto difuminado

efecto.Radius = 5; //aplicamos un radio de 5 al efecto

win.Effect = efecto; //aplicamos el efecto a la ventana

}

Método Quitar Efecto

public void Quitarefecto(Window win)

{

win.Effect = null; //Quitamos el efecto de la ventana

}

Segunda Ventana (Estilo Modal)

Agregamos un botón el cuál al dar clic el usuario debe regresarnos a la ventana anterior y mandar instrucciones para quitar el efecto difuminado

Evento clic del botón atras

private void btnback_Click(object sender, RoutedEventArgs e)

{

DialogResult = false;

Close();

}

MainPage  Modal

Para mandar llamar otra Ventana utilizando el estilo No modal debemos realizer el llamado utilizando el .Show como se muestra a continuación.

private void btneditar_Click(object sender, RoutedEventArgs e)

{

editarv nomodal = new editarv();

nomodal.Show();

// Close();

}

Se recomienda utilizar el evento Close(); para llevar a usuario a una experiencia más limpia ya que en este efecto, todas las ventanas quedarán habilitadas para su uso lo que se vuelve tedioso si son varias ventanas abiertas.

Fuente del tutorial: MSDN

Curso completo: aquí