Libro C#
Libro C#
Libro C#
INTRODUCCIÓN
1
VISUAL C# APLICACIÓN Y DESARROLLO
#include <stdio.h>
void main()
{
printf( "Hola mundo" );
}
2
VISUAL C# APLICACIÓN Y DESARROLLO
#include <iostream>
void main()
{
std::cout << "Hola mundo";
}
3
VISUAL C# APLICACIÓN Y DESARROLLO
(Windows Forms), así como Smart Clients, Aplicaciones Web (ASP .Net),
Aplicaciones Móviles, entre otras.
4
VISUAL C# APLICACIÓN Y DESARROLLO
Un escenario común de hoy en día consiste en modelar una aplicación web que
utiliza servicios de una capa estructurada con servicios web. Además los servicios
son accedidos desde gadget en Live y desde aplicaciones de escritorio para la
barra de tareas de Windows que monitorean ciertas variables. Se utilizan diversas
tecnologías y todas ellas programadas con C#. C# es ideal para cualquier punto
de este escenario.
5
VISUAL C# APLICACIÓN Y DESARROLLO
LA PLATAFORMA .NET
6
VISUAL C# APLICACIÓN Y DESARROLLO
.NET FRAMEWORK
Antes del modelo COM, las aplicaciones estaban formadas por entidades
totalmente separadas con poca o ninguna integración. Al utilizar COM,
es posible integrar componentes dentro de una aplicación y entre
aplicaciones exponiendo una serie de interfaces comunes. Sin embargo,
todavía es necesario que los desarrolladores escriban el código para
envolver, gestionar e integrar componentes y objetos.
7
VISUAL C# APLICACIÓN Y DESARROLLO
8
VISUAL C# APLICACIÓN Y DESARROLLO
9
VISUAL C# APLICACIÓN Y DESARROLLO
10
VISUAL C# APLICACIÓN Y DESARROLLO
11
VISUAL C# APLICACIÓN Y DESARROLLO
12
VISUAL C# APLICACIÓN Y DESARROLLO
PRACTICA
1. ¿Qué es MSIL?
13
VISUAL C# APLICACIÓN Y DESARROLLO
14
VISUAL C# APLICACIÓN Y DESARROLLO
15
VISUAL C# APLICACIÓN Y DESARROLLO
16
VISUAL C# APLICACIÓN Y DESARROLLO
17
VISUAL C# APLICACIÓN Y DESARROLLO
De -9.223.372.036.854.775.808 a
long 64 bits Entero largo
9.223.372.036.854.775.807
De 5E-324 a
double 64 bits Punto flotante largo
1,7E+308
Punto flotante
decimal 128 bits De 1E-28 a 7,9E+28
monetario
18
VISUAL C# APLICACIÓN Y DESARROLLO
TIPO CHAR
LAS CONSTANTES
19
VISUAL C# APLICACIÓN Y DESARROLLO
L Long 12L
UL Ulong 68687UL
F Float 10,19F
M Decimal 9,95M
\a Alerta (timbre)
\b Retroceso
\f Avance de página
\n Nueva línea
\r Retorno de carro
\t Tabulador horizontal
20
VISUAL C# APLICACIÓN Y DESARROLLO
\v Tabulador vertical
\0 Nulo
\\ Diagonal invertida
DECLARACIÓN DE VARIABLES
21
VISUAL C# APLICACIÓN Y DESARROLLO
PRÁCTICA
1. Declare una variable de cada tipo de datos.
22
VISUAL C# APLICACIÓN Y DESARROLLO
23
VISUAL C# APLICACIÓN Y DESARROLLO
24
VISUAL C# APLICACIÓN Y DESARROLLO
NOMBRE DESCRIPCIÓN
TEXT O TEXTO Sirve como identificador. Es decir,
una cadena para poner el título del
botón.
NAME O NOMBRE Para poder el nombre del botón,
con el que será referenciado en el
EDITOR DE CÓDIGO.
TEXTALIGN Para alinear el título dentro del
área del botón.
BACKCOLOR Para cambiar el color de fondo
para el botón
CURSOR Permite cambiar el cursor del
Mouse que tiene el botón por
defecto.
IMAGE Imagen que podemos mostrar en
el botón como complemento a su
título, o bien, en el caso de que no
asignemos un texto al botón, nos
permitirá describir su
funcionalidad.
IMAGEALIGN Para alinear la imagen dentro del
área del botón
BACKGROUNDIMAGE Permite especificar la imagen de
fondo para el botón.
FLATSTYLE Permite cambiar el tipo de
resaltado.
FONT Permite cambiar el tipo de fuente y
del texto del botón y todas las
características correspondiente a la
fuente elegida.
PROPIEDAD DESCRIPCIÓN
TEXT O TEXTO Es la más importante, se utiliza para establecer el
texto que mostrará el control.
AUTOSIZE En trae permite que las dimensiones ajusten al largo y
25
VISUAL C# APLICACIÓN Y DESARROLLO
EJEMPLO:
26
VISUAL C# APLICACIÓN Y DESARROLLO
27
VISUAL C# APLICACIÓN Y DESARROLLO
28
VISUAL C# APLICACIÓN Y DESARROLLO
29
VISUAL C# APLICACIÓN Y DESARROLLO
30
VISUAL C# APLICACIÓN Y DESARROLLO
Para evitar errores que pueden ocurrir cuando el usuario digita otro
valor que no sean número sin querer haremos que sea obligatoria la
entrada de valores numéricos en las cajas de texto TV1 y TV2.
31
VISUAL C# APLICACIÓN Y DESARROLLO
}
9. Escriba el siguiente código para deshabilitar el texto o caja de
texto TTV2:
TV2.Enabled = false;
AHORA EL PROCEDIMIENTO SE VERÁ ASÍ:
private void FCALCULADORA_Load(object sender, EventArgs e)
{
TV2.Enabled = false;
}
10. Asegúrese que la propiedad CAUSESVALIDATION de cada
control TEXTBOX esté en TRUE (VERDADERO).
11. Haga clic sobre la caja de texto TV1.
1. Haga clic sobre la pestaña EVENTS O EVENTOS (EL RAYITO
AMARILLO) de la ventana PROPIEDADES O PROPERTIES para
mostrar la ventana de eventos.
.
2. Haga doble clic sobre el evento KEYPRESS para ver el
procedimiento del evento.
12. En el procedimiento
if (Char.IsNumber(e.KeyChar))
32
VISUAL C# APLICACIÓN Y DESARROLLO
{
e.Handled = false;
TV2.Enabled = true;
}
else
{
e.Handled = true;
MessageBox.Show("DEBE DIGITAR UN VALOR NUMÉRICO");
TV1.Focus();
TV2.Enabled = false;
}
}
13. Haga clic derecho en cualquier parte del editor de código y escoja
VIEW DESIGNER O VER DISEÑADOR.
33
VISUAL C# APLICACIÓN Y DESARROLLO
.
4. Haga doble clic sobre el evento KEYPRESS para ver el
procedimiento del evento.
15. En el procedimiento
34
VISUAL C# APLICACIÓN Y DESARROLLO
if (Char.IsNumber(e.KeyChar))
{
e.Handled = false;
}
else
{
e.Handled = true;
MessageBox.Show("DEBE DIGITAR UN VALOR NUMÉRICO");
TV2.Focus();
TV2.Clear();
}
EL PROCEDIMIENTO COMPLETO SE VE AHORA ASÍ:
}
}
16. Haga clic derecho en cualquier parte del editor de código y escoja
VIEW DESIGNER O VER DISEÑADOR.
35
VISUAL C# APLICACIÓN Y DESARROLLO
36
VISUAL C# APLICACIÓN Y DESARROLLO
TR.Text = Convert.ToString(r);
else
TV2.Focus();
37
VISUAL C# APLICACIÓN Y DESARROLLO
21. Vuelva al diseño del formulario y haga doble clic sobre el botón
RESTAR.
TR.Text = Convert.ToString(r);
else
TV2.Focus();
38
VISUAL C# APLICACIÓN Y DESARROLLO
23. Vuelva al diseño del formulario y haga doble clic sobre el botón
DIVIDIR.
TR.Text = Convert.ToString(r);
else
TV2.Focus();
39
VISUAL C# APLICACIÓN Y DESARROLLO
25. Vuelva al diseño del formulario y haga doble clic sobre el botón
MULTIPLICAR.
TR.Text = Convert.ToString(r);
40
VISUAL C# APLICACIÓN Y DESARROLLO
else
TV2.Focus();
27. Vuelva al diseño del formulario y haga doble clic sobre el botón
POTENCIA.
TR.Text = Convert.ToString(r);
else
41
VISUAL C# APLICACIÓN Y DESARROLLO
TV2.Focus();
29. Vuelva al diseño del formulario y haga doble clic sobre el botón
LIMPIAR.
TV1.Clear();
TV2.Clear();
TR.Clear();
TV1.Focus();
31. Vuelva al diseño del formulario y haga doble clic sobre el botón
SALIR.
namespace CALCULADORA_I
{
public partial class FCALCULADORA : Form
{
double v1, v2, r;
public FCALCULADORA()
{
42
VISUAL C# APLICACIÓN Y DESARROLLO
InitializeComponent();
}
private void TV1_KeyPress(object sender, KeyPressEventArgs e)
{
f (Char.IsNumber(e.KeyChar))
{
e.Handled = false;
TV2.Enabled = true;
}
else
{
e.Handled = true;
MessageBox.Show("DEBE DIGITAR UN VALOR NUMÉRICO");
TV1.Focus();
TV2.Enabled = false;
}
}
private void BSUMAR_Click(object sender, EventArgs e)
{
//SI TV1 Y TV2 ES NO ESTA EN BLANCO SE HACE LA OPERACION
{
//Convertimos los valores de las cajas de texto a double
//y almacenamos el resultado en las variables v1 y v2 tipo double
v1 = Convert.ToDouble(TV1.Text);
v2 = Convert.ToDouble(TV2.Text);
//Sumamos las variables v1 y v2
r = v1 + v2;
//Convertimos la variable de salida o de resultado a string
//para poder visualizar el resultado de la operación en la
//caja de texto TR.
TR.Text = Convert.ToString(r);
}
else
{
//DE LO CONTRARIO DE UN MENSAJE DE ERROR Y VUELVE A TV2
MessageBox.Show("NIGUNA DE LAS VARIABLES PUEDE DEJARSE EN BLANCO");
}
}
private void BRESTAR_Click(object sender, EventArgs e)
{
//SI TV2 ES NO ESTA EN BLANCO SE HACE LA OPERACION
43
VISUAL C# APLICACIÓN Y DESARROLLO
if (TV2.Text != "")
{
//Restamos las variables v1 y v2
r = v1 - v2;
//Convertimos la variable de salida o de resultado a string
//para poder visualizar el resultado de la operación en la
//caja de texto TR.
TR.Text = Convert.ToString(r);
}
else
{
//DE LO CONTRARIO DE UN MENSAJE DE ERROR Y VUELVE A TV2
MessageBox.Show("EL SEGUNDO VALOR NO PUEDE ESTAR EN BLANCO");
TV2.Focus();
}
}
{
//Dividimos las variables v1 y v2
r = v1 / v2;
//Convertimos la variable de salida o de resultado a string
//para poder visualizar el resultado de la operación en la
//caja de texto TR.
TR.Text = Convert.ToString(r);
}
else
{
//DE LO CONTRARIO DE UN MENSAJE DE ERROR Y VUELVE A TV2
MessageBox.Show("EL SEGUNDO VALOR NO PUEDE ESTAR EN BLANCO");
TV2.Focus();
}
}
private void BMULTIPLICAR_Click(object sender, EventArgs e)
{
//SI TV2 ES NO ESTA EN BLANCO SE HACE LA OPERACION
44
VISUAL C# APLICACIÓN Y DESARROLLO
}
private void BPTENCIA_Click(object sender, EventArgs e)
{
//SI TV2 ES NO ESTA EN BLANCO SE HACE LA OPERACION
{
//Elevamos a la potencia v1 al valor que tenga v2
r = Math.Pow(v1, v2);
//Convertimos la variable de salida o de resultado a string
//para poder visualizar el resultado de la operación en la
//caja de texto TR.
TR.Text = Convert.ToString(r);
}
else
{
//DE LO CONTRARIO DE UN MENSAJE DE ERROR Y VUELVE A TV2
MessageBox.Show("EL SEGUNDO VALOR NO PUEDE ESTAR EN BLANCO");
TV2.Focus();
}
}
private void BLIMPIAR_Click(object sender, EventArgs e)
{
TV1.Clear();
TV2.Clear();
TR.Clear();
TV1.Focus();
}
private void BSALIR_Click(object sender, EventArgs e)
{
45
VISUAL C# APLICACIÓN Y DESARROLLO
this.Close();
}
private void TV2_KeyPress(object sender, KeyPressEventArgs e)
{
if (Char.IsNumber(e.KeyChar))
{
e.Handled = false;
}
else
{
e.Handled = true;
MessageBox.Show("DEBE DIGITAR UN VALOR NUMÉRICO");
TV2.Focus();
TV2.Clear();
}
}
private void FCALCULADORA_Load(object sender, EventArgs e)
{
TV2.Enabled = false;
}
}
}
46
VISUAL C# APLICACIÓN Y DESARROLLO
3. Haga clic derecho en un área libre del escritorio y escoja View Code.
47
VISUAL C# APLICACIÓN Y DESARROLLO
48
VISUAL C# APLICACIÓN Y DESARROLLO
7. Escriba:
SUMAR();
49
VISUAL C# APLICACIÓN Y DESARROLLO
}
//Creación del método DIVIDIR.
private void DIVIDIR()
{
//Se invoca el mètodo entrada
ENTRADA();
RESULTADO = VALOR1 / VALOR2;
//Se invoca el mètodo salida
SALIDA();
}
//Creación del método POTENCIA.
private void POTENCIA()
{
//Se invoca el mètodo entrada
ENTRADA();
RESULTADO = Math.Pow(VALOR1,VALOR2);
//Se invoca el mètodo salida
SALIDA();
}
//Creación del método que convierte el contenido de las cajas de
//de texto del formulario en núneros.
private void ENTRADA()
{
try
{
VALOR1 = Double.Parse(TN1.Text);
VALOR2 = Double.Parse(TN2.Text);
}
catch
{
MessageBox.Show("ENTRADA INVALIDA. TRATE DE NUEVO");
TN1.Focus();
}
}
//Creación del método que convierte el contenido de la variable
//RESULTADO en texto y lo copia en el textbox TR
private void SALIDA()
{
TR.Text = Convert.ToString(RESULTADO);
}
//Método que limpia las cajas de texto o textboxs
private void LIMPIAR()
{
TR.Clear();
TN2.Clear();
TR.Clear();
}
50
VISUAL C# APLICACIÓN Y DESARROLLO
51
VISUAL C# APLICACIÓN Y DESARROLLO
EL CONTROL LISTBOX
52
VISUAL C# APLICACIÓN Y DESARROLLO
Me.Controls.Add(listBox1)
listBox1.MultiColumn = True
listBox1.SelectionMode = SelectionMode.MultiExtended
53
VISUAL C# APLICACIÓN Y DESARROLLO
SELECTIONMODE MULTIEXTENDED
54
VISUAL C# APLICACIÓN Y DESARROLLO
55
VISUAL C# APLICACIÓN Y DESARROLLO
TNOMBRES.Focus();
56
VISUAL C# APLICACIÓN Y DESARROLLO
8. Escriba lo siguiente:
LISTA.Items.Add(TNOMBRES.Text);
TNOMBRES.Clear();
TNOMBRES.Focus();
57
VISUAL C# APLICACIÓN Y DESARROLLO
LISTA.Sorted = true;
LISTA.Items.Clear();
TNOMBRES.Focus();
58
VISUAL C# APLICACIÓN Y DESARROLLO
LISTA.Items.Remove(LISTA.SelectedItem);
TNOMBRES.Focus();
this.Close();
59
VISUAL C# APLICACIÓN Y DESARROLLO
if (e.KeyValue == 13)
{
LISTA.Items.Add(TNOMBRES.Text);
TNOMBRES.Clear();
}
namespace EL_CONTROL_LISTBOX
{
public partial class FLISTA : Form
{
public FLISTA()
{
InitializeComponent();
}
60
VISUAL C# APLICACIÓN Y DESARROLLO
}
}
}
61
VISUAL C# APLICACIÓN Y DESARROLLO
62
VISUAL C# APLICACIÓN Y DESARROLLO
63
VISUAL C# APLICACIÓN Y DESARROLLO
PRÁCTICA
64
VISUAL C# APLICACIÓN Y DESARROLLO
En este ejercició veremos como crear y llamar métodos dentro de uns misma clase.
Tambien usaremos la instrucción IF/THEN/ELSE
DISEÑO DE LA INTERFAZ
65
VISUAL C# APLICACIÓN Y DESARROLLO
66
VISUAL C# APLICACIÓN Y DESARROLLO
10. Haga clic derecho en un área libre del escritorio y escoja View
Code.
67
VISUAL C# APLICACIÓN Y DESARROLLO
{
InitializeComponent();
}
68
VISUAL C# APLICACIÓN Y DESARROLLO
{
try
{
VALOR1 = Double.Parse(TN1.Text);
VALOR2 = Double.Parse(TN2.Text);
}
catch
{
MessageBox.Show("ENTRADA INVALIDA. TRATE DE NUEVO");
TN1.Focus();
}
}
//Creación del método que convierte el contenido de la variable
//RESULTADO en texto y lo copia en el textbox TR
private void SALIDA()
{
TR.Text = Convert.ToString(RESULTADO);
}
//Método que limpia las cajas de texto o textboxs
private void LIMPIAR()
{
TR.Clear();
TN2.Clear();
TR.Clear();
}
2. Vuelva al diseño del formulario y haga doble clic sobre el botón CALCULAR.
3. Escriba el siguiente código:
if (OPCION.SelectedItem == "SUMAR")
{
SUMAR();
}
else
if (OPCION.SelectedItem =="RESTAR")
{
RESTAR();
}
else
if (OPCION.SelectedItem =="DIVIDIR")
{
DIVIDIR();
}
else
if (OPCION.SelectedItem =="MULTIPLICAR")
{
MULTIPLICAR();
}
else
if (OPCION.SelectedItem == "POTENCIA")
{
POTENCIA();
}
69
VISUAL C# APLICACIÓN Y DESARROLLO
LIMPIAR();
5. Vuelva al diseño del formulario y haga doble clic sobre el botón FINALIZA y
escriba:
Close();
EN TIEMPO DE EJECUCIÓN:
70
VISUAL C# APLICACIÓN Y DESARROLLO
DISEÑO DE LA INTERFAZ
71
VISUAL C# APLICACIÓN Y DESARROLLO
72
VISUAL C# APLICACIÓN Y DESARROLLO
}
//Creación del método RESTAR.
public void RESTAR()
{
RESULTADO = VALOR1 - VALOR2;
}
//Creación del método MULTIPLICAR.
public void MULTIPLICAR()
{
RESULTADO = VALOR1 * VALOR2;
}
//Creación del método DIVIDIR.
public void DIVIDIR()
{
RESULTADO = VALOR1 / VALOR2;
}
//Creación del método POTENCIA.
public void POTENCIA()
{
RESULTADO = Math.Pow(VALOR1,VALOR2);
}
73
VISUAL C# APLICACIÓN Y DESARROLLO
74
VISUAL C# APLICACIÓN Y DESARROLLO
APARECE LO SIGUIENTE:
14. Escriba:
75
VISUAL C# APLICACIÓN Y DESARROLLO
76
VISUAL C# APLICACIÓN Y DESARROLLO
LIMPIAR();
}
16. Haga doble clic sobre el formulario para abrir el procedimiento del
evento LOAD.
EL PROCEDIMIENTO SE VE ASÍ:
17. Escriba:
AHORA SE VE ASÍ:
this.Close();
ESTE ES EL RESULTADO:
77
VISUAL C# APLICACIÓN Y DESARROLLO
PRÁCTICA
Haga obligatoria la entrada de números en las cajas
de texto TN1 y TN2 y explique los pasos que dio para
logarlo.
PRÁCTICA
78
VISUAL C# APLICACIÓN Y DESARROLLO
namespace NOMINA_DE_VENDEDORES
{
public partial class FVENDEDORES : Form
{
double SUELDO, VENTA, COMISION, TG;
public FVENDEDORES()
{
InitializeComponent();
}
79
VISUAL C# APLICACIÓN Y DESARROLLO
TG = SUELDO + COMISION;
TCOMISION.Text = Convert.ToString(COMISION);
TTG.Text = Convert.ToString(TG);
}
else
{
MessageBox.Show("NO PUEDE DEJAR CAMPOS EN BLANCO");
TSUELDO.Focus();
}
}
}
}
80
VISUAL C# APLICACIÓN Y DESARROLLO
FUNCIONES DE FORMATO
FUNCION FORMATO
(VARIABLE.TOSTRING(“D”)) Para números enteros (decimales).
o d MINÚSCULA
(VARIABLE.TOSTRING(“E”)) Para números en formato de
O e MINÚSCULA. exponente.
(VARIABLE.TOSTRING(“F”)) Para números reales, con parte
O f MINÚSCULA. decimal
(VARIABLE.TOSTRING(“G”)) Para formato general
O d MINÚSCULA.
(VARIABLE.TOSTRING(“N”)) Igual que F, pero con la separador
O d MINÚSCULA. de miles.
(VARIABLE.TOSTRING(“P”)) Porcentaje
O d MINÚSCULA.
(VARIABLE.TOSTRING(“R”)) Round-trip o viaje redondo, que se
O d MINÚSCULA. usa en números reales. Garantiza
que un valor numérico convertido a
string será retransformado de
vuelta sin perder información
(VARIABLE.TOSTRING(“X”)) número en formato hexadecimal
O d MINÚSCULA. (ej: 1A24C)
81
VISUAL C# APLICACIÓN Y DESARROLLO
Ejemplo:
LA FUNCION MATH
Esta función se usa para calcular las funciones trigonométricas y
matemáticas tradicionales.
82
VISUAL C# APLICACIÓN Y DESARROLLO
83
VISUAL C# APLICACIÓN Y DESARROLLO
TR.Enabled = false;
84
VISUAL C# APLICACIÓN Y DESARROLLO
}
9. Escriba el siguiente código:
VALOR=Convert.ToDouble(TVALOR.Text);
if (RBSENO.Checked)
R = Math.Sin(VALOR);
if (RBCOSENO.Checked)
R = Math.Cos(VALOR);
if (RBTANGENTE.Checked)
R = Math.Tan(VALOR);
if (RBARCOTANGENTE.Checked)
R = Math.Atan(VALOR);
if (RBLOGARITMO.Checked)
R = Math.Log(VALOR);
if (RBRAIZ.Checked)
R = Math.Sqrt(VALOR);
if (RBACOSENO.Checked)
R = Math.Acos(VALOR);
if (RBASENO.Checked)
R = Math.Asin(VALOR);
TR.Text=Convert.ToString(R);
85
VISUAL C# APLICACIÓN Y DESARROLLO
}
11. Escriba el siguiente código:
TVALOR.Clear();
TR.Clear();
TVALOR.Focus();
AHORA EL PROCEDIMIENTO SE VERÁ ASÍ:
private void BLIMPIAR_Click(object sender, EventArgs e)
{
TVALOR.Clear();
TR.Clear();
TVALOR.Focus();
}
12. Vuelva al formulario y haga doble clic sobre el botón SALIR.
13. Escriba:
this.Close();
14. Pulse LA TECLA F5 para ejecutar el programa:
86
VISUAL C# APLICACIÓN Y DESARROLLO
PRÁCTICA
HAGA EL EJERCICIO ANTERIOR USANDO MÉTODOS
FUNCIÓN DESCRIPCIÓN
87
VISUAL C# APLICACIÓN Y DESARROLLO
LA INSTRUCCIÓN TRY...CATCH
88
VISUAL C# APLICACIÓN Y DESARROLLO
5. Tome como guía la siguiente tabla para colocar los controles dentro del
formulario con sus correspondientes propiedades:
89
VISUAL C# APLICACIÓN Y DESARROLLO
90
VISUAL C# APLICACIÓN Y DESARROLLO
2. Escriba:
this.Close()
91
VISUAL C# APLICACIÓN Y DESARROLLO
TFUENTE.Clear();
TR.Clear();
TN.Clear();
TFUENTE.Focus();
TFUENTE.Focus()
5. Haga doble clic en cualquier parte vacía del formulario para abrir el
procedimiento LOAD.
92
VISUAL C# APLICACIÓN Y DESARROLLO
double FUENTE;
byte R;
FUENTE = Convert.ToDouble(TFUENTE.Text);
R = Convert.ToByte(FUENTE);
TR.Text = Convert.ToString(R);
93
VISUAL C# APLICACIÓN Y DESARROLLO
TR.Text = Convert.ToString(R);
TR.Text = FUENTE.ToString("d");
94
VISUAL C# APLICACIÓN Y DESARROLLO
double FUENTE;
int R;
//Deshabilitamos el control TR.
TR.Enabled = false;
//Convertimos la el contenido de la caja de texto
// TFUENTE a doble y luego la variable local FUENTE
// a entero, al final R a cadena para que se vea el
// resultado en el formulario.
FUENTE = Convert.ToDouble(TFUENTE.Text);
R = Convert.ToInt32(FUENTE);
TR.Text = Convert.ToString(R);
95
VISUAL C# APLICACIÓN Y DESARROLLO
FUENTE = Convert.ToInt32(TFUENTE.Text);
N = Convert.ToInt32(TN.Text);
R = Convert.ToBoolean(FUENTE == N);
TR.Text = Convert.ToString(R);
TR.Visible = true;
}
else
{
MessageBox.Show("ESCRIBA EL OTRO NÚMERO EN LA CAJA DE TEXTO QUE SE VERÁ AHORA");
LBOTRO.Visible = true;
TN.Visible = true;
TN.Enabled = true;
TN.Focus();
}
}
catch
{
MessageBox.Show("INTENTE CON UN NÚMEROS ENTEROS");
96
VISUAL C# APLICACIÓN Y DESARROLLO
97
VISUAL C# APLICACIÓN Y DESARROLLO
catch
{
MessageBox.Show("EL NÚMERO QUE INTRODUJO ES IN CORRECTO");
TFUENTE.Focus();
}
98
VISUAL C# APLICACIÓN Y DESARROLLO
catch
{
MessageBox.Show("EL NÚMERO QUE INTRODUJO ES IN CORRECTO");
TFUENTE.Focus();
}
double FUENTE;
Single R;
FUENTE = Convert.ToDouble(TFUENTE.Text);
R = Convert.ToSingle(FUENTE);
TR.Text = Convert.ToString(R);
TR.Visible = true;
99
VISUAL C# APLICACIÓN Y DESARROLLO
double FUENTE;
uint R;
try
{
FUENTE = Convert.ToDouble(TFUENTE.Text);
R = Convert.ToUInt32(FUENTE);
TR.Text = Convert.ToString(R);
TR.Visible = true;
}
catch
{
MessageBox.Show("EL NÚMERO QUE INTRODUJO ES IN CORRECTO");
TFUENTE.Focus();
}
100
VISUAL C# APLICACIÓN Y DESARROLLO
PRÁCTICA
HAGA EL EJERCICIO ANTERIOR USANDO MÉTODOS
Y CLASES.
101
VISUAL C# APLICACIÓN Y DESARROLLO
Visual C# cuenta con una serie de funciones que nos permiten calcular
fechas y horas, por ejemplo generar un intervalo de fechas, sumar y
restar fechas y horas y otras operaciones y cálculos.
102
VISUAL C# APLICACIÓN Y DESARROLLO
103
VISUAL C# APLICACIÓN Y DESARROLLO
}
6. Escriba el siguiente código:
DateTime FECHANAC;
DateTime FECHAACT;
FECHANAC = Convert.ToDateTime(TFECHANAC.Text);
FECHAACT = DateTime.Today;
int EDAD = DateTime.Now.Year - FECHANAC.Year;
TFECHAACT.Text = FECHAACT.ToString("d") ;
TEDAD.Text = Convert.ToString(EDAD) + " AÑOS";
End Sub
9. Escriba:
End
FECHANAC = Convert.ToDateTime(TFECHANAC.Text);
FECHAACT = DateTime.Today;
int EDAD = DateTime.Now.Year - FECHANAC.Year;
TFECHAACT.Text = FECHAACT.ToString("d") ;
TEDAD.Text = Convert.ToString(EDAD) + " AÑOS";
// TEDAD.Text = TEDAD.Text + "AÑOS";
104
VISUAL C# APLICACIÓN Y DESARROLLO
PRÁCTICA:
105
VISUAL C# APLICACIÓN Y DESARROLLO
ACCESO A DATOS
USO DE ENTITYFRAMEWORK Y LINQ
Entity Framework aparece por primera vez con el Netframwork 3.5 Service Pack 1
DE Visual Studio 2008 y con el Visual Studio 2010 se lanza la versión 4.4. Entity
Framework es un conjunto de APIS o tecnologías, desarrolladas por la Microsoft,
que pertenece ADO.NET con el objetivo de que los desarrolladores puedan crear
soluciones de programas informáticos orientadas a datos.
106
VISUAL C# APLICACIÓN Y DESARROLLO
lenguajes de la Plataforma .NET. LINQ no sólo permite hacer consultas sino que
además es posible actualizar datos con excelentes estándares de fácil aprendizaje e
implementación. “Visual Studio incluye ensamblados de proveedores para
LINQ que habilitan el uso de LINQ con colecciones de .NET Framework, bases de
datos SQL Server, conjuntos de datos de ADO.NET y documentos XML”. Linq,
aparece con Visual Studio 2008.
En esta sección desarrollaremos un ejercicio con el objetivo de
demostrar el uso de ENTITYFRAMEWORK y LINQ. Para esto
crearemos una base de datos con SQL SERVER.
USE [SCXP]
107
VISUAL C# APLICACIÓN Y DESARROLLO
--TABLA FACTURAS
--TABLA CHEQUES
CREATE TABLE [dbo].[CHEQUES](
[NUMERO_CHEQUE] [int] NOT NULL,
[NUMERO_FACTURA] [int] NOT NULL,
[VALOR_CHEQUE] [money] NULL,
[FECHA_CHEQUE] [datetime] NULL,
CONSTRAINT [PK_CHEQUES] PRIMARY KEY CLUSTERED
(
[NUMERO_CHEQUE] 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
--RELACIÓN DE LA TABLA CHEQUES CON LA TABLA FACTURAS
--TABLA USUARIOS
108
VISUAL C# APLICACIÓN Y DESARROLLO
109
VISUAL C# APLICACIÓN Y DESARROLLO
EL MENÚ PROVEEDORES
EL MENÚ FACTURAS
110
VISUAL C# APLICACIÓN Y DESARROLLO
EL MENÚ CHEQUES
111
VISUAL C# APLICACIÓN Y DESARROLLO
112
VISUAL C# APLICACIÓN Y DESARROLLO
113
VISUAL C# APLICACIÓN Y DESARROLLO
TCIUDAD
TTELÉFONO
13. Añada los controles arriba indicados.
EL FORMULARIO QUEDARÁ ASÍ:
114
VISUAL C# APLICACIÓN Y DESARROLLO
115
VISUAL C# APLICACIÓN Y DESARROLLO
116
VISUAL C# APLICACIÓN Y DESARROLLO
117
VISUAL C# APLICACIÓN Y DESARROLLO
118
VISUAL C# APLICACIÓN Y DESARROLLO
119
VISUAL C# APLICACIÓN Y DESARROLLO
120
VISUAL C# APLICACIÓN Y DESARROLLO
121
VISUAL C# APLICACIÓN Y DESARROLLO
122
VISUAL C# APLICACIÓN Y DESARROLLO
123
VISUAL C# APLICACIÓN Y DESARROLLO
124
VISUAL C# APLICACIÓN Y DESARROLLO
125
VISUAL C# APLICACIÓN Y DESARROLLO
DGVUSUARIOS.DataSource = DATOSUSUARIOS.MOSTRAR();
//Para ocultar la clave.
DGVUSUARIOS.Columns[1].Visible = false;
//Disfrazar los caracteres escritos en el TextBox TCLAVE
TCLAVE.PasswordChar = '*';
37. Vuelva al diseño del formulario y haga doble clic sobre el botón
ENTRAR.
38. Escriba el siguiente código:
try
{
DataGridViewRow FILA= DGVUSUARIOS.CurrentRow;
//Para copiar los valores de las columnas en las variables US y CL
string US=Convert.ToString(FILA.Cells[0].Value);
string CL = Convert.ToString(FILA.Cells[1].Value);
//Para validar el usuario y la contraseña
if (TUSUARIO.Text == US & TCLAVE.Text == CL)
{
FMENUPRI FP =new FMENUPRI();
FP.Show();
}
else
{
//Si dejó los campos en blanco.
MessageBox.Show("DEBE ESCRIBIR EL NOMBRE DEL USUARIO Y CONTRASEÑA
INVÁLIDOS");
}
}
catch
{
//Si el usuario o la contraseña no coinciden o son incorrectos
MessageBox.Show("USUARIO O CONTRASEÑA INVÁLIDOS");
TUSUARIO.Focus();
126
VISUAL C# APLICACIÓN Y DESARROLLO
}
EL EVENTO DEBE VERSE ASÍ:
39. Vuelva al diseño del formulario y haga doble clic sobre el TextBox
Tusuario.
40. Escriba el siguiente código:
//Para invocar el método BUSCAR USUARIO
DGVUSUARIOS.DataSource = DATOSUSUARIOS.BUSCARPORUSUARIO(TUSUARIO.Text);
41. Vuelva al diseño del formulario y haga doble clic sobre el TextBox
Tclave.
42. Escriba el siguiente código:
//Para invocar el método BUSCAR CLAVE
DGVUSUARIOS.DataSource = DATOSUSUARIOS.BUSCARPORCLAVE(TUSUARIO.Text);
127
VISUAL C# APLICACIÓN Y DESARROLLO
128
VISUAL C# APLICACIÓN Y DESARROLLO
129
VISUAL C# APLICACIÓN Y DESARROLLO
return INFO;
}
}
public static List<PROVEEDORES> BUSCARPORCODIGO(string codigo)
{
using (SCXPEntities BD = new SCXPEntities())
{
/*USAMOS LINQ. PARA BUSCAR UN PROVEEDOR POR LA DIRECCIÓN
EMPEZANDO CON CUALQUIER LETRA*/
var INFO = (from P in BD.PROVEEDORES
where P.CODIGO.StartsWith(codigo)
select P).ToList();
/*StartsWith HACE QUE VAYA MOSTRANDO LOS PROVEEDORES QUE
EMPIEZEN CON LAS LETRAS QUE VAMOS ESCRIBIENDO*/
return INFO;
}
}
public static List<PROVEEDORES> BUSCARNOMBRES(string nombres)
{
using (SCXPEntities BD = new SCXPEntities())
{
var INFO = (from P in BD.PROVEEDORES
where P.NOMBRES.StartsWith(nombres)
select P).ToList();
return INFO;
}
}
public static List<PROVEEDORES> BUSCARPORAPELLIDOS(string apellidos)
{
using (SCXPEntities BD = new SCXPEntities())
{
var INFO = (from P in BD.PROVEEDORES
where P.APELLIDOS.StartsWith(apellidos)
select P).ToList();
return INFO;
}
}
public static List<PROVEEDORES> BUSCARPORDIRECCION(string direccion)
{
using (SCXPEntities BD = new SCXPEntities())
{
var INFO = (from P in BD.PROVEEDORES
130
VISUAL C# APLICACIÓN Y DESARROLLO
where P.DIRECCION.StartsWith(direccion)
select P).ToList();
return INFO;
}
}
public static List<PROVEEDORES> BUSCARPORCIUDAD(string ciudad)
{
using (SCXPEntities BD = new SCXPEntities())
{
var INFO = (from P in BD.PROVEEDORES
where P.CIUDAD.StartsWith(ciudad)
select P).ToList();
return INFO;
}
}
131
VISUAL C# APLICACIÓN Y DESARROLLO
BD.PROVEEDORES.AddObject(new PROVEEDORES
{
CODIGO = codigo,
NOMBRES=nombres,
APELLIDOS =apellidos,
DIRECCION=direccion,
CIUDAD =ciudad
});
BD.SaveChanges();
}
}
132
VISUAL C# APLICACIÓN Y DESARROLLO
BD.DeleteObject(ELIMINA);
BD.SaveChanges();
}
}
proveedores.CODIGO = INFO.CODIGO;
proveedores.NOMBRES = INFO.NOMBRES;
proveedores.APELLIDOS = INFO.APELLIDOS;
proveedores.DIRECCION = INFO.DIRECCION;
133
VISUAL C# APLICACIÓN Y DESARROLLO
proveedores.CIUDAD=INFO.CIUDAD;
proveedores.TELEFONO=INFO.TELEFONO;
return proveedores;
}
}
return INFO;
}
}
public static List<PROVEEDORES> BUSCARPORCODIGO(string codigo)
{
using (SCXPEntities BD = new SCXPEntities())
{
/*USAMOS LINQ. PARA BUSCAR UN PROVEEDOR POR LA DIRECCIÓN
EMPEZANDO CON CUALQUIER LETRA*/
var INFO = (from P in BD.PROVEEDORES
where P.CODIGO.StartsWith(codigo)
select P).ToList();
/*StartsWith HACE QUE VAYA MOSTRANDO LOS PROVEEDORES QUE
EMPIEZEN CON LAS LETRAS QUE VAMOS ESCRIBIENDO*/
return INFO;
}
}
public static List<PROVEEDORES> BUSCARNOMBRES(string nombres)
{
using (SCXPEntities BD = new SCXPEntities())
{
var INFO = (from P in BD.PROVEEDORES
where P.NOMBRES.StartsWith(nombres)
select P).ToList();
return INFO;
}
}
public static List<PROVEEDORES> BUSCARPORAPELLIDOS(string apellidos)
{
using (SCXPEntities BD = new SCXPEntities())
{
var INFO = (from P in BD.PROVEEDORES
134
VISUAL C# APLICACIÓN Y DESARROLLO
where P.APELLIDOS.StartsWith(apellidos)
select P).ToList();
return INFO;
}
}
public static List<PROVEEDORES> BUSCARPORDIRECCION(string direccion)
{
using (SCXPEntities BD = new SCXPEntities())
{
var INFO = (from P in BD.PROVEEDORES
where P.DIRECCION.StartsWith(direccion)
select P).ToList();
return INFO;
}
}
public static List<PROVEEDORES> BUSCARPORCIUDAD(string ciudad)
{
using (SCXPEntities BD = new SCXPEntities())
{
var INFO = (from P in BD.PROVEEDORES
where P.CIUDAD.StartsWith(ciudad)
select P).ToList();
return INFO;
}
}
//EL SIGUIENTE MÉTODO AÑADE UN NUEVO REGISTRO
public static void INSERTARPROVEEDOR
(
string codigo,
string nombres,
string apellidos,
string direccion,
string ciudad,
string telefono
)
{
using (SCXPEntities BD = new SCXPEntities())
{
BD.PROVEEDORES.AddObject(new PROVEEDORES
{
CODIGO = codigo,
NOMBRES=nombres,
APELLIDOS =apellidos,
DIRECCION=direccion,
CIUDAD =ciudad
});
BD.SaveChanges();
}
}
//EL SIGUIENTE MÉTODO AÑADE UN NUEVO REGISTRO
135
VISUAL C# APLICACIÓN Y DESARROLLO
BD.SaveChanges();
}
}
public static void ELIMINARPROVEEDOR(string codigo)
{
using (SCXPEntities BD = new SCXPEntities())
{
var ELIMINA = (from P in BD.PROVEEDORES
where P.CODIGO==codigo
select P).Single();
BD.DeleteObject(ELIMINA);
BD.SaveChanges();
}
}
public static PROVEEDORES CARGAR(string codigo)
{
PROVEEDORES proveedores = new PROVEEDORES();
using (SCXPEntities BD = new SCXPEntities())
{
var INFO = (from P in BD.PROVEEDORES
where P.CODIGO==codigo
select P).Single();
proveedores.CODIGO = INFO.CODIGO;
proveedores.NOMBRES = INFO.NOMBRES;
proveedores.APELLIDOS = INFO.APELLIDOS;
proveedores.DIRECCION = INFO.DIRECCION;
proveedores.CIUDAD=INFO.CIUDAD;
proveedores.TELEFONO=INFO.TELEFONO;
return proveedores;
}
}
136
VISUAL C# APLICACIÓN Y DESARROLLO
137
VISUAL C# APLICACIÓN Y DESARROLLO
53. Pulse la tecla F5 para ver los resultados de los que hemos hecho
hasta ahora.
ESTA ES LA VENTANA DE RESULTADO:
138
VISUAL C# APLICACIÓN Y DESARROLLO
139
VISUAL C# APLICACIÓN Y DESARROLLO
ADICIÓN DE PROVEEDORES
Ya hemos visto como se cargan los datos de los proveedores en el
DataGridView. Ahora veremos cómo se añaden registros a la tabla
Proveedores.
59. Vaya al código del formulario FPROVEEDORES.
62. Haga doble clic dentro de la caja de texto del evento FormClosed
para crear el método correspondiente.
63. Escriba el siguiente código:
‘Cargamos los datos después de cerrar los formularios FAGREGARPROV y/o FMODIFICAR
DGVPROVEEDORES.DataSource = DATOSPROVEEDORES.MOSTRARDATOS();
EL EVENTO SE VE ASÍ:
64. Vuelva al diseño del formulario y haga doble clic sobre el botón
AGREGAR.
APARECE EL CUERPO DEL EVENTO CLICK DEL BOTON BAGREGAR:
140
VISUAL C# APLICACIÓN Y DESARROLLO
141
VISUAL C# APLICACIÓN Y DESARROLLO
}
EL EVENTO AHORA SE VERÁ ASÍ:
142
VISUAL C# APLICACIÓN Y DESARROLLO
TTELEFONO.Text);
MessageBox.Show("EL PROVEEDOR"+" "+TNOMBRES.Text+" "+TAPELLIDOS.Text+" "+"HA
SIDO AGREGADO", "AGREGAR PROVEEDOR");
this.Close();
75. Escriba los datos del nuevo proveedor según muestra la siguiente
figura pulsando la techa ENTER para pasar siempre al próximo
TextBox:
143
VISUAL C# APLICACIÓN Y DESARROLLO
MODIFICAR REGISTROS
Ya hemos programado la adición de registros a la tabla proveedores.
Ahora veremos cómo modificaremos registros. Desde el evento
Click del botón BMODIFICAR abriremos el formulario
FMODIFICARPROV donde modificaremos los registros de los proveedores y
actualizaremos los datos cuando lo cerremos.
144
VISUAL C# APLICACIÓN Y DESARROLLO
FMP.FormClosed += new
System.Windows.Forms.FormClosedEventHandler(FPROVEEDORES_FormClosed);
FMP.Show();
145
VISUAL C# APLICACIÓN Y DESARROLLO
82. Vuelva al diseño del formulario y haga doble clic sobre un área no
ocupada para abrir el evento Load del formulario que debe verse
así:
En este evento load obtenemos los datos del proveedor que vamos
a modificar usando el método OBTENERCODIGO y le enviamos
como parámetro el dato recibido del formulario FPROVEEDOR.
83. Vuelva al diseño del formulario y haga doble clic sobre el botón
ACTUALIZAR.
84. Escriba el siguiente código:
//Invocamos el método MODIFICARPROVEEDOR.
DATOSPROVEEDORES.MODIFICARPEOVEEDOR
(CODIGO, TNOMBRES.Text,
TAPELLIDOS.Text,
TDIRECCION.Text,
TCIUDAD.Text,
TTELEFONO.Text);
146
VISUAL C# APLICACIÓN Y DESARROLLO
147
VISUAL C# APLICACIÓN Y DESARROLLO
89. Haga clic sobre el botón ACEPTAR para cerrar el formulario actual
y volver al formulario de MANTENIMIENTO DE PROVEEDORES.
148
VISUAL C# APLICACIÓN Y DESARROLLO
ELIMINACION DE REGISTROS
En el evento Click del botón ELIMINAR eliminaremos el registro correspondiente
al proveedor seleccionado en el en el ADATAGRIDVIEW DGVPROVEEDORES y
le enviamos como parámetro el código del proveedor seleccionado al método
ELIMINARPROVEEDOR.
149
VISUAL C# APLICACIÓN Y DESARROLLO
150
VISUAL C# APLICACIÓN Y DESARROLLO
151
VISUAL C# APLICACIÓN Y DESARROLLO
152
VISUAL C# APLICACIÓN Y DESARROLLO
153
VISUAL C# APLICACIÓN Y DESARROLLO
CODIGO CLIENTE
VALOR FACTURA
FECHA FACTURA
FECHA VENCIMIENTO
Cinco TEXTBOXs O CAJAS DE TEXTO con los
siguientes nombres:
TNUMFACT
TCODIGO
TVALFACT
TFECHAFACT
TFECHAVENC
105. Añada los controles arriba indicados.
EL FORMULARIO QUEDARÁ ASÍ:
154
VISUAL C# APLICACIÓN Y DESARROLLO
155
VISUAL C# APLICACIÓN Y DESARROLLO
156
VISUAL C# APLICACIÓN Y DESARROLLO
return INFO;
}
//ESTE MÉTODO BUSCA UNA FACTURA POR EL NÚMERO
return INFO;
}
}
public static List<FACTURAS> BUSCARECODIGO(string codigo)
{
using (SCXPEntities BD = new SCXPEntities())
{
//USAMOS LINQ. PARA BUSCAR FACTURAS POR EL CODIGO DEL PROEEDOR
return INFO;
}
157
VISUAL C# APLICACIÓN Y DESARROLLO
BD.PROVEEDORES.AddObject(new FACTURAS
{
NUMERO_FACTURA = numerofactura,
CODIGO=codigoproveedor,
VALOR_FACTURA=valorfactura,
FECHA_FACTURA=fechafactura,
FECHA_VENCIMIENTO=fechavencimiento,
});
BD.SaveChanges();
}
}
158
VISUAL C# APLICACIÓN Y DESARROLLO
MODIFICAR.CODIGO = codigoproveedor;
MODIFICAR.VALOR_FACTURA = valorfactura;
MODIFICAR.FECHA_FACTURA = fechafactura;
MODIFICAR.FECHA_VENCIMIENTO = fechavencimiento;
BD.SaveChanges();
}
}
BD.DeleteObject(ELIMINA);
BD.SaveChanges();
}
}
159
VISUAL C# APLICACIÓN Y DESARROLLO
facturas.NUMERO_FACTURA = INFO.NUMERO_FACTURA;
facturas.CODIGO = INFO.CODIGO;
facturas.VALOR_FACTURA = INFO.VALOR_FACTURA;
facturas.FECHA_FACTURA = INFO.FECHA_FACTURA;
facturas.FECHA_VENCIMIENTO = INFO.FECHA_VENCIMIENTO;
return facturas;
}
}
ESTE ES EL CÓDIGO COMPLETO DE LA CLASE DATOS FACTURAS:
return INFO;
}
}
public static List<FACTURAS> BUSCARELNUMERO(int numerofactura)
{
using (SCXPEntities BD = new SCXPEntities())
{
//USAMOS LINQ. PARA BUSCAR UN FACTURA POR EL NUMERO
return INFO;
}
}
//ESTE MÉTODO BUSCA LAS FACTURAS DE UN PROVEEDOR POR EL CÓDIGO
public static List<FACTURAS> BUSCARECODIGO(string codigo)
{
using (SCXPEntities BD = new SCXPEntities())
{
//USAMOS LINQ. PARA BUSCAR FACTURAS POR EL CODIGO DEL PROEEDOR
160
VISUAL C# APLICACIÓN Y DESARROLLO
select F).ToList();
/*StartsWith HACE QUE VAYA MOSTRANDO LOS PROVEEDORES QUE
EMPIEZEN CON LAS LETRAS QUE VAMOS ESCRIBIENDO*/
return INFO;
}
}
//EL SIGUIENTE MÉTODO AÑADE UN NUEVO REGISTRO
public static void INSERTARFACTURA
(
int numerofactura,
string codigoproveedor,
decimal valorfactura,
DateTime fechafactura,
DateTime fechavencimiento
)
{
using (SCXPEntities BD = new SCXPEntities())
{
/*PARA INSERTAR UN NUEVO OBJETO O PROVEEDOR ASIGNANDO LOS VALORES DE
LOS PARÁMETROS A LOS CAMPOS DE LA TABLA.*/
BD.FACTURAS.AddObject(new FACTURAS
{
NUMERO_FACTURA = numerofactura,
CODIGO=codigoproveedor,
VALOR_FACTURA=valorfactura,
FECHA_FACTURA=fechafactura,
FECHA_VENCIMIENTO=fechavencimiento,
});
BD.SaveChanges();
}
}
//EL SIGUIENTE MÉTODO MODIFICA UN REGISTRO
public static void MODIFICARFACTURA
(
int numerofactura,
string codigoproveedor,
decimal valorfactura,
DateTime fechafactura,
DateTime fechavencimiento
)
{
using (SCXPEntities BD = new SCXPEntities())
{
var MODIFICAR = (from F in BD.FACTURAS
where F.NUMERO_FACTURA == numerofactura
select F).Single();
MODIFICAR.NUMERO_FACTURA = numerofactura;
MODIFICAR.CODIGO = codigoproveedor;
MODIFICAR.VALOR_FACTURA = valorfactura;
MODIFICAR.FECHA_FACTURA = fechafactura;
MODIFICAR.FECHA_VENCIMIENTO = fechavencimiento;
BD.SaveChanges();
}
}
161
VISUAL C# APLICACIÓN Y DESARROLLO
BD.DeleteObject(ELIMINA);
BD.SaveChanges();
}
}
public static FACTURAS CARGAR(int numerofactura)
{
FACTURAS facturas = new FACTURAS();
using (SCXPEntities BD = new SCXPEntities())
{
var INFO = (from F in BD.FACTURAS
where F.NUMERO_FACTURA==numerofactura
select F).Single();
facturas.NUMERO_FACTURA = INFO.NUMERO_FACTURA;
facturas.CODIGO = INFO.CODIGO;
facturas.VALOR_FACTURA = INFO.VALOR_FACTURA;
facturas.FECHA_FACTURA = INFO.FECHA_FACTURA;
facturas.FECHA_VENCIMIENTO = INFO.FECHA_VENCIMIENTO;
return facturas;
}
}
}
DGVFACTURAS.Columns["CHEQUES"].Visible = false;
162
VISUAL C# APLICACIÓN Y DESARROLLO
116. Pulse la tecla F5 para ver los resultados de los que hemos hecho
hasta ahora.
ESTA ES LA VENTANA DE RESULTADO:
163
VISUAL C# APLICACIÓN Y DESARROLLO
164
VISUAL C# APLICACIÓN Y DESARROLLO
DGVFACTURAS.DataSource = DATOSFACTURAS.BUSCARECODIGO(TCODIGO.Text);
ADICIÓN DE FACTURAS
Ya hemos visto cómo se cargan los datos de los facturas en el
DataGridView. Ahora veremos cómo se añaden registros a la tabla
Proveedores.
120. Vuelva a la ventana del editor de código del formulario FFACTURAS.
165
VISUAL C# APLICACIÓN Y DESARROLLO
122. Haga doble clic dentro de la caja de texto del evento FormClosed
para crear el método correspondiente.
123. Escriba el siguiente código:
‘Cargamos los datos después de cerrar los formularios FAGREGARFACT y/o FMODIFICAR
DGVFACTURAS.DataSource = DATOSFACTURAS.MOSTRARFACTURAS();
EL EVENTO SE VE ASÍ:
124. Vuelva al diseño del formulario y haga doble clic sobre el botón
AGREGAR.
APARECE EL CUERPO DEL EVENTO CLICK DEL BOTON BAGREGAR:
166
VISUAL C# APLICACIÓN Y DESARROLLO
167
VISUAL C# APLICACIÓN Y DESARROLLO
168
VISUAL C# APLICACIÓN Y DESARROLLO
141. Escriba los datos del nuevo FACTURA según muestra la siguiente
figura pulsando la techa ENTER para pasar siempre al próximo
TextBox:
169
VISUAL C# APLICACIÓN Y DESARROLLO
MODIFICAR FACTURAS
Ya hemos programado la adición de registros a la tabla facturas. Ahora
veremos cómo modificaremos registros. Desde el evento
Click del botón BMODIFICAR abriremos el formulario FMODIFICARFACT donde
modificaremos los registros de los facturas y actualizaremos los datos cuando lo
cerremos.
144. Vaya al diseño del formulario FFACTURAS y haga doble clic sobre el
botón MODIFICAR.
145. Escriba el siguiente código:
DataGridViewRow FILA = DGVFACTURAS.CurrentRow;
170
VISUAL C# APLICACIÓN Y DESARROLLO
171
VISUAL C# APLICACIÓN Y DESARROLLO
148. Vuelva al diseño del formulario y haga doble clic sobre un área no
ocupada para abrir el evento Load del formulario que debe verse así:
En este evento load obtenemos los datos de la FACTURA que vamos a modificar
usando el método CARGAR y le enviamos como parámetro el dato recibido del
formulario FFACTURAS.
Escriba el siguiente código:
FACTURAS fact = DATOSFACTURAS.CARGAR(numero);
numero = fact.NUMERO_FACTURA;
TCODIGO.Text = fact.CODIGO;
TVALFACT.Text = Convert.ToString(fact.VALOR_FACTURA);
TFECHAFACT.Text = Convert.ToString(fact.FECHA_FACTURA);
TFECHAVEN.Text = Convert.ToString(fact.FECHA_VENCIMIENTO);
149. Vuelva al diseño del formulario y haga doble clic sobre el botón
ACTUALIZAR.
150. Escriba el siguiente código:
'Invocamos el método MODIFICARFACTURA.
DATOSFACTURAS.MODIFICARFACTURA(
Convert.ToInt16(TNUMFACT.Text),
TCODIGO.Text,
Convert.ToDecimal(TVALFACT.Text),
Convert.ToDateTime(TFECHAFACT.Text),
Convert.ToDateTime(TFECHAVEN.Text));
172
VISUAL C# APLICACIÓN Y DESARROLLO
173
VISUAL C# APLICACIÓN Y DESARROLLO
156. Haga clic sobre el botón ACEPTAR para cerrar el formulario actual y
volver al formulario de MANTENIMIENTO DE FACTURAS.
174
VISUAL C# APLICACIÓN Y DESARROLLO
ELIMINACIÓN DE REGISTROS
175
VISUAL C# APLICACIÓN Y DESARROLLO
176
VISUAL C# APLICACIÓN Y DESARROLLO
177
VISUAL C# APLICACIÓN Y DESARROLLO
178
VISUAL C# APLICACIÓN Y DESARROLLO
179
VISUAL C# APLICACIÓN Y DESARROLLO
180
VISUAL C# APLICACIÓN Y DESARROLLO
181
VISUAL C# APLICACIÓN Y DESARROLLO
182
VISUAL C# APLICACIÓN Y DESARROLLO
return INFO;
}
}
public static List<CHEQUES> BUSCARELNUMERO(int numerocheque)
{
using (SCXPEntities BD = new SCXPEntities())
{
//USAMOS LINQ. PARA BUSCAR UN CHEQUE POR EL NÚMERO
return INFO;
}
}
//ESTE MÉTODO BUSCA LOS CHEQUES DE UNA FACTURA POR EL NÚMERO DE LA FACTURA
public static List<CHEQUES> BUSCARNUMERO_FACTURA(int NUMERO_FACTURA)
{
using (SCXPEntities BD = new SCXPEntities())
{
//USAMOS LINQ. PARA BUSCAR CHEQUES POR EL NUMERO_FACTURA
return INFO;
}
}
Los dos métodos anteriores se usan, el primero para mostrar todos los
CHEQUES y los otros dos para buscar los cheques por los campos
NUMEROCHEQUE.
Aún faltan los métodos que nos permitirán agregar, eliminar y modificar
CHEQUES.
183
VISUAL C# APLICACIÓN Y DESARROLLO
BD.CHEQUES.AddObject(new CHEQUES
{
NUMERO_CHEQUE = numerocheque,
NUMERO_FACTURA = numero_factura,
VALOR_CHEQUE = valor_cheque,
FECHA_CHEQUE = fecha_cheque
});
BD.SaveChanges();
}
}
184
VISUAL C# APLICACIÓN Y DESARROLLO
{
using (SCXPEntities BD = new SCXPEntities())
{
var MODIFICAR = (from F in BD.CHEQUES
where F.NUMERO_CHEQUE == numerocheque
select F).Single();
MODIFICAR.NUMERO_CHEQUE = numerocheque;
MODIFICAR.NUMERO_FACTURA =numero_factura;
MODIFICAR.VALOR_CHEQUE = valor_cheque;
MODIFICAR.FECHA_CHEQUE = fecha_cheque;
BD.SaveChanges();
}
}
BD.DeleteObject(ELIMINA);
BD.SaveChanges();
}
}
public static CHEQUES CARGAR(int numerocheque)
{
CHEQUES CHEQUES = new CHEQUES();
using (SCXPEntities BD = new SCXPEntities())
{
var INFO = (from F in BD.CHEQUES
where F.NUMERO_CHEQUE == numerocheque
select F).Single();
CHEQUES.NUMERO_CHEQUE = INFO.NUMERO_CHEQUE;
CHEQUES.NUMERO_FACTURA = INFO.NUMERO_FACTURA;
CHEQUES.VALOR_CHEQUE = INFO.VALOR_CHEQUE;
CHEQUES.FECHA_CHEQUE = INFO.FECHA_CHEQUE;
return CHEQUES;
}
}
185
VISUAL C# APLICACIÓN Y DESARROLLO
CHEQUES.NUMERO_CHEQUE = INFO.NUMERO_CHEQUE;
CHEQUES.NUMERO_FACTURA = INFO.NUMERO_FACTURA;
CHEQUES.VALOR_CHEQUE = INFO.VALOR_CHEQUE;
CHEQUES.FECHA_CHEQUE = INFO.FECHA_CHEQUE;
return CHEQUES;
}
}
return INFO;
}
}
public static List<CHEQUES> BUSCARELNUMERO(int numerocheque)
{
using (SCXPEntities BD = new SCXPEntities())
{
//USAMOS LINQ. PARA BUSCAR UN CHEQUE POR EL NÚMERO
186
VISUAL C# APLICACIÓN Y DESARROLLO
}
//EL SIGUIENTE MÉTODO AÑADE UN NUEVO REGISTRO
public static void INSERTARCHEQUE
(
int numerocheque,
int numero_factura,
decimal valor_cheque,
DateTime fecha_cheque
)
{
using (SCXPEntities BD = new SCXPEntities())
{
/*PARA INSERTAR UN NUEVO OBJETO O CHEQUE ASIGNANDO LOS VALORES DE
LOS
PARÁMETROS A LOS CAMPOS DE LA TABLA.*/
BD.CHEQUES.AddObject(new CHEQUES
{
NUMERO_CHEQUE = numerocheque,
NUMERO_FACTURA = numero_factura,
VALOR_CHEQUE = valor_cheque,
FECHA_CHEQUE = fecha_cheque
});
BD.SaveChanges();
}
}
//EL SIGUIENTE MÉTODO MODIFICA UN REGISTRO
public static void MODIFICARCHEQUE
(
int numerocheque,
int numero_factura,
decimal valor_cheque,
DateTime fecha_cheque
)
{
using (SCXPEntities BD = new SCXPEntities())
{
187
VISUAL C# APLICACIÓN Y DESARROLLO
BD.DeleteObject(ELIMINA);
BD.SaveChanges();
}
}
public static CHEQUES CARGAR(int numerocheque)
{
CHEQUES CHEQUES = new CHEQUES();
using (SCXPEntities BD = new SCXPEntities())
{
var INFO = (from F in BD.CHEQUES
where F.NUMERO_CHEQUE == numerocheque
select F).Single();
CHEQUES.NUMERO_CHEQUE = INFO.NUMERO_CHEQUE;
CHEQUES.NUMERO_FACTURA = INFO.NUMERO_FACTURA;
CHEQUES.VALOR_CHEQUE = INFO.VALOR_CHEQUE;
CHEQUES.FECHA_CHEQUE = INFO.FECHA_CHEQUE;
return CHEQUES;
}
}
}
188
VISUAL C# APLICACIÓN Y DESARROLLO
181. Pulse la tecla F5 para ver los resultados de los que hemos hecho
hasta ahora.
ESTA ES LA VENTANA DE RESULTADO:
189
VISUAL C# APLICACIÓN Y DESARROLLO
try
{
DGVCHEQUES.DataSource =
DATOSCHEQUES.BUSCARELNUMERO(int.Parse(TNUMCHEQ.Text));
}
catch
{
MessageBox.Show("LA ENTRADA DEBE SER NUMÉRICA");
TNUMCHEQ.Focus();
}
190
VISUAL C# APLICACIÓN Y DESARROLLO
191
VISUAL C# APLICACIÓN Y DESARROLLO
try
{
DGVCHEQUES.DataSource =
DATOSCHEQUES.BUSCARELNUMERO(int.Parse(TNUMFACT.Text));
}
catch
{
MessageBox.Show("LA ENTRADA DEBE SER NUMÉRICA");
TNUMFACT.Focus();
192
VISUAL C# APLICACIÓN Y DESARROLLO
ADICIÓN DE FCHEQUES
Ya hemos visto cómo se cargan los datos de los FCHEQUES en el
DataGridView. Ahora veremos cómo se añaden registros a la tabla
Proveedores.
EL EVENTO SE VE ASÍ:
193
VISUAL C# APLICACIÓN Y DESARROLLO
189. Vuelva al diseño del formulario y haga doble clic sobre el botón
AGREGAR.
APARECE EL CUERPO DEL EVENTO CLICK DEL BOTÓN BAGREGAR:
194. Repita los mismos pasos para que se pueda pasar al siguiente control
al pulsar la tecla ENTER desde las cajas de texto TNUMFACT,
TVALCHEQ, TFECHACHEQ.
194
VISUAL C# APLICACIÓN Y DESARROLLO
try
{
DATOSCHEQUES.INSERTARCHEQUE(
int.Parse(TNUMCHEQ.Text),
int.Parse(TNUMFACT.Text),
decimal.Parse(TVALCHEQ.Text),
DateTime.Parse(TFECHACHEQ.Text)
);
195
VISUAL C# APLICACIÓN Y DESARROLLO
200. Escriba los datos del nuevo CHEQUE según muestra la siguiente
figura pulsando la techa ENTER para pasar siempre al próximo
TextBox:
196
VISUAL C# APLICACIÓN Y DESARROLLO
197
VISUAL C# APLICACIÓN Y DESARROLLO
MODIFICAR REGISTROS
203. Vaya al diseño del formulario FCHEQUES y haga doble clic sobre el
botón MODIFICAR.
198
VISUAL C# APLICACIÓN Y DESARROLLO
206. Vuelva al diseño del formulario y haga doble clic sobre un área no
ocupada para abrir el evento Load del formulario que debe verse así:
199
VISUAL C# APLICACIÓN Y DESARROLLO
207. Vuelva al diseño del formulario y haga doble clic sobre el botón
ACTUALIZAR.
208. Escriba el siguiente código:
try
{
DATOSCHEQUES.MODIFICARCHEQUE(
int.Parse(TNUMFACT.Text),
int.Parse(TNUMFACT.Text),
Convert.ToDecimal(TVALCHEQ.Text),
Convert.ToDateTime(TFECHACHEQ.Text)
);
200
VISUAL C# APLICACIÓN Y DESARROLLO
212. Repita los mismos pasos para que se pueda pasar al siguiente control
al pulsar la tecla ENTER desde las cajas de texto TNUMFACT,
TVALCHEQ, TFECHACHEQ.
201
VISUAL C# APLICACIÓN Y DESARROLLO
202
VISUAL C# APLICACIÓN Y DESARROLLO
217. Haga clic sobre el botón ACEPTAR para cerrar el formulario actual y
volver al formulario de MANTENIMIENTO DE CHEQUES.
203
VISUAL C# APLICACIÓN Y DESARROLLO
ELIMINACIÓN DE REGISTROS
En el evento Click del botón ELIMINAR eliminaremos el registro correspondiente
al CHEQUE seleccionado en el en el ADATAGRIDVIEW DGVFCHEQUES y le
enviamos como parámetro el código de la CHEQUE seleccionado al método
ELIMINARCHEQUE.
218. Vaya al diseño del formulario FCHEQUES y haga doble clic sobre el
botón ELIMINAR.
219. Escriba el siguiente código:
DialogResult respuesta = MessageBox.Show(
"DESEA ELIMINAR ESTA FACTURA?", "ADVERTENCIA DE ELIMINACION",
MessageBoxButtons.YesNo);
if (respuesta == DialogResult.Yes)
{
DataGridViewRow FILA = DGVCHEQUES.CurrentRow;
int numercheque = Convert.ToUInt16(FILA.Cells[0].Value);
DATOSFACTURAS.ELIMINARFACTURA(numercheque);
MessageBox.Show(
"SE HA BORRADO LA FACTURA" + numercheque, "REGISTRO ELIMINADO");
DGVCHEQUES.DataSource = DATOSCHEQUES.CARGAR(numercheque);
}
204
VISUAL C# APLICACIÓN Y DESARROLLO
205
VISUAL C# APLICACIÓN Y DESARROLLO
206
VISUAL C# APLICACIÓN Y DESARROLLO
207
VISUAL C# APLICACIÓN Y DESARROLLO
11. Haga doble clic en un área no ocupada del formulario para abrir el evento Load.
Escriba:
DGESTADODECUENTAS.DataSource = DATOSESTADO.MOSTRARESTADO();
12. Vuelva el diseño del formulario y haga doble clic sobre el Textbox TCODIGO para
abrir el evento Textchange y escriba:
DGESTADODECUENTAS.DataSource = DATOSESTADO.BUSCARPORCOIGO(TPORCODIGO.Text);
13. Vuelva el diseño del formulario y haga doble clic sobre el Textbox
TNUMEROFACRURA para abrir el evento Textchange y escriba:
DGESTADODECUENTAS.DataSource =
DATOSESTADO.BUSCARPORNUMEROFACTURA(int.Parse(TPORNUMEROFACTURA.Text));
14. Vuelva al diseño del formulario y haga doble clic sobre el botón VERTODOS.
15. Escriba:
DGESTADODECUENTAS.DataSource = DATOSESTADO.MOSTRARESTADO();
208
VISUAL C# APLICACIÓN Y DESARROLLO
REPORTE DE PROVEEDORES
18. En el explorador de soluciones haga clic derecho sobre el nombre del proyecto, seleccione
Add y escoja New Item.
19. Escoja la plantilla Reporting y haga clic sobre el elemento Report.
209
VISUAL C# APLICACIÓN Y DESARROLLO
20. En el cuadro de texto Name escriba: RPROVEEDORES y haga clic sobre el botón Add para
que aparezca la ventana de diseño del reporte.
21. Haga clic derecho en la ventana del diseño, seleccione Insert y escoja Table.
210
VISUAL C# APLICACIÓN Y DESARROLLO
211
VISUAL C# APLICACIÓN Y DESARROLLO
26. Seleccione los nodos Tables y Views (Tablas y Vistas) y haga clic sobre el botón Finish.
27. En el cuadro desplegable Data Source escoja SCXPDataSet.
28. En el cuadro desplegable Avalable Datsets escoja PROVEEDORES y haga clic sobre el botón
OK.
212
VISUAL C# APLICACIÓN Y DESARROLLO
30. Haga clic derecho dentro del área del encabezado seleccione Insert y escoja TextBox.
31. Escriba: LISTADO DE LOS PROVEEDORES, escoja el tamaño y el tipo de letra que desee.
32. Añada un Page Footer o pie de página, luego inserte un TextBox y escriba dentro la
siguiente expresión: =Globals!PageNumber
34. En caja columna de la fila Data de la tabla, haga clic para seleccionar y luego en el icono
que aparece en la esquina superior derecho de la celda, luego escoja el campo deseado.
213
VISUAL C# APLICACIÓN Y DESARROLLO
214
VISUAL C# APLICACIÓN Y DESARROLLO
REPORTE DE FACTURACIÓN
39. Añada un nuevo reporte al proyecto, pero esta vez escogerá Report Wizard como muestra
la siguiente ilustración:
215
VISUAL C# APLICACIÓN Y DESARROLLO
40. Nombre este reporte como FACTURACION y haga clic sobre el botón Add.
41. En el cuadro desplegable Data Source escoja SCXPDataSet.
42. En el cuadro desplegable Avalailable Data Sources escoja FACTURAS y haga clic sobre el
botón Next.
216
VISUAL C# APLICACIÓN Y DESARROLLO
217
VISUAL C# APLICACIÓN Y DESARROLLO
48. Añada un encabezado con el texto apropiado y un pie de página con el número de la
página.
49. Añada un ReportViewer al formulario FRFACTURAS y escoja el reporte que acabamos de
crear.
218
VISUAL C# APLICACIÓN Y DESARROLLO
219
VISUAL C# APLICACIÓN Y DESARROLLO
2. Expanda el nodo Other Project Types de la sección Installed Templates y luego Setup and
Deployment.
3. Escoja Visual Studio Installer y ,del cuadro de la derecha, seleccione Setup Wizard.
4. Escriba el nombre: INSTALADORCXP y haga clic sobre el botón OK.
220
VISUAL C# APLICACIÓN Y DESARROLLO
6. Escoja la opción Create a setup for a Windows Application y haga clic sobre el botón Next.
221
VISUAL C# APLICACIÓN Y DESARROLLO
7. Seleccione todas las opciones como muestra figura anterior y haga clic sobre el botón
Next.
8. Si no desea añadir archivos adicionales, que es nuestro caso, haga clic sobre el botón Next.
222
VISUAL C# APLICACIÓN Y DESARROLLO
223
VISUAL C# APLICACIÓN Y DESARROLLO
12. Haga clic derecho sobre el nombre del archivo que se añadió escoja Crear Shortcut to
Primary Output from CUENTAS POR COBRAR.
INSTALAD EL SISTEMA
224
VISUAL C# APLICACIÓN Y DESARROLLO
18. Si desea que el programa se instale en una carpeta diferente haga clic sobre el botón
Browse y localice la ubicación que desee.
225
VISUAL C# APLICACIÓN Y DESARROLLO
19. Si desea que todos los usuarios usen el sistema escoja la opción Everyone y haga clic sobre
el botón Next.
226
VISUAL C# APLICACIÓN Y DESARROLLO
227
VISUAL C# APLICACIÓN Y DESARROLLO
228
VISUAL C# APLICACIÓN Y DESARROLLO
Estos son los códigos para crear la base de datos en SQL SERVER
CREATE DATABASE CXC
TABLA CLIENTES
USE [CXC]
GO
SET QUOTED_IDENTIFIER ON
GO
GO
TABLA FACTURAS
USE [CXC]
GO
SET QUOTED_IDENTIFIER ON
229
VISUAL C# APLICACIÓN Y DESARROLLO
GO
GO
TABLA RECIBOS
USE [CXC]
GO
SET QUOTED_IDENTIFIER ON
GO
GO
230
VISUAL C# APLICACIÓN Y DESARROLLO
231
VISUAL C# APLICACIÓN Y DESARROLLO
232
VISUAL C# APLICACIÓN Y DESARROLLO
}
9. Haga clic debajo del procedimiento public partial class FENTRADA :
Form y escriba:
String U = "FRANK REYES";
String C = "LA SOLUCION";
FMENUPRI FM;
ASÍ DECLARAMOS LAS VARIABLES C Y U TIPO CADENAS O
STRING DONDE ALMACENAMOS EL NOMBRE DEL USUARIO Y LA
CONTRASEÑA QUE USAREMOS PARA ACCEDER AL SISTEMA.
TAMBIEN DECLARAMOS EL FORMULARIO FM TIPO FMENUPRI
QUE ES EL MENU PRINCIPAL DEL SISTEMA.
10. Haga clic debajo del procedimiento
private void BENTRADA_Click(object sender, EventArgs e)
{
233
VISUAL C# APLICACIÓN Y DESARROLLO
this.Hide();
FM.ShowDialog(this);
}
else
{
MessageBox.Show("NOMBRE DE USUARIO O CONTRASEÑA INVALIDO");
TUSUARIO.Focus();
}
14. Haga doble clic dentro de la caja de texto del evento KEYDOWN.
}
15. Escriba el siguiente código:
if (e.KeyValue == 13)
TCLAVE.Focus();
234
VISUAL C# APLICACIÓN Y DESARROLLO
}
18. Escriba el siguiente código:
if (e.KeyValue == 13)
BENTRADA.Focus();
235
VISUAL C# APLICACIÓN Y DESARROLLO
Ahora haremos que cualquier texto que escribamos en las cajas de texto
TUSUARIO y TCLAVE se convierta automáticamente en mayúscula.
Esto es necesario porque el nombre de usuario y la contraseña
asignados a las variables U y C, variables estas con cuyo contenido se
validará lo que digitemos en las cajas de texto antes mencionadas,
estan en mayúsculas. Así, no importa si el teclado esté en mayúsculas
o en minúsculas, convertirá el texto en mayúsculas.
namespace ENTRADA
{
public partial class FENTRADA : Form
{
String U = "FRANK REYES";
String C = "LA SOLUCION";
FMENUPRI FM;
public FENTRADA()
{
InitializeComponent();
}
private void BENTRADA_Click(object sender, EventArgs e)
{
if (TUSUARIO.Text == U & TCLAVE.Text == C)
{
FM = new FMENUPRI();
this.Hide();
FM.ShowDialog(this);
236
VISUAL C# APLICACIÓN Y DESARROLLO
}
else
{
MessageBox.Show("NOMBRE DE USUARIO O CONTRASEÑA INVALIDO");
TUSUARIO.Focus();
}
}
private void TUSUARIO_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
TCLAVE.Focus();
}
}
}
237
VISUAL C# APLICACIÓN Y DESARROLLO
238
VISUAL C# APLICACIÓN Y DESARROLLO
239
VISUAL C# APLICACIÓN Y DESARROLLO
240
VISUAL C# APLICACIÓN Y DESARROLLO
241
VISUAL C# APLICACIÓN Y DESARROLLO
242
VISUAL C# APLICACIÓN Y DESARROLLO
Esto termina la ejecución del proyecto. Ahora agreguemos los tres formularios de
entrada de datos.
61. Escriba:
FCLIENTES FC;
62. En el procedimiento
67. Escriba:
243
VISUAL C# APLICACIÓN Y DESARROLLO
FFACTURAS FF;
68. En el procedimiento
73. Escriba:
FRECIBOS FR;
74. En el procedimiento
namespace CUENTAS_POR_COBRAR
{
public partial class FMENU : Form
{
FCLIENTES FC;
FFACTURAS FF;
FRECIBOS FR;
public FMENU()
{
InitializeComponent();
}
244
VISUAL C# APLICACIÓN Y DESARROLLO
76. PULSE LA TECLA F5 para ejecutar el proyecto y luego pruebe las tres
opciones que hemos programado.
Hasta aquí sólo hemos hecho una pequeña parte de nuestro sistema. A
continuación haremos la conexión a la base da datos CUENTAS POR COBRAR.
Hasta AQUÍ sólo hemos hecho una pequeña parte de nuestro sistema. A continuación
haremos la conexión a la base da datos CUENTAS POR COBRAR.
245
VISUAL C# APLICACIÓN Y DESARROLLO
246
VISUAL C# APLICACIÓN Y DESARROLLO
247
VISUAL C# APLICACIÓN Y DESARROLLO
11. Marque, con un clic, la casilla de verificación TABLE Seleccionar todas las tablas
de la base de datos o haga clic sobre el signo de más (+) para ver todas las
tablas de las que puede Seleccionar las que desee en caso de no necesitarlas
todas.
248
VISUAL C# APLICACIÓN Y DESARROLLO
1. Haga clic sobre la ficha FCLIENTES.CS [DISIGN]* para ver el diseño del
formulario FCLIENTES.
2. Abra el menú DATA y escoja SHOW DATA SOURCES O VER FUENTES
DE DATOS.
249
VISUAL C# APLICACIÓN Y DESARROLLO
El uso del control NAVEGATOR que se añade en la parte superior del formulario
se lo explicamos en la siguiente tabla:
250
VISUAL C# APLICACIÓN Y DESARROLLO
10. Haga clic sobre la ficha FFACTURAS.CS [DESIGN] para ver el diseño del
formulario de facturación.
11. Arrastre la tabla FACTURAS desde el panel DATA SOURCE hacia dentro
del formulario.
12. Expanda la tabla FACTURAS para que muestre todos sus campos.
13. Arrastre el campo NUMERO FACTURA hacia dentro del formulario.
251
VISUAL C# APLICACIÓN Y DESARROLLO
Propiedad Valor
252
VISUAL C# APLICACIÓN Y DESARROLLO
253
VISUAL C# APLICACIÓN Y DESARROLLO
254
VISUAL C# APLICACIÓN Y DESARROLLO
23. Haga clic en la ficha FRECIBOS.CS [DESIGN]. Si no puede verlo haga clic
en la flecha doble descendente que aparece al final de la barra de tareas
(donde se muestra los demás formularios) para desplegar la lista y escójalo.
24. Arrastre la tabla RECIBOS desde el área DATASOURCE y colóquelo
dentro del formulario como hizo con las tablas CLIENTES Y FACTURAS
con sus respectivos formularios.
PROPIEDAD VALOR
255
VISUAL C# APLICACIÓN Y DESARROLLO
256
VISUAL C# APLICACIÓN Y DESARROLLO
257
VISUAL C# APLICACIÓN Y DESARROLLO
258
VISUAL C# APLICACIÓN Y DESARROLLO
5. Escriba:
FCONSUCLIENTES fcc;
6. En el procedimiento:
11. Escriba:
FCONSUFACT fcf;
12. En el procedimiento:
259
VISUAL C# APLICACIÓN Y DESARROLLO
17. Escriba:
FCONSUREC FCR;
18. En el procedimiento:
260
VISUAL C# APLICACIÓN Y DESARROLLO
26. Expanda las opciones OTHER DATA SOURCE(con clic al signa + que le
precede), PROJECT DATASOURCES, luego CXCDATASET y escoja
CLIENTES.
CLIENTESBINDINGSOURCE.
261
VISUAL C# APLICACIÓN Y DESARROLLO
262
VISUAL C# APLICACIÓN Y DESARROLLO
263
VISUAL C# APLICACIÓN Y DESARROLLO
UPDATE(ACTUALIZAR.)
CHANGES EXISTING DATA IN A TABLE (CAMBIA DATOS
EXISTENTES EN UNA TABLA.)
DELETE (ELIMINAR.)
REMOVES ROWS FROM A TABLE (REMUEVE FILAS DE UNA
TABLA)
INSERT (INSERTAR.)
ADDS A NEW ROW TO THE TABLE (AÑADE UNA NUEVA FILA A LA
TABLE.)
264
VISUAL C# APLICACIÓN Y DESARROLLO
34. En nuestro caso nos interesa una consulta de selección, por lo que
escogeremos la opción SELECT WHICH RETURN A SINGLE VALUE
(SELECCIONAR LO CUAL DEVUELVE UN SIMPLE VALOR)
35. Haga clic sobre el botón NEXT O SIGUIENTE.
SELECT CODIGO,NOMBRES,APELIDOS,DIRECCION,CIUDAD,TELEFONO
FROM CLIENTES
ASI ESPECIFICAMOS LOS CAMPOS QUE DESEAMOS QUE MUESTRE LA
CONSULTA CUANDO SE EJECUTE.
265
VISUAL C# APLICACIÓN Y DESARROLLO
266
VISUAL C# APLICACIÓN Y DESARROLLO
267
VISUAL C# APLICACIÓN Y DESARROLLO
Crearemos una consulta que nos pida que nos pida el CÓDIGO del CLIENTE
para que una vez digitado muestre sólo los datos del cliente al que pertenece
ese código.
268
VISUAL C# APLICACIÓN Y DESARROLLO
49. Haga clic dentro del cuatro de texto QUERY TEXT Y ESCRIBA:
SELECT CODIGO, NOMBRES, APELLIDOS, DIRECCION, CIUDAD,
TELEFONO FROM CLIENTES WHERE CODIGO =?
269
VISUAL C# APLICACIÓN Y DESARROLLO
270
VISUAL C# APLICACIÓN Y DESARROLLO
67. Por defecto aparecen todos los clientes según muestra la siguiente
figura:
271
VISUAL C# APLICACIÓN Y DESARROLLO
68. Para consultar un sólo cliente haga clic en el cuadro de texto donde se le
solicita el código del cliente que desea consultar, escriba el código del
cliente y haga clic sobre el botón MOSTRAR EL CLIENTE.
ESTO ES LO QUE VERÁ:
69. Para ver los clientes de una ciudad específica, haga clic dentro del cuatro
de texto donde se la pide el nombre de la ciudad cuyos clientes desea ver
(EN ESTE EJEMPLO ESCRIBIREMOS NAGUA).
70. Haga clic sobre el botón MOSTRAR LOS CLIENTES.
272
VISUAL C# APLICACIÓN Y DESARROLLO
72. Haga clic después del botón MOSTRAR LOS CLIENTES, luego haga clic
derecho, seleccione INSERT y escoja BUTTON. Ver figura.
273
VISUAL C# APLICACIÓN Y DESARROLLO
CODIGOToolStripTextBox.Clear();
NOTA:
Esto se hace con el objetivo de limpiar el contenido del cuadro de texto
código una vez que se ha hecho una consulta por el CÓDIGO y se quiere
consultar por CIUDAD.
CIUDADToolStripTextBox.Clear();
NOTA:
Esto se hace con el objetivo de limpiar el contenido del cuatro de texto ciudad
una vez que se ha hecho una consulta por CIUDAD y se quiere consultar por
EL CÓDIGO.
CODIGOToolStripTextBox.Clear();
CIUDADToolStripTextBox.Clear();
NOTA:
Esto se hace con el objetivo de limpiar el contenido de los cuadros de
texto Ciudad y Código una vez que se ha hecho una consulta por CIUDAD
o por CÓDIGO y se quiere consultar todos los clientes.
274
VISUAL C# APLICACIÓN Y DESARROLLO
275
VISUAL C# APLICACIÓN Y DESARROLLO
276
VISUAL C# APLICACIÓN Y DESARROLLO
277
VISUAL C# APLICACIÓN Y DESARROLLO
278
VISUAL C# APLICACIÓN Y DESARROLLO
99. Haga clic sobre el botón SIGUIENTE (NEXT) para dejar la conexión
CXCCONNECTIONSTRING (MY SETTINGS) que ya esta escogida creada en
este ejercicio en pasos anteriores.
100. Haga clic sobre el botón SIGUIENTE (NEXT) para especificar que usaremos
instrucciones SQL.
SELECT
CLIENTES.CODIGO, CLIENTES.NOMBRES, CLIENTES.APELLIDOS,
FACTURAS.[NUMERO FACTURA], FACTURAS.[VALOR FACTURA],
FACTURAS.[FECHA FACTURA], FACTURAS.[FECHA
VENCIMIENTO]
279
VISUAL C# APLICACIÓN Y DESARROLLO
CLIENTES_FACTURAS.
280
VISUAL C# APLICACIÓN Y DESARROLLO
281
VISUAL C# APLICACIÓN Y DESARROLLO
282
VISUAL C# APLICACIÓN Y DESARROLLO
283
VISUAL C# APLICACIÓN Y DESARROLLO
NOTA:
ESTE TIPO DE CONSULTA PARAMETRIZADA SE LE LLAMA CONSULTA
AMIGABLE.
284
VISUAL C# APLICACIÓN Y DESARROLLO
285
VISUAL C# APLICACIÓN Y DESARROLLO
118. Haga clic a la derecha del botón MOSTRAR, luego un clic derecho,
seleccione INSERTAR y escoja BUTTON.
286
VISUAL C# APLICACIÓN Y DESARROLLO
121. Haga doble clic sobre el botón VER TODAS LAS FACTURAS para ver la
ventana de código.
122. Haga clic después de TRY y pulse la tecla ENTER para insertar una
línea en blanco.
123. Escriba:
CODIGOToolStripTextBox.Clear();
125. Para ver las facturas de un cliente específico haga clic dentro del
cuadro de texto que sigue a la sugerencia DIGITE EL CÓDIGO DEL
CLIENTE: y escriba el código del cliente cuyas facturas desea ver. Por
ejemplo CR02.
126. Haga clic sobre el botón MOSTRAR.
287
VISUAL C# APLICACIÓN Y DESARROLLO
288
VISUAL C# APLICACIÓN Y DESARROLLO
289
VISUAL C# APLICACIÓN Y DESARROLLO
290
VISUAL C# APLICACIÓN Y DESARROLLO
291
VISUAL C# APLICACIÓN Y DESARROLLO
Ahora vamos a hacer una consulta que nos solicite el número de la factura que
se pago o a la que se le hizo un abono para ver todos los recibos hechos a esa
factura.
1. Vuelva al diseño del formulario FCONSUREC si no lo tiene activo.
292
VISUAL C# APLICACIÓN Y DESARROLLO
293
VISUAL C# APLICACIÓN Y DESARROLLO
A continuación haremos una consulta que nos solicite el código del cliente
para ver los pagos que ese cliente ha hecho a sus facturas.
294
VISUAL C# APLICACIÓN Y DESARROLLO
10. En la ventana del diseñador del conjunto de datos, haga clic derecho,
seleccione ADD o AÑADIR y escoja TABLE ADAPTER o ADAPTADOR DE
TABLA.
295
VISUAL C# APLICACIÓN Y DESARROLLO
296
VISUAL C# APLICACIÓN Y DESARROLLO
297
VISUAL C# APLICACIÓN Y DESARROLLO
18. Haga un clic sobre la el título del nuevo adaptador de tabla que se llama
DATATABLE2 para seleccionarlo y luego hágale otro clic para editarlo.
19. Escriba el nuevo nombre: CLIFACTREC.
298
VISUAL C# APLICACIÓN Y DESARROLLO
299
VISUAL C# APLICACIÓN Y DESARROLLO
300
VISUAL C# APLICACIÓN Y DESARROLLO
301
VISUAL C# APLICACIÓN Y DESARROLLO
34. Haga clic derecho después del botón MOSTRAR, seleccione INSERT o
INSERTAR y escoja BUTTON.
302
VISUAL C# APLICACIÓN Y DESARROLLO
303
VISUAL C# APLICACIÓN Y DESARROLLO
304
VISUAL C# APLICACIÓN Y DESARROLLO
305
VISUAL C# APLICACIÓN Y DESARROLLO
306
VISUAL C# APLICACIÓN Y DESARROLLO
307
VISUAL C# APLICACIÓN Y DESARROLLO
308
VISUAL C# APLICACIÓN Y DESARROLLO
309
VISUAL C# APLICACIÓN Y DESARROLLO
310
VISUAL C# APLICACIÓN Y DESARROLLO
LOS REPORTES
Los reportes o informes son el resultado final del procesamiento de los datos de
un sistema de información. Una vez que se ha hecho la entrada que alimentan el
sistema, actividad esta que se extiende desde la puesta en marcha del sistema
hasta su expiración, se crean las consultas con el objetivo de obtener información
visual. Por último se crean los reportes o informes que son los objetos utilizados
para dar salida impresa a la información proveniente de tablas y/o consultas. La
información se puede agrupar por categoría con subtotales y totales.
311
VISUAL C# APLICACIÓN Y DESARROLLO
11. Escoja el componente TABLE o TABLA y colóquelo dentro del diseño que
se verá así.
312
VISUAL C# APLICACIÓN Y DESARROLLO
14. Modifique la anchura y la altura de la caja del TEXBOX para que el texto
pueda verse.
El diseño tiene tres columnas, necesitamos añadir tres columnas más porque la
tabla clientes tiene seis.
15. Haga clic derecho en la barra divisora del área BODY y HEADER y escoja
INSERT COLUMN TO THE RIGHT o INSERTAR COLUMNA A LA DERECHA
16. Repita el paso anterior dos veces más para completar las seis columnas.
17. En las columnas de la fila HEADER escriba: CÓDIGO, NOMBRES,
APELLIDOS, DIRECCIÓN, CIUDAD Y TELÉFONO según muestra la figura
siguiente:
313
VISUAL C# APLICACIÓN Y DESARROLLO
314
VISUAL C# APLICACIÓN Y DESARROLLO
NOTA:
NOTE QUE EN LA PARTE INFERIOR DEL FORMULARIO SE AÑADEN LOS
SIGUIENTES ELEMENTOS:
CXC DATASET
CLIENTESBINDINGSOURCE Y
CLIENTESTABLEADAPTER.
315
VISUAL C# APLICACIÓN Y DESARROLLO
316
VISUAL C# APLICACIÓN Y DESARROLLO
317
VISUAL C# APLICACIÓN Y DESARROLLO
El siguiente cuadro de diálogo muestra las tablas y los otros objetos de datos y
consultas disponibles en el proyecto abierto.
11. Escoja la tabla FACTURAS y haga clic sobre el botón NEXT o SIGUIENTE.
318
VISUAL C# APLICACIÓN Y DESARROLLO
En el siguiente cuadro de diálogo se nos ofrecen los tipos de reportes para que
escojamos el que deseamos aplicar.
En este ejercicio escogeremos tabular por ser el más adecuado para nuestra
situación.
12. Escoja la opción TABULAR y haga clic sobre el botón NEXT o SIGUIENTE.
Este cuadro de diálogo nos permite colocar los campos de la siguiente forma:
319
VISUAL C# APLICACIÓN Y DESARROLLO
320
VISUAL C# APLICACIÓN Y DESARROLLO
18. Escoja el estilo GENERIC y haga clic sobre el botón NEXT O SIGUIENTE.
321
VISUAL C# APLICACIÓN Y DESARROLLO
322
VISUAL C# APLICACIÓN Y DESARROLLO
24. Cambia seleccione el cuadro de texto del título del reporte, cambie el
tamaño de fuente a 16, formato NEGRITA y céntrelo.
25. Modifique apropiadamente el tamaño del diseño, si lo desea.
26. Haga clic derecho en la parte inferior (la parte gris) de la ventana del diseño
del reporte y escoja TABLE FOOTER o PIE DE TABLA.
323
VISUAL C# APLICACIÓN Y DESARROLLO
324
VISUAL C# APLICACIÓN Y DESARROLLO
FACTURASSBINDINGSOURCE Y
FACTURASTABLEADAPTER.
325
VISUAL C# APLICACIÓN Y DESARROLLO
1. Haga clic sobre el botón ADD NEW ITEM o AGREGAR NUEVO ELEMENTO
.
326
VISUAL C# APLICACIÓN Y DESARROLLO
}
InitializeComponent();
}
7. Suba el cursor hasta el procedimiento:
public partial class FMENU : Form
{
FCLIENTES FC;
FFACTURAS FF;
FRECIBOS FR;
FCONSUCLIENTES fcc;
FCONSUFACT FCF;
FCONSUREC FCR;
FRCLIENTES FRC;
FRFACTURACION FRF;
327
VISUAL C# APLICACIÓN Y DESARROLLO
{
FCLIENTES FC;
FFACTURAS FF;
FRECIBOS FR;
FCONSUCLIENTES fcc;
FCONSUFACT FCF;
FCONSUREC FCR;
FRCLIENTES FRC;
FRFACTURACION FRF;
FPRECIBOS FPR;
public FMENU()
{
InitializeComponent();
}
9. Vuelva al procedimiento:
private void cOBORSToolStripMenuItem_Click(object sender, EventArgs e)
{
}
10. Escriba:
RPR = new FPRECIBOS();
FPR.Show();
328
VISUAL C# APLICACIÓN Y DESARROLLO
329
VISUAL C# APLICACIÓN Y DESARROLLO
330
VISUAL C# APLICACIÓN Y DESARROLLO
22. Arrastre los campos desde la tabla RECIBOS hasta cada celda de la fila
DETAIL o DETALLE.
23. Haga clic derecho dentro parte gris del diseño del formulario y escoja PAGE
FOOTER o PIE DE PÁGINA.
331
VISUAL C# APLICACIÓN Y DESARROLLO
332
VISUAL C# APLICACIÓN Y DESARROLLO
=Sum(Fields!VALOR_RECIBO.Value, "cxcDataSet_RECIBOS")
333
VISUAL C# APLICACIÓN Y DESARROLLO
NOTA:
NOTE QUE EN LA PARTE INFERIOR DEL FORMULARIO SE AÑADEN LOS
SIGUIENTES ELEMENTOS:
a. CXC DATASET
b. RECIBOSBINDINGSOURCE Y
c. RECIBOSTABLEADAPTER.
334
VISUAL C# APLICACIÓN Y DESARROLLO
Este reporte lo también lo haremos usando una plantilla en blanco con el objetivo
de afianzar los cocimientos adquiridos en el ejercicio anterior.
38. Haga clic sobre el botón ADD NEW ITEM o AGREGAR NUEVO ELEMENTO.
335
VISUAL C# APLICACIÓN Y DESARROLLO
336
VISUAL C# APLICACIÓN Y DESARROLLO
}
44. Suba el cursor hasta el procedimiento:
public partial class FMENU : Form
{
FCLIENTES FC;
FFACTURAS FF;
FRECIBOS FR;
FCONSUCLIENTES fcc;
FCONSUFACT FCF;
FCONSUREC FCR;
FRCLIENTES FRC;
FRFACTURACION FRF;
FPRECIBOS FPR;
}
48. Escriba:
FREC = new FRPESTADODECUENTAS();
FREC.Show();
337
VISUAL C# APLICACIÓN Y DESARROLLO
}
49. Repita el paso no. 1.
50. En el panel CATEGORIES o CATEGORÍAS escoja REPORTING y en el
panel TEMPLATES o PLANTILLAS escoja REPORT como se destaca en la
figura siguiente:
338
VISUAL C# APLICACIÓN Y DESARROLLO
339
VISUAL C# APLICACIÓN Y DESARROLLO
61. Arrastre los campos desde la tabla RECIBOS hasta cada celda de la fila
DETAIL o DETALLE.
340
VISUAL C# APLICACIÓN Y DESARROLLO
62. Haga clic derecho dentro parte gris del diseño del formulario y escoja PAGE
FOOTER o PIE DE PÁGINA.
341
VISUAL C# APLICACIÓN Y DESARROLLO
=Sum(Fields!VALOS_FACTURA.Value, "cxcDataSet_BALANCE")
342
VISUAL C# APLICACIÓN Y DESARROLLO
=Sum(Fields!VALOR_RECIBO.Value, "cxcDataSet_BALANCE"
=Sum(Fields!VALOS_FACTURA.Value, "cxcDataSet_BALANCE") -
Sum(Fields!VALOR_RECIBO.Value, "cxcDataSet_BALANCE")
343
VISUAL C# APLICACIÓN Y DESARROLLO
NOTA:
NOTE QUE EN LA PARTE INFERIOR DEL FORMULARIO SE AÑADEN LOS
SIGUIENTES ELEMENTOS:
a. CXC DATASET
b. BALANCEBINDINGSOURCE Y
c. BALANCETABLEADAPTER.
344
VISUAL C# APLICACIÓN Y DESARROLLO
345