[Generalidades de código] Creación de un sistema ABC Altas - Bajas - Cambios Generalidades de código -SQL Server 2005 Express Ed. -Microsoft Visual C# 2008 Por: Juan Francisco González Reyes – 07230471 ITSL – Durango, México [Generalidades de código] ¿Cómo hacer esperar al SPLASH SCREEN antes de iniciar el sistema? Existen innumerables maneras para hacer esperar un tiempo al SPLASH SCREEN antes de iniciar el sistema. En este caso utilizamos un progressBar y un timer: private void timer1_Tick(object sender, EventArgs e) { progressBar1.Value++; if (progressBar1.Value == 100) { timer1.Stop(); Form2 ventana = new Form2(); this.Hide(); ventana.Show(); } } ¿Cómo hacer el efecto botón con un pictureBox? Simplemente en los eventos “MouseMove” y “MouseLeave” del pictureBox añadimos el siguiente código: private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { pictureBox1.Size = new Size(120, 120); label1.Text = "Loggin del Sistema"; private void pictureBox1_MouseLeave(object sender, EventArgs e) { pictureBox1.Size = new Size(100, 100); } [Generalidades de código] ¿Cómo crear la conexión a la base de datos? Primeramente deberemos tener la base de datos adjuntada al motor de base de datos. Después, dentro del código del Program.cs deberemos declarar la variable global “cadena”… ¿Por qué? Porque en distintas partes del programa se necesitará tal cadena. using using using using System; System.Collections.Generic; System.Linq; System.Windows.Forms; namespace GoldenStar { public class Global { public static string cadena = "Data Source=Dino\\SQLEXPRESS;Initial Catalog=Negocio;Integrated Security=True"; } static class Program { /// <summary> /// Punto de entrada principal para la aplicación. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } Donde: “Dino\\SQLEXPRESS” es el nombre del motor de Base de Datos “Negocio” es el nombre de la base de datos a la que se quiere accesar [Generalidades de código] Dentro del código en C# deberemos agregar la librería SQLCLIENT using System.Data.SqlClient; Debajo, dentro del código de la clase Form, deberemos declarar la variable “con” como una conexión SQL: SqlConnection con; Dentro del evento que deseemos, agregaremos el siguiente código: con = new System.Data.SqlClient.SqlConnection(); con.ConnectionString = Global.cadena; try { con.Open(); MessageBox.Show("Conexión realizada"); } catch (Exception) { MessageBox.Show("Conexión fallida"); } ¿Cómo interactuar entre ventanas? Si queremos abrir una nueva form en tiempo de ejecución, utilizaremos un código como el siguiente: private void pictureBox2_3_Click(object sender, EventArgs e) { Form11 ventana = new Form11(); ventana.ShowDialog(); } Si queremos cerrar el Form en ejecución se escribe: this.Close(); Si queremos ocultar el Form en ejecución se escribe: this.Hide(); [Generalidades de código] ¿Cómo verificar si existe X usuario? Se usa una conexión SQL como la descrita al principio del documento Se utiliza un comando SQL SELECT Se utiliza el código de la siguiente manera: private void entrar() { Global.usuario = textBox1.Text; con = new System.Data.SqlClient.SqlConnection(); con.ConnectionString = Global.cadena; try { //busco si existe tal usuario string buscar = "SELECT * from usuarios where usuario= '" + textBox1.Text + "'"; SqlCommand ORDEN = new SqlCommand(buscar, con); ORDEN.Connection.Open(); ORDEN.ExecuteNonQuery(); SqlDataReader reader = ORDEN.ExecuteReader(); reader.Read(); //si SI existe el usuario if (reader.HasRows) { //si SI coincide la contraseña if (leerClave().Trim() == textBox2.Text) { if (Global.modo == "login") { Form4 ventana = new Form4(); ventana.Show(); this.Close(); } if (Global.modo == "agregar") { Form18 ventana = new Form18(); ventana.Show(); this.Close(); } if (Global.modo == "editar") { Form19 ventana = new Form19(); ventana.Show(); this.Close(); } } //si NO coincide la contraseña else { MessageBox.Show("La contraseña es incorrecta"); } [Generalidades de código] } //si NO existe el usuario else { MessageBox.Show("El usuario proporcionado no existe"); } } catch { MessageBox.Show("Conexion fallida"); } } ¿Cómo leer información de la Base de Datos? Se usa una conexión SQL como la descrita al principio del documento Se utiliza un comando SQL SELECT En este ejemplo, la función lee la clave del usuario y la retorna dentro de la variable “cadena” //funcion que lee la clave del usuario en la BD y devuelve un string con su valor private string leerClave() { con = new System.Data.SqlClient.SqlConnection(); con.ConnectionString = Global.cadena; string cadena = ""; SqlCommand ORDEN5 = new SqlCommand("SELECT clave from usuarios where usuario='"+textBox1.Text+"'", con); ORDEN5.Connection.Open(); ORDEN5.ExecuteNonQuery(); SqlDataReader reader5 = ORDEN5.ExecuteReader(); reader5.Read(); try { if (reader5.HasRows) { cadena = reader5.GetString(0); } } catch (Exception) { cadena = ""; } reader5.Close(); ORDEN5.Connection.Close(); return cadena; } [Generalidades de código] ¿Cómo dar de ALTA un registro? Se usa una conexión SQL como la descrita al principio del documento Se utiliza un comando SQL INSERT En este ejemplo, se intenta añadir un cliente a la base de datos if (MessageBox.Show("Añadir el nuevo registro a la Base de Datos?", "Añadir nuevo cliente", MessageBoxButtons.YesNo) == DialogResult.Yes) { con = new System.Data.SqlClient.SqlConnection(); con.ConnectionString = Global.cadena; try { string q = "insert into clientes(id_cte,nombre,rfc,tel1,tel2,calle,num_ext,num_int,cp,colonia,ciu dad,estado,pais) values(@id_cte,@nombre,@rfc,@tel1,@tel2,@calle,@num_ext,@num_int,@cp,@col onia,@ciudad,@estado,@pais)"; SqlCommand ORDEN = new SqlCommand(q, con); ORDEN.Parameters.Add(new SqlParameter("@id_cte", textBox11.Text)); ORDEN.Parameters.Add(new SqlParameter("@nombre", textBox1.Text)); ORDEN.Parameters.Add(new SqlParameter("@rfc", textBox2.Text)); ORDEN.Parameters.Add(new SqlParameter("@tel1", textBox3.Text)); ORDEN.Parameters.Add(new SqlParameter("@tel2", textBox4.Text)); ORDEN.Parameters.Add(new SqlParameter("@calle", textBox5.Text)); ORDEN.Parameters.Add(new SqlParameter("@num_ext", textBox7.Text)); ORDEN.Parameters.Add(new SqlParameter("@num_int", textBox6.Text)); ORDEN.Parameters.Add(new SqlParameter("@cp", textBox8.Text)); ORDEN.Parameters.Add(new SqlParameter("@colonia", textBox9.Text)); ORDEN.Parameters.Add(new SqlParameter("@ciudad", textBox10.Text)); ORDEN.Parameters.Add(new SqlParameter("@estado", textBox12.Text)); ORDEN.Parameters.Add(new SqlParameter("@pais", textBox13.Text)); ORDEN.Connection.Open(); ORDEN.ExecuteNonQuery(); ORDEN.Connection.Close(); MessageBox.Show("Nuevo registro agregado a la Base de Datos"); this.Close(); } catch (Exception) { MessageBox.Show("Conexión fallida"); } } [Generalidades de código] ¿Cómo dar de BAJA un registro? Se usa una conexión SQL como la descrita al principio del documento Se utiliza un comando SQL DELETE En este ejemplo, se intenta eliminar un cliente de la base de datos private void button1_Click(object sender, EventArgs e) { con = new System.Data.SqlClient.SqlConnection(); con.ConnectionString = Global.cadena; try { string buscar = "SELECT * from clientes where id_cte= '" + textBox1.Text + "'"; SqlCommand ORDEN = new SqlCommand(buscar, con); ORDEN.Connection.Open(); ORDEN.ExecuteNonQuery(); SqlDataReader reader = ORDEN.ExecuteReader(); reader.Read(); if (reader.HasRows) { con2 = new System.Data.SqlClient.SqlConnection(); con2.ConnectionString = Global.cadena; if (MessageBox.Show("¿Seguro que desea eliminar la cuenta " + textBox1.Text + "?", "Confirmar", MessageBoxButtons.YesNo) == DialogResult.Yes) { string eliminar = "DELETE FROM clientes WHERE id_cte='" + textBox1.Text + "'"; SqlCommand ORDEN2 = new SqlCommand(eliminar, con2); ORDEN2.Connection.Open(); ORDEN2.ExecuteNonQuery(); MessageBox.Show("Cuenta eliminada"); textBox1.Text = ""; con.Close(); con2.Close(); this.Close(); } else { MessageBox.Show("Cuenta no eliminada"); } } else { MessageBox.Show("La cuenta proporcionada no existe"); } } catch { MessageBox.Show("Conexion fallida"); } } [Generalidades de código] ¿Cómo ACTUALIZAR un registro? Se usa una conexión SQL como la descrita al principio del documento Se utiliza un comando SQL UPDATE En este ejemplo, se intenta actualizar la información de un cliente de la base de datos if (MessageBox.Show("Modificar registro de la Base de Datos?", "Modificar cliente", MessageBoxButtons.YesNo) == DialogResult.Yes) { con = new System.Data.SqlClient.SqlConnection(); con.ConnectionString = Global.cadena; try { string q = "update clientes set nombre=@nombre,rfc=@rfc,tel1=@tel1,tel2=@tel2,calle=@calle,num_ext=@num_e xt,num_int=@num_int,cp=@cp,colonia=@colonia,ciudad=@ciudad,estado=@estado ,pais=@pais where id_cte=@id_cte"; SqlCommand ORDEN = new SqlCommand(q, con); ORDEN.Parameters.Add(new SqlParameter("@id_cte", textBox11.Text)); ORDEN.Parameters.Add(new SqlParameter("@nombre", textBox1.Text)); ORDEN.Parameters.Add(new SqlParameter("@rfc", textBox2.Text)); ORDEN.Parameters.Add(new SqlParameter("@tel1", textBox3.Text)); ORDEN.Parameters.Add(new SqlParameter("@tel2", textBox4.Text)); ORDEN.Parameters.Add(new SqlParameter("@calle", textBox5.Text)); ORDEN.Parameters.Add(new SqlParameter("@num_ext", textBox7.Text)); ORDEN.Parameters.Add(new SqlParameter("@num_int", textBox6.Text)); ORDEN.Parameters.Add(new SqlParameter("@cp", textBox8.Text)); ORDEN.Parameters.Add(new SqlParameter("@colonia", textBox9.Text)); ORDEN.Parameters.Add(new SqlParameter("@ciudad", textBox10.Text)); ORDEN.Parameters.Add(new SqlParameter("@estado", textBox12.Text)); ORDEN.Parameters.Add(new SqlParameter("@pais", textBox13.Text)); ORDEN.Connection.Open(); ORDEN.ExecuteNonQuery(); ORDEN.Connection.Close(); MessageBox.Show("Registro modificado"); this.Close(); } catch (Exception) { MessageBox.Show("Conexión fallida"); } }