Latest Entries »

Introduccion

El dia de hoy me gustaria enfocarme un poco en  una de las finciones basicas pero esenciales que debe realizar un VBA la cual consiste en extraer informacion desde una base de datos en Access o SQL Server e insertarla en una hoja de calculo de Excel. Este codigo funciona muy bien y sin ningun problema con cualquier version del office 97-2003 y las ultimas dos versiones 2007 y 2012.

Antes de continuar con la codificacion debemos crear nuestra macro la cual llamaremos Data_Reader como se muestra en la figura 1.0.

Figura 1.0.

Si no sabes como grabar una Macro en Excel, no te preocupes, tu puedes echar un vistazo al suiguiente articulo”Macros en Excel” en el siguiente link.

Ahora modificaremos el codigo de la macro seleccionando la pestaña Vista >> Macros >> Ver macros como se muestra en la figura 2.0.

Figura 2.0.

Despues el sistema desplegara un ventana y seleccionaremos nuestra macro previamente grabada y damos clic en la opcion modificar como se mestra en la figura 3.0.

Figura 3.0.

Despues podremos ver una ventana en la cual podremos insertar nuestro codigo como se ve en la figura 4.0.

Figura 4.0.

Antes de de continuar con este articulo debemos agregar una referencia a un componente el cual nos permitira realizar conexiones con bases de datos en este caso utilizaremos el componente Microsoft ActiveX Data Objects 2.8 Library. Sino realizamos este paso al momento de ejecutar nuestro codigo nos producira un error.

Para agregar este componente nos vamos al menu Herramientas >>  Referencias y despues el sistema desplegara una ventana en la cual seleccionamos el componente como se muestra en la figura 5.0.

Figura 5.0.

Codificacion

A continuacion mostrare y explicare el codigo paso a paso para que puedan ver como funciona cada una de las instrucciones.

El primer paso a realizar es definir nuestras variables las cuales nos permitiran el tipo de conexion, el directorio de la base de datos, la consulta a ejecutar entre otras opciones. Para esto utilizaremos 2 variables las cuales llamaremos conn y rst los cuales seran de tipo Connection y Recordset de ActiveX Data Objects (ADO) como se muestra en el siguiente segmento de codigo.

Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim offset As Integer

La variable offset tiene como proposito controlar el desplazamiento de las celdas de la hoja de calculo para poder insertar cada registro de la consulta en celdas individuales.

Acontinuacion debemos ingresar la informacion necesaria para establecer la conexion

Set conn = New ADODB.Connection
With conn
.Provider = “Microsoft.Jet.OLEDB.4.0”
.ConnectionString = “D:\Documents and Settings\Administrador\Escritorio\VERDULEROS.mdb”
.Open
End With

Ahora inicializamos la variable offset en 1 ya que apuntaremos a la posicion uno de la columna endonde empezaremos a insertar nuestros registros.

offset = 1

Despues introducimos la sentencia SQL que vamos a ejecutar.
Set rst = conn.Execute(“SELECT * FROM Ventas WHERE Fecha >= #1998/01/01# AND Fecha <= #1998/12/31# ORDER BY  Fecha, CodVendedor ASC”)

Con la siguiente rutina recorreremos cada uno de los registros que deseamos obtener de nuestra consulta y dichos valores son asignados a las columnas A,B,C y D empezando desde el renglon uno hasta que no haya mas registros para insertar en nuestra hoja de calculo.

Do Until rst.EOF
ActiveSheet.Range(“A” & CStr(offset)).Value = rst.Fields(0).Value
ActiveSheet.Range(“B” & CStr(offset)).Value = rst.Fields(1).Value
ActiveSheet.Range(“C” & CStr(offset)).Value = rst.Fields(2).Value
ActiveSheet.Range(“D” & CStr(offset)).Value = rst.Fields(3).Value
rst.MoveNext
offset = offset + 1
Loop

Por ultimo cerramos la conexion despues de haber obtenido los resultados de nuestra busqueda y agregamos un MessageBox para indicarle al usuario que la operacion ha concluido.

rst.Close
conn.Close

Set rst = Nothing
Set conn = Nothing

MsgBox (“Operacion Finalizada”)

Acontinuacion mostrare el codigo completo el cual insertaras en la macro.

Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim offset As Integer

Set conn = New ADODB.Connection
With conn
.Provider = “Microsoft.Jet.OLEDB.4.0”
.ConnectionString = “D:\Documents and Settings\Administrador\Escritorio\VERDULEROS.mdb”
.Open
End With
offset = 1
Set rst = conn.Execute(“SELECT * FROM Ventas WHERE Fecha >= #1998/01/01# AND Fecha <= #1998/12/31# ORDER BY  Fecha, CodVendedor ASC”)
Do Until rst.EOF
ActiveSheet.Range(“A” & CStr(offset)).Value = rst.Fields(0).Value
ActiveSheet.Range(“B” & CStr(offset)).Value = rst.Fields(1).Value
ActiveSheet.Range(“C” & CStr(offset)).Value = rst.Fields(2).Value
ActiveSheet.Range(“D” & CStr(offset)).Value = rst.Fields(3).Value
rst.MoveNext
offset = offset + 1
Loop

rst.Close
conn.Close

Set rst = Nothing
Set conn = Nothing

MsgBox (“Operacion Finalizada”)

Resultados

Para finalizar solo debemos ejecutar nuestro codigo oprimiendo F5 de nuestro teclado o el boton con el triangulo verde como se muestra en la figura 6.0.

Figura 6.0.

Despues de unos segundos podremos ver el resultado como se muestra en la figura 7.0.

Figura 7.0.

Bibliografia

[1].- XLTODAY (2003-2012), Importar tabla Access a Excel , Recuperado Marzo 06, 2012, http://www.xltoday.net/vba_ejemplos_accessaexcel.asp

[2].- Microsoft (2012), ConnectionString, ConnectionTimeout, and State Properties Example (VB) , Recuperado Marzo 06, 2012, http://msdn.microsoft.com/en-us/library/windows/desktop/ms675960%28v=vs.85%29.aspx

Advertisements

Introduccion

En mi publicacion anterior explique  como crear un procedimiento almacenado con SQL server 2008 express edition y ejecutarlo desde el SQL analyzer, ahora me gustaria mostrar como ejecutar un procedimiento almacenado desde una aplicacion de escritorio desarrollada en Visual Studio 2010 y C#.

Para este articulo utilizare el procedimiento almacenado del articulo anterior como ejemplo para esta practica, si no sabes como crear un Stored Procedure o Procedmiento almacenado puedes ver lo dando clic sobre este link

El primer paso es crear un proyecto WindowsForm , el cual nombraremos “ExecutingStoredProcedure” en Visual Studio 2010 y usando como lenguaje de programacion C#, en caso de que no sepas como crear un proyecto en VS2010 puedes  ver lo dando clic sobre este link, dichas instrucciones trabajan bien con los frameworks 2.0, 3.0 y 4.0 por lo que no deberian tener problemas al trabajar con versiones antiguas del del Visual Studio 2005 o 2008.

Despues de tener listo nuestro proyecto de WindowsForm agregaremos los siguientes controles :

 1 listView con las siguientes dimensiones: 386, 168.

2 Botones con las siguientes dimenciones: 75, 4.

Despues de insertar nues tros controles, agreagaremos dos culumnas a nuestro listView las cuales llamaremos “Usuario” y “Contraseña” estos campos pertenecen a una tabla llamada “Table_Users” la cual fue creada previamente para este ejercicio, dicha tabla contiene el registro de unos ususarios y sus respectivas contraseñas como se muestra en la figura 1.0.

  Figura 1.0.

Luego de haber agregado nuestras columnas en nuesttro listView en donde mostraremos el contenido de la tabla, cambiaremos el texto de nuestros botones por “Query” y “Stored Procedure” respectivamente como se muestra en la figura 2.0.

Figura 2.0.

Codificacion

Ahora empezaremos a modelar la logica de negocios de nuestra aplicacion.

El siguiente codigo realiza una consulta de la Tabla_Users y despues lo vacia al listView para que el usuario pueda verlo.

con = new SqlConnection(@”Data Source = HOME-A30C6C1EFD\SQLEXPRESS; Initial Catalog = Test; Integrated Security = SSPI;”);
con.Open();
query = “SELECT * FROM Table_Users”;
cmd = new SqlCommand(query, con);
dr = cmd.ExecuteReader();
while(dr.Read())
{
//Este renglon te permite insertar cada uno de los datos obtenidos de la consulta en la “Usuario”
value = listView1.Items.Add(dr.GetValue(0).ToString());
//Este renglon te permite insertar cada uno de los datos obtenidos de la consulta en la “Contraseña”
value.SubItems.Add(dr.GetValue(1).ToString());
}
con.Close();

Ahora veremos como se como realizar la misma operacion pero esta vez  ejecutando un procedimiento almacenado “MiPrimerStoredProcedure”.

con = new SqlConnection(@”Data Source = HOME-A30C6C1EFD\SQLEXPRESS; Initial Catalog = Test; Integrated Security = SSPI;”);
con.Open();
// crear un objecto tipo command  para identificar
// el procedimiento almacenado en esta caso ingresamos nombre del procedimiento en lugar de un query.
cmd = new SqlCommand(“MiPrimerStoredProcedure”,con);
// Indicamos al sistema el tipo de comando a ejecutar en este caso nuestro procedimiento almacenado
// Por dafault el metodo SqlCommand() recibe un query y por eso es necesario definirlo
cmd.CommandType = CommandType.StoredProcedure;
// execute the command
dr = cmd.ExecuteReader();
while (dr.Read())
{
value = listView1.Items.Add(dr.GetValue(0).ToString());
value.SubItems.Add(dr.GetValue(1).ToString());
}
con.Close();

Como podran observar en ambos segmentos de codigo solo varian en una linea de codigo lo cual nos hace questionar de que nos sirve este tipo de funciones que nos da SQL si no vemos reduccion de codigo?, como recordaran un procedimiento almacenado es una funcion o rutina el cual puede ejecutar uno o mas queries lo que nos da mucha ventaja al momento de ejecutarlos ya que no tendremos que escribir cada una de las funciones para nuestras consultas en lo cual nos ahorra tiempo en este tipo de  tareas.

A continuacion mostrare el codigo completo:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace ExecutingStoredProcedure
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string query;
string stored_procedure = “MiPrimerStoredProcedure”;//Esta variable almacena el nombre del stored procedure que vamos a ejecutar
SqlConnection con;
SqlCommand cmd;
SqlDataReader dr;
ListViewItem value;
void Query_Select()
{
con = new SqlConnection(@”Data Source = HOME-A30C6C1EFD\SQLEXPRESS; Initial Catalog = Test; Integrated Security = SSPI;”);
con.Open();
query = “SELECT * FROM Table_Users”;
cmd = new SqlCommand(query, con);
dr = cmd.ExecuteReader();
while(dr.Read())
{
//Este renglon te permite insertar cada uno de los datos obtenidos de la consulta en la “Usuario en nuestro listView en su respectiva columna”
value = listView1.Items.Add(dr.GetValue(0).ToString());
//Este renglon te permite insertar cada uno de los datos obtenidos de la consulta en la “Contraseña en nuestro listView en su respectiva columna”
value.SubItems.Add(dr.GetValue(1).ToString());
}
con.Close();
}
void Stored_Procedure()
{
con = new SqlConnection(@”Data Source = HOME-A30C6C1EFD\SQLEXPRESS; Initial Catalog = Test; Integrated Security = SSPI;”);
con.Open();
// 1. create a command object identifying
// the stored procedure
cmd = new SqlCommand(stored_procedure,con);
// 2. set the command object so it knows
// to execute a stored procedure
cmd.CommandType = CommandType.StoredProcedure;
// execute the command
dr = cmd.ExecuteReader();
// iterate through results, printing each to Listview
while (dr.Read())
{
value = listView1.Items.Add(dr.GetValue(0).ToString());
value.SubItems.Add(dr.GetValue(1).ToString());
}
con.Close();
}
private void button1_Click(object sender, EventArgs e)// Boton “Query”
{
listView1.Items.Clear();
Query_Select();
}

private void button2_Click(object sender, EventArgs e)// Boton “Stored Procedure”
{
listView1.Items.Clear();
Stored_Procedure();
}
}
}

Por ultimo solo presionaremos el boton F5 y a continuacion el sistema mostrara nuestra aplicacion como se muestra en la figura 3.0.

Figura 3.0.

En este punto solo debemos dar click a cualquiera de nuestros botones para ejecutar nuestra consulta y acontinuacion obtener nuestros registros como seve en la figura 4.0.

Figura 4.0.

Conclusiones

Espero que este articulo les sea de utilidad y de su agrado y por mi parte considero este un tema esencial para cualquier programador ya debe conocer,el como invocar procedimientos almacenados desde sus interfaces o aplicaciones, y me gustaria agregar que esta semana tratare este mismo tema pero con el uso de parametros de entrada lo caul es de gran utildad al momento de realizar consultas refinadas, insercion de un nuevo registro y eliminacion de datos especificos.

Bibliografia

1.- Data Developer Center, Call stored procedure in C#, Recuperado Febrero 28, 2012,  http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/e9d17dcf-55ce-4a67-9a56-f5955638e51e

2.-How to execute a stored procedure fromC# program, Recuperado Febrero 28, 2012, http://stackoverflow.com/questions/1260952/how-to-execute-a-stored-procedure-from-c-sharp-program

Ingeniero en sistemas computacionales egresado de la Universidad Autonoma de Ciudad Juarez (UACJ) en el Instituto de Ingenieria  Tecnologia en Enero del 2009  con mas de 3 años  de experiencia en el desarrollo de aplicaciones de escritorio y web con tecnologia .Net. En Octubre del mismo año publica un articulo en la revista electronica Espectro Tecnologico del departamento de Ingenieria Electrica y Computacion de la UACJ titulado Adquisición de Datos de un Perfil de Temperatura y Sistema de Monitoreo mediante aplicación Web dicho articulo esta disponible en el siguiente link

Para dudas o sugerencias puedes hacerlas atravez de la siguiente direccion de correo electronico: joshua.e.olguin@gmail.com

Introduccion

El dia de hoy me gustaria tratar un tema que todos los que se dedican a las tecnologias de la informacion tiene contacto con el todo el tiempo los stored procedure el cual podemos definir como una rutina o procedimiento  almacenado directamente en una base de datos .  Las ventajas que tenemos con este tipo de rutinas es que son mas rapidos que las consultas que realizamos  de forma tradicional ya que se ejecutan directamente en la base de datos a y en consecuencia reducimos el trafico en la red.

Y segundo, reducimos lineas de codigo en nuestras aplicaciones ya que solo tenemos que invocar el nombre del stored procedure y la base de datos ejecutara la o las consultas de dicha rutina.

A continuacion les mostrare como crear nuestro stored procedure.

Pero primero necesitaremos tener algunas cosas antes de empezar este tutorial:

     1.- Un sistema de gestión de bases de datos en este caso Microsoft SQL

            Server 2008 express edition .

2.-  Una base de datos construida en el interior del sistema de gestión debase

            de datos.

Depues de tener listo todo lo que necesitamos procedemos a ejecutar SQL Server Management Studio desde Inicio »Todos los programas » Microsoft SQL Server 2008 » SQL Server Management Studio.

Luego el DBSM solicitara que introduzcas tu nombre de usuario y password para conceder el acceso a la base de datos que vamos a utilizar en este ejemplo como se muestra en la figura 1.0.

Figura 1.0.

En  mi caso solo me pide la autentificacion de windows para entrar a la base de datos.  Luego de entrar seleccionamos la base de datos en la que vamos a trabajar y buscamos la carpeta  Programmability y luego la carpeta  Stored Procedures y despues click derecho y seleccionamos New Stored Procedure como se muestra en la figura 2.0.

Figura 2.0.

Como pudieron observar a la izquierda se muestran otros procedimientos ya guardados los cuales pueden ser invocados in cualquier momento desde el SQL analyzer o desde una plicacion web o desktop, por el momento solo les enseñare como crear y ejecutar un Stored Procedure desde el SQL organizer.

Despues aparecera en la pantalla una ventana en donde empezaremos a trabajar para crear nuestro Stored Procedure como se ve en la figura 3.0.

Figura 3.0.

Ahora procederemos a borrar el contenido de la ventana y escribir el siguiente codigo:

CREATE PROCEDURE MiPrimerStoredProcedure
AS
SELECT
*
FROM
Table_Users
Go

Y finalmente presionamos el boton Execute o F5 para ejecutar nuestro comando para crear el Stored Procedure y de no haber errores el sistema desplegara un mensaje debajo de nuestro stored procedure indicandonos que la operacion ha sido exitosa como se muestra en la figura 4.0.

Figura 4.0.

A continuacion seleccionamos la carpeta Stored Procedure y presionamos para confirmar que nuestro metodo esta guardado en nuestra base de datos como se observa en la figura 5.0.

Figura 5.0.

Ahora explicare el codigo:

La primera linea se escribe  el nombre del Stored que deseamos, y despues del  AS se escribe la(s) consulta(s) que queramos.

Para finalizar este articulo ejecutaremos nuestro Stored Procedure de la siguiente manera, primero escribiremos el siguiente comando en la  misma ventana donde creamos nuestro procedimiento:

EXEC MiPrimerStoredProcedure

Y por ultimo seleccionamos nuestro comando y presionamos execute o F5 y el sistema mostrara inmediatmente el resultado de nuestra consulta como se muestra en la figura 6.0.

Figura 6.0.

Espero que este tutorial les sea de utilidad a todos los principiantes de SQL server 2008 y espero en esta semana publicar un articulo en el cual podremos ver como ejecutar nuestro procedimiento desde visual studio 2010 y C#.

Bibliografia

[1].- Tom O’Neill (2012), SQL Server Stored Procedures for Beginners , Recuperado Enero 25, 2012 http://www.sql-server-performance.com/2003/stored-procedures-bas

[2].- Mis Trucos .Net (2012), Crear un Stored Procedure , Recuperado Enero 25, 2012 http://www.mistrucos.net/truco-sql-server-crear-un-stored-procedure-466.htm

En esta ocasion veremos como obtener el nombre de una computadora y su IP. Para esto utilizaremos el namespace System.net el cual provee una interface de programacion simple para muchos de los protocolos de redes usados actualmente y los metodos GetHostName y  GetHostAddresses.

El primer metodo obtiene el nombre de la computadora local y retorna un valor de tipo string.

Mientras que el segundo metodo obtiene la ip de una computadora apartir del nombre de la computadora y devuelve un valor por medio de un arreglo de tipo IPAddress o en otras palabras un arreglo de bytes.

Codificacion

A continuacion presento el codigo para obtener el nombre e IP de la computadora los cuales seran desplegados en pantalla por medio de dos labels, dicho codigo es insertado dentro del evento click del boton.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;

namespace GetIPaddress
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string strHostName = string.Empty;
// Getting Ip address of local machine…
// First get the host name of local machine.
strHostName = Dns.GetHostName();
// Then using host name, get the IP address list..
IPAddress[] hostIPs = Dns.GetHostAddresses(strHostName);
for (int i = 0; i < hostIPs.Length; i++)
{
label1.Text = “Direccion IP: ” + hostIPs[i].ToString();
}
label2.Text = “Nombre de la computadora: ” + strHostName;
}
}
}

Resultados

Despues de insertar el codigo solo debemos compilar el programa y presionar el boton para obtener el siguiente resultado como se muestra en la figura 1.0.

Figura 1.0.

Espero que este programa les sea de utilidad ya que resulta muy util si queremos desarrollar una aplicacion de auditoria de hardware y software como Total Network Inventory 2.0.4.

Bibliografia

[1].- James Osborne (Noviembre 29, 2011), Dns.GetHostName Method , Recuperado Enero 22, 2012 http://msdn.microsoft.com/en-us/library/system.net.dns.gethostname.aspx

[2].- Niels Grove-Rasmussen(Enero 3, 2012), Dns.GetHostAddresses Method , Recuperado Enero 22, 2012 http://msdn.microsoft.com/en-us/library/system.net.dns.gethostaddresses .aspx

En este articulo me gustaria hablar acerca de como generar la clave unica de registro de poblacion o CURP con Visual Studio y C#

Que es la CURP?

Podemos definirla como un mecanismo que permite registrar en forma individual a todas las personas que residen en el territorio nacional, así como a los mexicanos que radican en el extranjero.

Como se genera la CURP?

Se genera  a partir de los datos básicos de la persona como son nombre(s), apellido paterno, apellido materno, sexo, fecha y lugar de nacimiento,que se encuentran en el acta de nacimiento, documento migratorio, carta de naturalización o certificado de nacionalidad mexicana.

Estructura y criterios para generar la CURP

La clave tiene una longitud de 18 caracteres y es de  composicion  alfanumérica (combina números y letras) acontinuacion podranver como es generada la CURP a partir de los datos antes descritos en las figuras 1.0 y 1.1.

Figura 1.0. Figura 1.1.

Como podran observar los ultimos dos digitos de la clave CURP son generados por la secretaria de gobernacion por lo cual este programa solo genera los primeros 16 digitos.

Codificacion

A continuacion presento el codigo para el programa el cual consta de varios metodos y una clase con la cual el programa puede verificar si la fecha fue introducida de forma correcta o no.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace App_CURP
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int estado = 0;
private int genero = 0;
private string EntidadFederativa = string.Empty;
private char GeneroSolicitante;
private char PL_PApellido;
private char PV_PApellido;
private char PL_SApellido;
private char PL_Nombre;
private char PC_PApellido;
private char PC_SApellido;
private char PC_Nombre;
private string dia = string.Empty;
private string mes = string.Empty;
private string año = string.Empty;
private string CURP = string.Empty;

public void Posicion_5_10(string fecha)
{
int barrido = 0;
int contador = 0;
char verificador;
char[] DofB = fecha.ToCharArray();
int longitud = DofB.Length;
while (barrido < longitud)
{
verificador = DofB[barrido];
if (verificador == ‘/’)
{
contador++;
}
else if (contador == 0 && verificador != ‘/’)
{
dia = dia + DofB[barrido];
}
else if (contador == 1 && verificador != ‘/’)
{
mes = mes + DofB[barrido];
}
else if ((contador == 2 && verificador != ‘/’) && (barrido == 8 || barrido == 9))
{
año = año + DofB[barrido];
}
barrido++;
}
}
public void Posición_1_4_14_16(string nombre, string primer_apellido, string segundo_apellido)
{
char[] name = nombre.ToCharArray();
char[] Lastname1 = primer_apellido.ToCharArray();
char[] Lastname2 = segundo_apellido.ToCharArray();
int lenght1 = name.Length;
int lenght2 = Lastname1.Length;
int lenght3 = Lastname2.Length;
bool vocal = false;
bool consonante_1 = false;
bool consonante_2 = false;
bool consonante_3 = false;
for (int i = 0; i < lenght2; i++)
{
//La letra inicial del primer apellido
if (i == 0)
{
PL_PApellido = Lastname1[i];
}
//La primera vocal interna del primer apellido (a,e,i,o,u)
else if (Lastname1[i] == ‘A’ && vocal == false)
{
PV_PApellido = Lastname1[i];
vocal = true;
}
else if (Lastname1[i] == ‘E’ && vocal == false)
{
PV_PApellido = Lastname1[i];
vocal = true;
}
else if (Lastname1[i] == ‘I’ && vocal == false)
{
PV_PApellido = Lastname1[i];
vocal = true;
}
else if (Lastname1[i] == ‘O’ && vocal == false)
{
PV_PApellido = Lastname1[i];
vocal = true;
}
else if (Lastname1[i] == ‘U’ && vocal == false)
{
PV_PApellido = Lastname1[i];
vocal = true;
}
/*******La primera consonante del primer apellido******/
else if (Lastname1[i] == ‘B’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘C’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘D’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘F’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘G’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘H’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘J’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘K’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘L’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘M’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘N’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘P’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘Q’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘R’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘S’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘T’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘V’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘X’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘Y’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
else if (Lastname1[i] == ‘Z’ && consonante_1 == false)
{
PC_PApellido = Lastname1[i];
consonante_1 = true;
}
}
/******La letra inicial del segundo apellido******/
for (int k = 0; k < lenght3; k++)
{
if (k == 0)
{
PL_SApellido = Lastname2[k];
}
/*******La primera consonante del segundo apellido******/
else if (Lastname2[k] == ‘B’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘C’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘D’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘F’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘G’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘H’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘J’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘K’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘L’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘M’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘N’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘P’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘Q’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘R’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘S’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘T’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘V’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘X’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘Y’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
else if (Lastname2[k] == ‘Z’ && consonante_2 == false)
{
PC_SApellido = Lastname2[k];
consonante_2 = true;
}
}
/******La letra inicial del nombre******/
for (int j = 0; j < lenght1; j++)
{
if (j == 0)
{
PL_Nombre = name[j];
}
/*******La primera consonante del segundo apellido******/
else if (name[j] == ‘B’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘C’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘D’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘F’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘G’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘H’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘J’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘K’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘L’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘M’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘N’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘P’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘Q’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘R’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘S’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘T’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘V’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘W’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘X’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘Y’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
else if (name[j] == ‘Z’ && consonante_3 == false)
{
PC_Nombre = name[j];
consonante_3 = true;
}
}
}
private void btnCURP_Click(object sender, EventArgs e)
{
if (txtN1.Text.Length == 0)
{
MessageBox.Show(“Debes introducir tu nombre”, “Error Critico”, MessageBoxButtons.OK, MessageBoxIcon.Error);

}
if (txtAP.Text.Length == 0)
{
MessageBox.Show(“Debes introducir tu Apellido Paterno”, “Error Critico”, MessageBoxButtons.OK, MessageBoxIcon.Error);

}
if (txtAM.Text.Length == 0)
{
MessageBox.Show(“Debes introducir tu Apellido Materno”, “Error Critico”, MessageBoxButtons.OK, MessageBoxIcon.Error);

}
else
{
string fecha = mTxtFecha.Text;
string nombre = txtN1.Text;
string ApellidoPaterno = txtAP.Text;
string ApellidoMaterno = txtAM.Text;
RegEx verificar = new RegEx();
bool resultado = verificar.Verificar_Fecha(fecha);
if (resultado == true)
{
Posición_1_4_14_16(nombre, ApellidoPaterno, ApellidoMaterno);
Posicion_5_10(fecha);
CURP = CURP + PL_PApellido + PV_PApellido + PL_SApellido + PL_Nombre + año + mes + dia + GeneroSolicitante + EntidadFederativa + PC_PApellido + PC_SApellido + PC_Nombre;
txtCURP.Text = CURP;
}
else
MessageBox.Show(“Fecha Invalida”, “Error Critico”,MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void cmbEstados_SelectedIndexChanged(object sender, EventArgs e)
{

estado = cmbEstados.SelectedIndex + 1;
switch (estado)
{
//AGUASCALIENTES
case 1:
EntidadFederativa = “AS”;
break;
//BAJA CALIFORNIA
case 2:
EntidadFederativa = “BC”;
break;
//BAJA CALIFORNIA SUR
case 3:
EntidadFederativa = “BS”;
break;
//CAMPECHE
case 4:
EntidadFederativa = “CC”;
break;
//COAHUILA
case 5:
EntidadFederativa = “CL”;
break;
//COLIMA
case 6:
EntidadFederativa = “CM”;
break;
//CHIAPAS
case 7:
EntidadFederativa = “CS”;
break;
//CHIHUAHUA
case 8:
EntidadFederativa = “CH”;
break;
//DISTRITO FEDERAL
case 9:
EntidadFederativa = “DF”;
break;
//DURANGO
case 10:
EntidadFederativa = “DG”;
break;
//GUANAJUATO
case 11:
EntidadFederativa = “GT”;
break;
//GUERRERO
case 12:
EntidadFederativa = “GR”;
break;
//HIDALGO
case 13:
EntidadFederativa = “HG”;
break;
//JALISCO
case 14:
EntidadFederativa = “JC”;
break;
//MEXICO
case 15:
EntidadFederativa = “MC”;
break;
//MICHOACAN
case 16:
EntidadFederativa = “MN”;
break;
//MORELOS
case 17:
EntidadFederativa = “MS”;
break;
//NAYARIT
case 18:
EntidadFederativa = “NT”;
break;
//NUEVO LEON
case 19:
EntidadFederativa = “NL”;
break;
//OAXACA
case 20:
EntidadFederativa = “OC”;
break;
//PUEBLA
case 21:
EntidadFederativa = “PL”;
break;
//QUERETARO
case 22:
EntidadFederativa = “QT”;
break;
//QUINTANA ROO
case 23:
EntidadFederativa = “QR”;
break;
//SAN LUIS POTOSI
case 24:
EntidadFederativa = “SP”;
break;
//SINALOA
case 25:
EntidadFederativa = “SL”;
break;
//SONORA
case 26:
EntidadFederativa = “SR”;
break;
//QUINTANA ROO
case 27:
EntidadFederativa = “QR”;
break;
//TABASCO
case 28:
EntidadFederativa = “TC”;
break;
//TAMAULIPAS
case 29:
EntidadFederativa = “TS”;
break;
//TLAXCALA
case 30:
EntidadFederativa = “TL”;
break;
//VERACRUZ
case 31:
EntidadFederativa = “VZ”;
break;
//YUATAN
case 32:
EntidadFederativa = “YN”;
break;
//ZACATECAS
default:
EntidadFederativa = “ZS”;
break;
}
}

private void cmbGenero_SelectedIndexChanged(object sender, EventArgs e)
{
genero = cmbGenero.SelectedIndex + 1;
switch (genero)
{
case 1:
GeneroSolicitante = ‘H’;
break;
default:
GeneroSolicitante = ‘M’;
break;
}
}
}
}

Este el codigo de la clase.

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace App_CURP
{
class RegEx
{
private Regex date;

public bool Verificar_Fecha(string fecha)
{
date = new Regex(“\\d{2}/\\d{2}/\\d{4}”);
Match verificar;
verificar = date.Match(fecha);
if (verificar.Success)
return true;
else
return false;
}
}
}

 Resultados del Programa

A hora verificaremos el correcto funcionamiento de nuestro programa mediante el siguiente ejemplo:

Nombre: Concepción.

Apellido Paterno y Materno: Salgado Briseño.

Genero: mujer.

Fecha de Naciemiento:  26 de junio de 1956.

Lugar de Nacimiento: México, Distrito Federal.

CURP: SABC560626MDFLRN09

Despues de insertar los datos en el programa deberas de obtener la CURP claro sin los ultimos dos digitos “09” como puede ver en la figura 1.3.

Figura 1.3.

Bibliografia

1.- Instructivo normativo para la asignación de la clave única de registro de población http://www.amsnogales.com.mx/DocumentosPagin/CapSemE12011 1011172426.pdf recuperado:5 de Octubre del 2011.

El proposito de este tutorial es mostrar como compilar un programa de Java en MS-DOS para esto se requiere tener previamente instalado el compilador Java (JDK 1.6.0_19).

PASO 1: Crearemos nuestro programa con un editor de texto simple como es Notepad e insertamos el siguiente bloque de código como se muestra en la figura 1.0.

 

class HelloworldApp

{

     public static void main(String[] args)

     {

          System.out.println(“Hello World”);

     }

}

Figura 1.0.

PASO 2: Despues guardamos el fichero fuente con nombre HelloWorldApp.java en la carpeta: C:\Users\UBSC\Documents\AppJava\Prac1, como se muestra en la figura 2.0.

Figura 2.0.

PASO 3: Abrimos una ventana DOS desde Inicio >> Accesorios >> Command Prompt como se muestra en la figura 3.0.

Figura 3.0.

Y en ella escribiremos las siguientes comandos:

C:> cd C:\Users\UBSC\Documents\AppJava\Prac1
C:\Users\UBSC\Documents\AppJava\Prac1> javac HelloWorldApp.java

Como se muestra en la figura 4.0.

Figura 4.0.

Si no hay ningún error en el proceso de compilación, se generara un fichero llamado HelloWorldApp.class en el directorio anterior como se muestra en la figura 5.0.

PASO 4: Finalmente estamos listos para ejecutar nuestro programa, en la misma ventana en MS-DOS escribimos el siguiente comando en el cual se escribe el nombre del archivo (.class) que se genero durante la compilación de nuestro archivo (.java) como se muestra en la figura 6.0.

C:\Users\UBSC\Documents\AppJava\Prac1> java HelloWorldApp

Figura 6.0.

Finalmente obtenemos nuestro resultado que en este caso es la frase “Hello World” en pantalla.

En esta primera aplicacion quisiera concentrarme en como generar una salidad en la pantalla pero no en un messageBox como java, visua basic o C# sino utilizando un comando que nos permite insertar el resultado de una operacion en una celda de excel.

Talvez este tipo de sintaxis no sea complicado para los programadores experimentados en VB.

Antes que nada primero debemos crear nuestra macro si no tienes idea de como crear una macro puedes ver mi otro articulo llamado “Macros en Excel” para que veas los pasos aseguir.

A esta macro la llamaremos “MyFirstMacro” despues de crearla detenemos la grabacion y damos click a la pestaña vista>> macros >> ver macros como se muestra en la figura 1.0.

Figura 1.0.

Despues seleccionaremos nuestra macro y daremos click en el boton modificar como se muestra en la figura 2.0.

Figura 2.0.

A continuacion el sistema mostrara en pantalla un procedimiento con el nombre de nuestra macro como se ve en la figura 3.0.

 Figura 3.0.

A diferencia de la primera macro que creamos esta viene vacia ya que no grabamos nada para esto nos dispondremos a insertar dentro de nuestro  procedimiento la siguiente liena de codigo la cual nos permitira insertar un string en la celda” A1″ co,o se muestra a continuacion.

Sub My_First_Macro()
ActiveSheet.Range(“A1”).Value = “AB”
End Sub

No olviden que esto es un ejemplo y por lo tanto ustedes pueden cambiar tanto el rango como tambien el valor a insertar.

Por ultimo solo ejecutamos la macro pulsando la tecla F5 o dando click en el boton como se muestra en la figura 4.0.

Figura 4.0.

Y depues vamos anuestra hoja de excel para poder apreciar nuestro resultado como se muestra en la figura 5.0.

Figura 5.0.

Macros en Excel

Introduccion

Hoy en dia, muchos departamentos de IT han empezado a trabajar con aplicaciones desarroladas en Microsoft Office  denominadas Macros.  Dichas aplicaciones permiten automatizar procesos repetitivos como por ejemplo, aplicar el mismo formato a un grupo de celdas de un libro en excel el cual  te solicitan que realizes todos los días  o realizar un informe de ventas mensual, en el cual debes insertar todos las ventas registradas, las cuales pueden estar almacenadas en una base de datos.

Existen tres grandes ventajas al usar este tipo de aplicaciones. Primero que nada,  se puede automatizar practicamente cualquier tarea que se realiza en office .

Segundo, no se requiere invertir mucho tiempo para capacitar a los usuarios en el manejo de los programas ya que todo mundo esta familiarizado con la GUI de office.

Finalmente, no requieres preocuparte de problemas de  conpatibilidad e instalacion ya que solo requieres tener office en la computadora donde se ejecutara la aplicacion

Durante los siguientes renglones explicare a detalle como crear una macro en MS Office 2007

Como Grabar una macro en Excel

  • El primer paso es abrir el una hoja de Excel 2007 como se muestra en la figura 1.0.

Figura 1.0.

  • Despues  vamos a la barra de Herramientas >> Vista>>Macro >> Grabar nueva macro, como se muestra en la figura 2.0.

Figura 2.0.

  • Despues aparecera la siguiente una ventana  la cual nos solicitara escribir el nombre para la macro y de manera opcional una descripcion de la misma como se muestra en la figura 3.0.

Figura 3.0.

  • Ahora podras ver en la parte inferior izquierda un icono como se muestra en la figura 4.0, el cual indica que podemos grabar cualquier tarea que realizemos en ese momento.

Figura 4.0.

  •  Ahora me dispondre  realizar un formato para tabla y pondre pausa al macro en el icono de la figura anterior como se muestra en la figura 5.0.

Figura 5.0.

  • Ahora borramos la tabla y ejecutamos la macro desde la barra de Herramientas >>Vista>> Macro >>Ver macros como se muestra en la figura 6.0.

Figura 6.0.

  • Luego, Seleccionamos la macro y damos clic en “Ejecutar” como se muestra en la figura 7.0.

Figura 7.0.

  • Finalmente, el sistema desplegara de  nueva cuenta la tabla que creamos al principio.
  • Por ultimo si queremos guardar nuestra aplicacion, para esto solo vamos a Boton office >> Guardar como >> Libro de Excel habilitado para macros como se muestra figura 8.0.

Figura 8.0.

  • Y a continuacion escribimos el nombre del archivo y el directorio a donde vamos a guardarlo como se muestra en la figura 9.0.

Figura 9.0.

  • Cada vez que quiereas ejecutar la macro debes habilitar la opcion “Habilitar este contenido”, como se nuestra en la figura 10.0.

Figura 10.0.

***Nota: Recuerden que siempre hay que darle el honor a quien merece por lo que siempre documenten de donde sacaron la infomacion.

Bibliografia

[1].- Trucos de Excel en español xltoday.net, (2011),Cómo grabar una macro Excel VBA, Recuperado mayo 8, 2011, http://www.xltoday.net/vba_macros_grabarunmacro.asp

Calculadora en C#

El objetivo de este blog es mostrar como crear de una calculadora, como la que podemos observar y usar en cualquier Windows.

Para poder comenzar es necesario tener conocimiento previo en los siguientes puntos:

1. Crear un proyecto windows form application.

2. Insercion de elementos del Toolbox en un windows form:

a) Textbox.

b) Label.

c) Button.

3. Tipo de datos:

a) Float.

b) String.

4. Operadores aritmetcos:

a) “+” Suma aritmética.

b) “-”  Resta aritmética.

c) “*”  Producto aritmética.

d) “/”  División aritmética.

e) “√”  Raíz cuadrada.

5. Modificar propiedades de la forma y elementos del texbox.

6. Control de flujo condicional: if…else.

7. Definicion de metodos.

 

Instrucciones

1.- Crear una aplicacion windows form y nombrarla Calculadora.

2.- Elaborar la interfaz de nuestra calculadora. Para este paso van a necesitar los siguientes elementos:

· 10 botones para los numeros del 1 al 0.

· 2 botones para mostrar resultado y borrar pantalla.

· 4 botones para seleccionar la operacion que deseemos realizar.

Despues realizaremos los siguientes cambios en las siguientes propiedades de los botones:

· Text: numeros (1 al 0), clear (CE), igual (=) y operadores logicos (+, -, *, /,√).

· ForColor: Dependera del tipo de boton ejemplo: negro para operaciones, azul para resultado e igual y rojo para digitos.

· Font: Microsoft Sans Serif,regular,8

· Size: 33,33.//tamaño de los botones

Al final obtendrá algo como se muestra en la figura.

 

3. A continuación mostraré el código de la calculadora.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Calculadora
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
///Summary
///Calculator Program in C#.
///the objective of this program is put into practice everything
///that we have seen the last course for example:
///a)Declarations of variables.
///b)if-else(control structures)
//Declaration of global variables
double numero1 = 0, numero2 = 0, resultado = 0;
string Display = string.Empty, operador = string.Empty;
///The global variable is a variable that is access
///for all of methods in the program
//Declaration  of methods
public void Operacion(string operacion)
{
if (operador == “√”)
{
textboxDisplay.Clear();
resultado = Math.Sqrt(numero1);
}
else
{
numero2 = Convert.ToDouble(textboxDisplay.Text);
if (operador == “+”)
{
resultado = numero1 + numero2;
}
else if (operador == “-“)
{
resultado = numero1 – numero2;
}
else if (operador == “*”)
{
resultado = numero1 * numero2;
}
else if (operador == “/”)
{
resultado = numero1 / numero2;
}
}
///if you want to check out about this method, you can do it throught
///of this website  http://www.csharp-examples.net/string-format-double/
///the following line show how to format float numbers to string
///and you can limit the decimal places in C#.
this.textboxDisplay.Text = string.Format(“{0:#,###.##}”, resultado);
}

private void button1_Click(object sender, EventArgs e)
{
Display = textboxDisplay.Text;
textboxDisplay.Text = Display + “1”;
}
private void button2_Click(object sender, EventArgs e)
{
Display = textboxDisplay.Text;
textboxDisplay.Text = Display + “2”;
}

private void button3_Click(object sender, EventArgs e)
{
Display = textboxDisplay.Text;
textboxDisplay.Text = Display + “3”;
}

private void button4_Click(object sender, EventArgs e)
{
Display = textboxDisplay.Text;
textboxDisplay.Text = Display + “4”;
}

private void button5_Click(object sender, EventArgs e)
{
Display = textboxDisplay.Text;
textboxDisplay.Text = Display + “5”;
}

private void button6_Click(object sender, EventArgs e)
{
Display = textboxDisplay.Text;
textboxDisplay.Text = Display + “6”;
}

private void button7_Click(object sender, EventArgs e)
{
Display = textboxDisplay.Text;
textboxDisplay.Text = Display + “7”;
}

private void button8_Click(object sender, EventArgs e)
{
Display = textboxDisplay.Text;
textboxDisplay.Text = Display + “8”;
}

private void button9_Click(object sender, EventArgs e)
{
Display = textboxDisplay.Text;
textboxDisplay.Text = Display + “9”;
}

private void button0_Click(object sender, EventArgs e)
{
Display = textboxDisplay.Text;
textboxDisplay.Text = Display + “0”;
}

private void buttonSum_Click(object sender, EventArgs e)
{
numero1 = Convert.ToDouble(textboxDisplay.Text);
operador = “+”;
textboxDisplay.Clear();
}

private void buttonRes_Click(object sender, EventArgs e)
{
numero1 = Convert.ToDouble(textboxDisplay.Text);
operador = “-“;
textboxDisplay.Clear();
}

private void buttonMul_Click(object sender, EventArgs e)
{
numero1 = Convert.ToDouble(textboxDisplay.Text);
operador = “*”;
textboxDisplay.Clear();
}

private void buttonDiv_Click(object sender, EventArgs e)
{
numero1 = Convert.ToDouble(textboxDisplay.Text);
operador = “/”;
textboxDisplay.Clear();
}

private void buttonSQRT_Click(object sender, EventArgs e)
{
numero1 = Convert.ToDouble(textboxDisplay.Text);
operador = “√”;
Operacion(operador);
}

private void buttonR_Click(object sender, EventArgs e)
{
Operacion(operador);
}

private void buttonC_Click(object sender, EventArgs e)
{
textboxDisplay.Clear();
}

private void buttonP_Click(object sender, EventArgs e)
{
Display = textboxDisplay.Text;
textboxDisplay.Text = Display + “.”;
}
}
}

Por ultimo solo me queda decir que el botón “+/-” y “.” todavía no están listos por lo que si tienen sugerencias o dudas pueden hacerlo a través del libro de visitas o por correo electrónico quetzalcoatlfx05@hotmail.com