Você está na página 1de 241

INSTITUTO TECNOLOGICO DE LOS MOCHIS

DIPLOMADO EN SISTEMAS DE
INFORMACIN I - C#
La plataforma .NET y el lenguaje
de programacin C#





La plataforma .NET
Qu NO es .NET?
.NET no es un Sistema Operativo
.NET no es un Lenguaje de Programacin
.NET no es un Entorno de Desarrollo
Qu es .NET?
Es una plataforma de desarrollo de ejecucin
intermedia compuesta de:

Entorno de Ejecucin (Runtime)
Bibliotecas de Clases (Class Library)
Lenguajes de Programacin
Compiladores
Herramientas de Desarrollo (IDE & Tools)
Caractersticas de .NET (1/2)
Plataforma de ejecucin intermedia

Se distribuye en forma libre y gratuita
Multilenguaje
100% Orientada a Objetos
Ofrece un modelo de programacin nico para diversos
tipos de aplicaciones y dispositivos de hardware
Qu es el .NET Framework?
Paquete de software fundamental de la plataforma .NET
que incluye:
Entorno de Ejecucin (Runtime)
Bibliotecas de Clases (Class Library)
Existen tres variantes principales:
.NET Framework SDK (contiene herramientas de desarrollo)
.NET Framework Redistributable Package (entornos productivos)
.NET Compact Framework
.NET Compact Framework
*

*
Aplicacin
Mvil
Aplicacin de
Consola
Aplicacin Web
Aplicacin de
Escritorio
Dnde instalar el .NET Framework?
Servidor Cliente
* Slo si la aplicacin es distribuda
Windows COM+ Services
Common Language Runtime (CLR)
Base Class Library
ADO.NET y XML
ASP.NET Windows Forms
Common Language Specification (CLS)
VB C++ C# J#
Arquitectura del .NET Framework
.
N
E
T

F
r
a
m
e
w
o
r
k

R
e
d
i
s
t
r
i
b
u
t
a
b
l
e

.
N
E
T

F
r
a
m
e
w
o
r
k

S
D
K

.
N
E
T

F
r
a
m
e
w
o
r
k


C
l
a
s
s

L
i
b
r
a
r
y

Common Language Runtime (CLR)
El CLR es un entorno de ejecucin que corre sobre el
sistema operativo (maquina virtual de .NET) y es el
encargado de ejecutar las aplicaciones y proveerles
servicios en tiempo de ejecucin.
Caractersticas
Compilacin Just-In-Time (JIT)
Gestin automtica de memoria (Garbage Collector)
Gestin de errores consistente (Excepciones)
Ejecucin basada en componentes (Assemblies)
Multithreading
Common Language Specification (CLS)
Uno de los objetivos de diseo de la plataforma .NET fue el ser
independiente del lenguaje de programacin elegido para el
desarrollo de aplicaciones. Para lograr esto es que se cre la
Especificacin de Lenguaje Comn (o CLS, por sus siglas en ingls),
que define y estandariza un subconjunto de todas las caractersticas
soportadas por el CLR y que son necesarias en la mayora de las
aplicaciones.
VS2010 provee implementaciones de 5 lenguajes, todos compatibles
con CLS
Microsoft Visual Basic .NET
Microsoft Visual C# .NET
Microsoft Visual J#.NET
Microsoft Visual C++.NET
Microsoft Visual F# .NET

Common Language Specification (CLS)
El resto de la industria y el sector acadmico han desarrollado ms de
20 lenguajes compatibles con la especificacin CLS.No hay
diferencias notorias de performance entre los lenguajes provistos por
Microsoft.El lenguaje a utilizar depender de la experiencia previa con
otros lenguajes o de gustos personales

Cobol
Eiffel
Fortran
Pascal
Perl
C++.NET
C#
Haskell
Java JavaScrip
t
Visual
Basic.NET
Mercury
ML
PHP
Objective Caml
Oberon
Smalltalk Scheme
J#
RPG
Mondrian
APL
Delphi
Python
LISP
Prolog
F#
Common Type System (CTS)
Todo tipo hereda directa o
indirectamente del tipo
System.Object
El sistema comn de tipos, conocido como CTS, provee una
definicin comn de los tipos de datos bsicos que utiliza el CLR.
El CTS posibilita, entre otras cosas, que todos los lenguajes de
alto nivel (del CLS) que compilan en .NET compartan el mismo
sistema de tipos de datos, permitiendo lograr una mejor
interoperabilidad.
.NET Framework Class Library
System
System.Data System.Xml
System.Web
Globalization
Diagnostics
Configuration
Collections
Resources
Reflection
Net
IO
Threading
Text
ServiceProcess
Security
Common
OleDb
SqlClient
Odbc
XPath
XSLT
Runtime
InteropServices
Remoting
Serialization
Serialization
Configuration SessionState
Caching Security
Services
Description
Discovery
Protocols
UI
HtmlControls
WebControls
System.Drawing
Imaging
Drawing2D
Text
Printing
System.Windows.Forms
Design ComponentModel
.NET Framework Class Library - Windows Forms
System.Drawing
Drawing2D
Imaging
Printing
Text
System.WinForms
Design ComponentModel
.NET Framework Class Library - ASP.NET
System.Web
Caching
Configuration
Services UI
SessionState
HtmlControls
WebControls
Description
Discovery
Security
Protocols
.NET Framework Class Library - ADO.NET
System.Data
OleDb
SqlClient
OracleClient
Common
Odbc
SqlTypes
System.Xml
Serialization
XPath
XSLT
Schema
Ventajas de .NET
a) Unifica los modelos de programacin
b) Simplifica el desarrollo de aplicaciones
c) Provee un entorno de ejecucin robusto y
seguro
d) Es independiente del lenguaje de programacin
e) Simplifica la instalacin y administracin de las
aplicaciones
Unificacin de modelos de programacin
Una de las principales ventajas de .NET es que unifica los
modelos de programacin, bibliotecas de clases y entornos de
ejecucin que existan anteriormente para distintos tipos de
aplicaciones y distintos dispositivos.
Desarrollo simplificado
Alto nivel de abstraccin
No mas accesos COM a bajo nivel
Orientado a Objetos desde el Ncleo
Componentes de Software
Propiedades, mtodos, eventos, y atributos incluidos
en la construccin de clases
Sistema de tipos unificado (CTS)
Todo es un objeto, no mas variants
Entorno de ejecucin robusto y seguro
Gestin automtica de la memoria
Todos los objetos son administrados por el Garbage
Collector
Fuertemente tipado
Inicializacin de variables obligatoria
Solo casteos seguros
Manejo de excepciones
Independencia del lenguaje
Libertad en la eleccin del lenguaje
Todas las facilidades de la plataforma .NET estn
disponibles a todos los lenguajes de programacin
.NET
Los componentes de una aplicacin .NET pueden ser
escritos en distintos lenguajes de alto nivel
compatibles con la plataforma
Herramientas compartidas
Debuggers, profilers, analizadores de cdigo, y otras
trabajan para todos los lenguajes
Instalacin y administracin ms simples
Unidades de Ensamblado (Assemblies)
Mnima unidad de distribucin, versionado y
administracin de seguridad de aplicaciones .NET
Auto-descriptas a travs de un manifiesto (manifest)
Instalaciones Cero-impacto
Aplicaciones y componentes pueden ser compartidas
o privadas
Versioning
Mltiples versiones del mismo componente pueden co-
existir, an en el mismo proceso






Visual Studio 2010 y C#
El lenguaje C#

El ltimo en una lnea de evolucin de los lenguajes
derivados de C, que incluye C++ y Java
Usado por Microsoft para desarrollar la mayora del
cdigo de .NET
Creado con .NET en mente, por tanto es el lenguaje ideal
para el desarrollo en .NET

Estructura de un programa C# - I
using system;
namespace N1 {
class C1 {
// ...
}
struct S1 {
// ...
}
interface I1 {
// ...
}
delegate int D1();
enum E1 {
// ...
}
}

Una aplicacin en C# esta conformada de:
Uno o ms archivos (assembly) los cuales
contienen:
Uno o ms namespace que contienen:
Una o mas clases, estructuras,
interfaces, enumeraciones y/o delegates


La palabra clave using tiene dos usos principales:
Como directiva, cuando se utiliza para crear un alias
para un espacio de nombres o para importar tipos
definidos en otros espacios de nombres.
Como instruccin, cuando define un mbito al final
del cual el objeto se destruye.

La palabra clave namespace se utiliza para declarar un
mbito. Este mbito permite organizar el cdigo y
proporciona una forma de crear tipos globalmente
nicos. Un namespace es un contenedor de clases,
estructuras, interfaces, enumeraciones y delegates



Aplicaciones de consola - I
Se puede definir una aplicacin de consola como aquella
que se ejecuta en una ventana del smbolo del sistema,
es decir, en lnea de comandos.

Los desarollos mas comunes bajo la plataforma .Net son
las aplicaciones de ventana, web y mviles. Sin embargo
la mejor forma de sentar bases sobre el manejo de los
diferentes elementos del lenguaje de programacin C#
es comenzar construyendo aplicaciones sencillas de
consola.
Aplicaciones de consola - II
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
}
}
}
Un programa ejecutable en c# (de
consola o de ventana) consta al menos
de una clase, la cual debe contener
obligatoriamente un mtodo Main como
punto de entrada.

Aplicaciones de consola - III
La clase Console

La clase Console proporciona una compatibilidad
bsica para las aplicaciones que leen y escriben
caracteres en la consola.

El mtodo WriteLine()

Este mtodo es el que se usa para mostrar texto
en la consola, el mtodo escribe en la pantalla el
valor que le pasemos como parmetro.

El parmetro que recibe el mtodo puede ser de
varios tipos, ya sea una cadena de caracteres, un
nmero entero, una lnea en blanco, etc...
using System;

namespace ConsoleApplication2
{
class Class1
{
static void Main(string[] args)
{
//Escribimos una cadena de caracteres.
Console.WriteLine("Escribiendo una lnea en
la consola");
//Escribimos un numero entero
Console.WriteLine(23);
//Escribimos una comparacin lgica
Console.WriteLine(3 > 1);
Console.ReadLine();
}
}
}
Aplicaciones de consola - IV
El mtodo ReadLine()

Este mtodo de la clase Console se usa para recoger
la informacin que el usuario introduce por el teclado.
using System;

namespace ConsoleApplication2
{
class Class1
{
static void Main(string[] args)
{
//Declaramos una variable de tipo cadena
string cadena;
//Mostramos un mensaje al usuario
Console.WriteLine("Por favor, introduzca su
nombre:");
//Capturamos el dato introducido por el usuario
cadena = Console.ReadLine();
//Operamos con el dato
cadena = "El nombre introducido es: " +
cadena;
//Mostramos la cadena
Console.WriteLine(cadena);
Console.ReadLine(); }
}
}
Tipos de datos
Clase Convert

Se utiliza para llevar a cabo conversiones entre tipos
de datos. Contiene mtodos como ToInt32() y
ToDouble().
Mtodos Parse()

Se utilizan en las diferentes clases de tipos de datos
para llevar a cabo conversiones entre los mismos.
Identificadores
Los identificadores se utilizan para dar nombres a elementos de un
programa como variables, constantes y mtodos
Constan de caracteres alfanumricos y _, es sensible a
maysculas y minsculas, debe comenzar con letra o _

Variables y Constantes
Una variable en C# representa la localizacin en memoria
donde una instancia de un tipo de dato es guardada. Son
una capa encima del CTS.



bool bln = true;
byte byt1 = 22;
char ch1=x;
double dbl1=1.23;
short sh = 22;
int i = 22;
long lng1 =22;
sbyte sb = 22;
float f=1.23F;
string s = "Hola";
object o = new System.Object();
Button bts = new Button();
Constantes:

const int min = 1;
const int max = 100;
Const int range = max min;
Conformacin de un proyecto en VS 2010
Archivo .sln: Archivo de la solucin. Contiene uno o
mas proyectos relacionados.
Archivo .csproj: Archivo de proyecto. Contiene todas
las unidades de cdigo, formularios y otros elementos
que constituyen un proyecto.
Archivos .cs: Archivos de cdigo fuente. Contienen
el cdigo fuente de el programa en texto claro.
Archivos .Designer.cs: Archivos de diseo de
formularios. Contienen la distribucin visual de los
componentes en los formularios.
Archivos .resx: Archivos de recursos de formulario.
Contiene imgenes, sonidos y demas objetos
incrustados.
Carpetas obj y bin: Contienen los archivos de cdigo
intermedio, obj y ejecutables generados por el
proyecto.

Utilizando los mtodos Console.WriteLine() y Console.ReadLine().

1.1 Abrir una nueva aplicacin de consola y escribir un programa que
capture el nombre del usuario y su ao de nacimiento. El programa debe
calcular su edad en aos y desplegarla pantalla.
1.2 Abrir una nueva aplicacin de consola y escribir un programa que sume,
reste, multiplique y divida dos nmeros proporcionados por el usuario. El
programa debe desplegar el resultado en pantalla.

Conjunto de prcticas 1
15 minutos
Operadores
Operadores en C#



Operadores aritmticos:
Suma: a+b
Resta: a-b
Multiplicacin: a*b
Divisin: a/b
Resto: a%b
Incremento: ++a o a++
Decremento: --a o a--
Operadores relacionales:
Igualdad: a==b
Diferencia: a!=b
Menor que: a<b
Menor o igual: a<=b
Mayor que: a>b
Mayor que o Igual a: a>=b
Operadores lgicos:
Negacin: !a
And lgico: a&&b
Or lgico: a||b
Or exclusivo: a^b
Operadores de asignacin (si a=3 y b=7):
Asignacin: a=b; //Resultado a=7
Suma: a+=b; // Resultado a=10
Resta: a-=b; Resultado b=-4
Multiplicacin: a*=b; //Resultado a=21
Divisin: a/=b; //Resultado: a= 0
Resto: a%=b; //Resultado a= 3
Conjunto de prcticas 2
2.1 Abrir una nueva aplicacin de consola y escribir un programa que
capture un nmero, lo incremente y decremente usando los operadores
aritmticos ++ y -- e imprima el resultado de cada operacin en pantalla.
2.2 Abrir una nueva aplicacin de consola y escribir un programa que
capture un nmero proporcionado por el usuario y a este le sume 100, le
reste 50, lo multiplique por 3 y divida entre 2 utilizando los operadores
de asignacin (estilo c) correspondientes e imprima el resultado de
cada operacin en consola.
15 minutos
Sentencias en C# - I
Las sentencias pueden ocupar ms de una lnea y deben
terminarse con un ;
Los grupos o bloques de sentencias relacionadas se deben
agrupar con { y }
E.j:

int i, j; //Declaracin de variables
i=1; // Asignacin
// un bloque de sentencias
{
j=2;
i=i+j;
}




Condicional if - I
Es la instruccin condicional mas usada en los diversos
lenguajes de programacin, su formato completo y de
trabajo en C Sharp es:
bool flagCheck = true;
if (flagCheck == true)
{
Console.WriteLine(El valor de la variable es verdadero.");
Console.WriteLine(");
}
else
{
Console.WriteLine(El valor de la variable es falso.");
Console.WriteLine(");
}
if (condicin)
{
grupo cierto de instrucciones;
}
else
{
grupo falso de instrucciones;
}
Condicional if - II
Ejemplos:

if (i<5) // una sentencia slo parte if
Console.WriteLine("i < 5");

if (i<5) // una sentencia con parte if y else
Console.WriteLine("i<5");
else
Console.WriteLine("i>=5);

// bloque de sentencias con parte if y else
if (i<5) {
Console.WriteLine("i<5");
Console.WriteLine("i es ms pequeo");
} else {
Console.WriteLine("i>=5");
Console.WriteLine("i NO es ms pequeo");
}
Conjunto de prcticas 3
3.1 Escribir un programa que calcule el salario semanal de un trabajador en base a las horas
trabajadas y el pago por hora trabajada:
o Horas ordinarias (40 primeras horas de trabajo) : 200 pesos por hora
o Horas extra (despus de las primeras 40):1.5 veces el precio hora ordinaria
3.2 Escribir un programa en que calcule el salario neto semanal de un trabajador en funcin del
nmero de horas trabajadas y la tasa de impuestos de acuerdo a lo siguiente:
o La tarifa por hora es de 5 dlares
o Las primeras 35 horas se pagan a tarifa normal
o Las horas que pasen de 35 se pagan 1.5 veces la tarifa normal
o Las tasas de impuestos son:
a: Los primeros 500 dlares son libres de impuestos
b: Los siguientes 400 dlares tienen un 25% de impuestos
c: Los restantes de 45% de impuestos
60 minutos
Condicional switch - I
La instruccin switch es una instruccin de control que
controla mltiples selecciones y enumeraciones pasando
el control a una de las instrucciones case de su cuerpo,
como se muestra en el ejemplo siguiente:
int caseSwitch = 1;
switch (caseSwitch)
{
case 1:
Console.WriteLine("Case 1");
break;
case 2:
Console.WriteLine("Case 2");
break;
default:
Console.WriteLine("Default case");
break;
}
switch (<expresin>)
{
case <valor1>:
<bloque1>
break;
case <valorn>:
<bloque2>
break;
default:
<bloqueDefault>
break;
}
Conjunto de prcticas 4
4.1 Construir una aplicacin que reciba el nmero de un mes del ao como el
parmetro y proporcione su nombre correspondiente.
4.2 Elaborar un programa que permita introducir dos nmeros por el teclado y
permita al usuario seleccionar desde un men la operacin que desea llevar a
cabo: suma, resta, multiplicacin, divisin o mdulo.
4.3 Elaborar un programa que muestre al usuario un men como el que se indica
a continuacin y lleve a cabo la operacin correspondiente:
o rea de tringulo
o rea de Cuadrado
o rea de Circulo
o rea de Rectngulo
60 minutos
Operador condicional ternario
El operador condicional ?: devuelve uno de dos valores segn el
valor de una expresin booleana. El operador condicional tiene el
formato:

condicion ? Primera_expresion : Segunda_expresion;

Si la condicin es true, se evala la primera expresin y se convierte
en el resultado; si es false, se evala la segunda expresin y se
convierte en el resultado. Slo se evala una de las dos expresiones.

String s = (x != 0) ? Diferente de cero : Igual a cero;

Ciclo For - I
En C# este ciclo es uno de los mas usados para repetir una secuencia de
instrucciones sobre todo cuando se conoce la cantidad exacta de veces que se quiere
que se ejecute una instruccin simple o compuesta. Su formato general es:

for (inicializacin; condicin; incremento)
{
instruccin(es);
};

Inicializacin: Es una instruccin de asignacin que carga una variable de control
de ciclo con un valor inicial.
Condicin: Es una expresin relacional que evala la variable de control de ciclo
contra un valor final o de parada que determina cuando debe acabar el ciclo.
Incremento: Define la manera en que la variable de control de ciclo debe cambiar
cada vez que el computador repite un ciclo.
for (int i=1; i<=5; i++)
{
Console.WriteLine(Valor I: + i);
}
5.1 Elaborar un programa que despliegue la tabla de
multiplicar (1 al 10) de un nmero proporcionado por el
usuario.
Conjunto de prcticas 5
30 minutos
Ciclo do..while - I
El ciclo do-while ejecuta una instruccin o un conjunto de instrucciones
entre {} repetidamente hasta que una expresin especificada se evale
como false. El ciclo do-while, sirve para repetir una instruccin o un
grupo de instrucciones que deben ejecutarse al menos una vez.





int i=1;
do
{
Console.WriteLine(Valor de i: + i);
i++;
}while (i<=5);
do
{
grupo cierto de instruccin(es);
instruccin(es) de rompimiento de ciclo;
} while (condicin);
Conjunto de prcticas 6
6.1 Elaborar un programa que permita leer una serie de
nmeros mayores que 10 y muestre la suma acumulada de
ellos a medida que se van capturando. La salida del programa
se dar cuando el usuario proporcione el nmero -1.
30 minutos
Ciclo while - I
El ciclo while ejecuta una instruccin o un conjunto de instrucciones
repetidamente mientras que una expresin especificada se evala como
verdadera.. El ciclo while, sirve para repetir una instruccin o un
grupo de instrucciones que pueden no ejecutarse ni una sola
vez.




int i=1;
while (i<=5)
{
Console.WriteLine(Valor de i: i);
i++;
}
while (condicin)
{
grupo cierto de instruccin(es);
instruccin(es) de rompimiento de ciclo;
}
Conjunto de prcticas 7
7.1 Elaborar un programa que permita generar la tabla de multiplicar de un
nmero dado hasta un hasta un lmite capturado por el usuario. Ejemplo :
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
: : :
: : :
5 x 20= 100
30 minutos
continue y break
continue, se usa para saltar el resto de la iteracin y
comenzar la siguiente

for (int i=1; i<=5; i++) {
if (i==3)
continue;
System.Console.WriteLine(i);
}

break, se usa para salir de un ciclo:

for (int i=1; i<=5; i++) {
if (i==3)
break;
System.Console.WriteLine(i);
}




Conjunto de prcticas 8
Escribir un programa que escriba en consola los nmeros
comprendidos entre 1 y 100. El programa escribir en la
pantalla los nmeros en grupos de 20, solicitando al usuario
si quiere o no continuar visualizando el siguiente grupo de
nmeros.

15 minutos
Structs
Un tipo struct es un tipo de valor que se suele utilizar para encapsular pequeos grupos
de variables relacionadas, como las coordenadas de un rectngulo o las caractersticas
de un elemento de un inventario. En el ejemplo siguiente se muestra una declaracin
de estructura sencilla.

public struct Libro
{
public decimal precio;
public string titulo;
public string autor;
}

Las estructuras tambin pueden contener constructores, constantes, campos, mtodos,
propiedades, indizadores, operadores, eventos y tipos anidados, aunque si se requieren
estos miembros, se debe considerar la posibilidad de crear una clase en vez de un tipo.


Conjunto de prcticas 9

Definir una struct llamado Citas que incluya los campos:
Da
Hora
Nombre
Posteriormente declarar la variable correspondiente y leer desde el teclado
los valores que sern asignados a cada campo de la estructura.
30 minutos
Arreglos
Un arreglo es un conjunto de elementos del mismo tipo
dispuestos uno a continuacin del otro, que nos permite
conservar datos en la memoria de la computadora.
Caractersticas:

Todos los arreglos tienen un tipo de dato asociado.
El acceso es por medio de un ndice que empieza en 0.
El arreglo tiene un nombre.
El tipo de dato ser igual para todos los elementos del
arreglo, pero cada elemento puede tener diferentes valores.

Para crear un arreglo string de 100 elementos se usara:

string[] a = new string[100];
a[2] = "Hola"; //Tercer elemento (Inician en cero)

Para crear un arreglo bidimensional de 3X3 elementos se usara:

int[,] b = new string[3,3];
b[0,1] = 5; //Primera fila, segunda columna

Los arrays se pueden inicializar directamente:
string[] a1 = {"gato", "perro", "caballo"}
int[] a2 = {1, 2, 3};


Arreglos
Conjunto de prcticas 11
Escribir un programa que rellene un array con los nmeros
enteros. Los valores deben leerse desde el teclado.
Posteriormente, imprimir en pantalla la posicin y valor de cada
elemento del arreglo.
Escribir un programa en que solicite cinco nmeros, los almacene
en un array y luego calcule la media aritmtica de esos nmeros.
Desplegar el resultado correspondiente en consola.
Escribir un programa que determine la posicin de la siguiente
matriz en la que se encuentra el valor mximo:

23 45 68
34 99 12
25 78 89


60 minutos
Manipulacin de Cadenas en C#
Caracteres de escape

Los caracteres de escape como "\n" y (nueva lnea) y "\t" (tabulador) se pueden incluir en cadenas.

string hello = "Hello\nWorld!";
equivale a:
Hello
World!

Si desea incluir una \ en una cadena, sta debe estar precedida de otra \. La cadena siguiente:

string filePath = "\\\\My Documents\\"; equivale a: \\My Documents\

El smbolo @ indica que se deben omitir caracteres de escape y saltos de lnea. Las dos cadenas
siguientes son, por consiguiente, idnticas:
string p1 = "\\\\My Documents\\My Files\\";
string p2 = @"\\My Documents\My Files\";


Manipulacin de Cadenas en C#
Cambiar maysculas y minsculas

Para cambiar las letras en una cadena a maysculas o minsculas, se utiliza
ToUpper() o ToLower(), de la siguiente forma:

string s6 = "Battle of Hastings, 1066";
System.Console.WriteLine(s6.ToUpper()); // outputs "BATTLE OF HASTINGS 1066"
System.Console.WriteLine(s6.ToLower()); // outputs "battle of hastings 1066"

Manipulacin de Cadenas en C#
Acceso a caracteres individuales

Se obtiene acceso a los caracteres individuales contenidos en una cadena utilizando mtodos
como SubString(), Replace(), Split() y Trim().

string s3 = "Visual C# Express";
System.Console.WriteLine(s3.Substring(7, 2)); // outputs "C#"
System.Console.WriteLine(s3.Replace("C#", "Basic")); // outputs "Visual Basic Express"

Tambin es posible acceder utilizando los ndices del arreglo de caracteres:

string s5 = "Printing backwards";
for (int i = 0; i < s5.Length; i++) {
System.Console.Write(s5[s5.Length - i - 1]); // Imprime: sdrawkcab gnitnirP"
}

Manipulacin de Cadenas en C#
Comparaciones

Los operadores == y != realizan una comparacin con distincin entre maysculas y minsculas.

string color1 = "red, color2 = "green, color3 = "red";
if (color1 == color3) Console.WriteLine("Equal");
if (color1 != color2) Console.WriteLine("Not equal");

El mtodo Equals (String) determina si el objeto String que llama al mtodo es igual al objeto String
pasado como parametro.

string c="Hola";
If (c.Equals("Hola")) Console.WriteLine("Las cadenas son iguales");

Equals (String, StringComparison)

El parametro StringComparison permite especificar si la comparacin ser sensible a maysculas y
minsculas.
Manipulacin de Cadenas en C#
Bsqueda de cadenas

Para buscar una cadena dentro de otra se utilice IndexOf(). IndexOf() devuelve -1 si
la cadena de bsqueda no se encuentra; en caso contrario devuelve el ndice de la
primera posicin de la cadena, con base cero.

string s9 = "Battle of Hastings, 1066";
System.Console.WriteLine(s9.IndexOf("Hastings")); // outputs 10
System.Console.WriteLine(s9.IndexOf("1967")); // outputs -1
Conjunto de prcticas 19
Escribir un programa en c# que devuelva una cadena tecleada por el usuario en
orden inverso y con los caracteres convertidos a mayusculas. La cadena
proporcionada no debe tener mas de 10 caracteres, en caso contrario el usuario
deber proporcionar otra cadena.
Escribir una funcin en c# que devuelva cada palabra en una oracin
proporcionada por el usuario con el primer carcter convertido a mayuscula.
Ejemplo: el caballo blanco debera devolver El Caballo Blanco

30 minutos
Colecciones: ArrayList
Implementa la interfaz IList mediante una matriz cuyo tamao aumenta
dinmicamente segn se requiera. Se puede obtener acceso a los elementos de
esta coleccin utilizando un ndice de tipo entero.


// Crear e inicializar el arraylist
ArrayList al = new ArrayList();
al.Add("Hola");
al.Add("Mundo");
al.Add("!");
// Desplegar propiedades y valores del ArrayList
Console.WriteLine( "No. Elementos:{0}", al.Count );
Console.WriteLine( "Valores en el ArrayList:" );
for (int x = 0; x < al.Count;x++)
Console.WriteLine(al[x]);
Console.ReadKey();
Salida:
No. Elementos:3
Valores en el ArrayList:
Hola
Mundo
!
Colecciones - Stack
Representa una coleccin LIFO de objetos ("ltimo en entrar, primero en salir").

// Crea e inicializa una nueva pila
Stack pila = new Stack();
pila.Push("Hola");
pila.Push("Mundo");
pila.Push("!");
// Despliega los valores y propiedades de la pila
Console.WriteLine("No elementos:{0}", pila.Count);
Console.WriteLine("Tope de pila:" + pila.Pop()); //Pop: Obtiene elemento en cima de pila y lo borra
Console.WriteLine("Tope de pila:" + pila.Peek()); //Peek: Obtiene elemento en cima de pila sin borrarlo
Console.ReadKey();
Salida:
No elementos:3
Tope de pila:!
Tope de pila:Mundo
Colecciones - Queue
Representa una coleccin FIFO de objetos ("primero en entrar, primero en salir")


// Crea e inicializa una nueva cola
Queue cola = new Queue();
cola.Enqueue("Hola");
cola.Enqueue("Mundo");
cola.Enqueue("!");
// Despliega los valores y propiedades de la cola
Console.WriteLine("No elementos:{0}", cola.Count);
Console.WriteLine("Inicio de cola:" + cola.Dequeue()); //Dequeue: Obtiene elemento al inicio de cola y lo borra
Console.WriteLine("Inicio de cola:" + cola.Peek()); //Peek: Obtiene elemento al inicio de cola sin borrarlo
Console.ReadKey();
Salida:
No elementos:3
Inicio de cola:Hola
Inicio de cola:Mundo
Colecciones - HashTable
Representa una coleccin de pares de clave y valor organizados en funcin del cdigo
hash de la clave.

//Crear un hashtable
private Hashtable hshTable = new Hashtable();

//Agregar elementos al hashtable
hshTable .Add("Author1", "Mahesh Chand");
hshTable .Add("Author2", "James Brand");
hshTable .Add("Author3", "Mike Gold");

//Obtener un elemento del hashtable
string name = hshTable["Author1"].ToString(); //Asigna el valor Mahesh Chand a la variable name

//Remover un elemento del hashtable
hshTable.Remove("Author1");

Conjunto de prcticas 20
Elaborar un programa que almacene una agenda telefnica de personas en
memoria utilizando un Hashtable. El programa debe permitir insertar, borrar y
modificar los datos de una persona en particular, as como consultarlos en
pantalla. Capturar Nombre, apellidos, telfono y correo electrnico.
60 minutos
Mtodos - I
Un mtodo es un conjunto de instrucciones a las que se les da un
determinado nombre de tal manera que sea posible ejecutarlas en
cualquier momento sin tenerlas que rescribir sino usando slo su nombre.
A estas instrucciones se les denomina cuerpo del mtodo, y a su ejecucin
a travs de su nombre se le denomina llamada al mtodo.
<tipoRetorno> <nombreMtodo>(<parmetros>)
{
<cuerpo>
}
//void: No regresa valor (procedimiento)
void MostrarMenu()
{
Console.WriteLine("Opcin 1");
Console.WriteLine("Opcin 2");
}
//int: Regresa valor (funcin)
int Suma(int par1, int par2)
{
return par1+par2;
}
Mtodos - II
La forma en que se puede llamar a un mtodo depende del tipo de mtodo
del que se trate.

Si es un mtodo de objeto (mtodo no esttico) se ha de usar la notacin:

<objeto>.<nombreMtodo>(<valoresParmetros>)
Ejemplo:
Operaciones op = new Operaciones();
Op.Sumar(1,2); //Llamada a mtodo de objeto

En caso de que sea un mtodo de tipo (mtodo esttico), entones se ha de
usar:

<tipo>.<nombreMtodo>(<valoresParmetros>)
Ejemplo:
Convert.ToInt32("500"); //Llamada a mtodo de tipo de la clase Convert
Conjunto de prcticas 12
12.1 Elaborar un programa que genere y despliegue la tabla de multiplicar
de un numero dado utilizando mtodos de la siguiente manera:
Solicitar el numero en un mtodo "CapturarNumero"
Generar y mostrar resultados en pantalla en otro mtodo "GenerarTabla"

12.2 Elaborar un programa que utilizando un mtodo
CalcularTemperaturaMedia" vaya pidiendo la temperatura mxima y
mnima de diferentes das de la semana y vaya mostrando la media. El
programa pedir el nmero de das que se van a introducir.

60 minutos
Parmetros por valor y referencia - I
En C# es posible pasar variables a los mtodos de dos maneras: por valor y
por referencia. La diferencia entre el uno y el otro es bsicamente que:

Cuando una variable es pasada por valor, el mtodo recibe una copia del
valor de la variable. Por lo tanto, los cambios realizados a esa variable
dentro del contexto de la funcin, NO afecta a la variable original.
Cuando es pasada por referencia, el mtodo recibe la referencia a la
variable original. Por tanto los cambios realizados a esa variable dentro
del contexto de la funcin, AFECTA a la variable original.

Ejemplo 1: Paso de parmetros por valor

class PasoValor
{
static void ElevarCuadrado(int x)
// El parametro X es pasado por valor
// Cambios a x no afectaran el valor original.
{
x *= x;
Console.WriteLine("El valor de x dentro del mtodo es: {0}", x);
}
static void Main()
{
int n = 5;
Console.WriteLine("El valor de n antes de llamar al mtodo es: {0}", n);
ElevarCuadrado(n); // Paso de la variable por valor
Console.WriteLine("El valor de n despus de llamar al mtodo es: {0}", n);
}
}

Parmetros por valor y referencia - II
El valor de n antes de llamar al mtodo es : 5
El valor de x dentro del mtodo es : 25
El valor de n despus de llamar al mtodo es : 5
Parmetros por valor y referencia - III
Ejemplo 2: Paso de parmetros por referencia

class PasoReferencia
{
static void ElevarCuadrado(ref int x)
// El parametro X es pasado por valor
// Cambios a x afectan valor original
{
x *= x;
Console.WriteLine("El valor de x dentro del mtodo es: {0}", x);
}
static void Main()
{
int n = 5;
Console.WriteLine("El valor de n antes de llamar al mtodo es: {0}", n);
ElevarCuadrado(ref n); // Paso de la variable por referencia
Console.WriteLine("El valor de n despus de llamar al mtodo es: {0}", n);
}
}

El valor de n antes de llamar al mtodo es : 5
El valor de x dentro del mtodo es : 25
El valor de n despus de llamar al mtodo es : 25
Conjunto de prcticas 13
Hacer un programa que capture el nombre del trabajador, fecha de nacimiento,
sueldo diario, das trabajados y % de impuesto. Crear un mtodo para capturar los
datos del trabajador y dos funciones una que calcule el sueldo del trabajador y
otra su impuesto. El programa debe capturar repetidamente trabajadores hasta
que el usuario teclee la letra x en el nombre del trabajador.
Escribir un programa que muestre un men con 4 opciones: calcular distancia,
calcular velocidad, calcular tiempo y salir. El men debe ser desplegado usando
un procedimiento. La distancia y la velocidad deben ser calculadas dentro de una
funcin.

60 minutos
Excepciones - I
El control de excepciones en C# proporciona una manera de afrontar cualquier
situacin inesperada o excepcional que se presente mientras se ejecuta un programa.
El control de excepciones utiliza las palabras clave try, catch y finally para intentar
acciones que podran no realizarse correctamente, controlar errores y/o limpiar los
recursos despus al final de su ejecucin.
try
{
<instrucciones>
}
catch (<excepcin>)
{
<tratamiento2>
}
finally
{
<instruccionesFinally>
}
MailMessage Email = new MailMessage(Origen, Destino, Asunto, Mensaje);
SmtpClient smtp = new SmtpClient();
try
{
smtp.Send(Email);
}
catch (Exception ex)
{
Console.WriteLine("Se produjo un error" + ex.Message);
}
finally
{
smtp.Dispose(); //Libera recursos
}
Conjunto de prcticas 14
Hacer un programa que calcule el promedio de dos nmeros, controlando las
excepciones. Los nmeros deben leerse desde el teclado y desplegar el promedio
en caso de que la operacin sea vlida. Si no, debe desplegar el mensaje de error
correspondiente y continuar su ejecucin.
15 minutos
Leer/Escribir archivos en disco


Los archivos de texto proporcionan un formato comn que tanto las personas como
los programas pueden leer y entender. .NET incluye clases que hacen que la lectura
y escritura de archivos de texto muy sea muy sencilla. La secuencia siguiente
describe los pasos bsicos necesarios para trabajar con archivos de texto: abrir el
archivo, leer / escribir al archivo y cerrar el archivo.
// Abrir archivo
TextWriter tw = new StreamWriter("date.txt");
// Escribir en archivo
tw.WriteLine(DateTime.Now);
// Cerrar archivo
tw.Close();
Escribir en archivo de texto
// Abrir archivo
Textreader tr = new StreamReader("date.txt");
// Leer linea de texto
Console.WriteLine(tr.ReadLine());
// Cerrar archivo
tr.Close();
Leer de archivo de texto
Depuracin de aplicaciones
Los puntos de
interrupcin permiten
detener la ejecucin
de un programa en
una lnea en particular
y continuar con la
depuracin del mismo
a partir de dicha lnea.
BreakPoints
Depuracin de aplicaciones
Step Over (F10). La
depuracin paso a
paso permite ejecutar
el programa lnea por
lnea mientras se
depura, si la lnea a
depurar es la llamada
a un mtodo, step over
toma toda la ejecucin
del mismo como una
sola lnea.
Step Over - F10
Depuracin de aplicaciones
Step Into (F11). La
depuracin paso a
paso permite ejecutar
el programa lnea por
lnea mientras se
depura, si la lnea a
depurar es la llamada
a un mtodo, step into
entra al mtodo para
continuar la
depuracin paso a
paso dentro del
mismo.
Step Into - F11
La ventana Watches
(inspeccin), permite
visualizar el valor que
toman las variables a
medida que se depura
un programa paso a
paso.
Watches
Depuracin de aplicaciones
Solution Explorer
Introduccin al entorno
El Solution Explorer
muestra un rbol con
todos los archivos que
componen el proyecto
en tiempo de diseo.
Inspector de objetos
Introduccin al entorno
El inspector de objetos
permite establecer las
propiedades y eventos
de los componentes
usados para elaborar
una pantalla en tiempo
de diseo.
ToolBox
Introduccin al entorno
El ToolBox o paleta de
componentes contiene
todos los
componentes
disponibles en el
entorno para disear
una pantalla de un tipo
de aplicacin
especifico.
Formularios, controles y eventos.
Formulario.
Propiedades comunes:
ControlBox
Icon
Location
MaximizeBox
MinimizeBox
StartPosition
WindowState
Eventos comunes:
Load
FormClosed



Formularios, controles y eventos.
Propiedades y eventos compartidos en diversos controles y de uso frecuente

Propiedades:
Name
BackColor
ForeColor
Enabled
Font
TabIndex
Visible
Eventos:
Click
KeyPress
KeyUp
KeyDown
Enter
Leave



Formularios, controles y eventos.
Clase MessageBox



Muestra un cuadro de mensaje que puede contener texto,
botones y smbolos que informan e instruyen al usuario.
MessageBox.Show("Debe ingresar nombre", "Informacin", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
MessageBox.Show("Debe ingresar nombre");
Formularios, controles y eventos.
Panel.
Propiedades frecuentes:
Dock
Eventos frecuentes :
No usados con
frecuencia.


Formularios, controles y eventos.
Label.
Propiedades frecuentes: :
Text
Eventos frecuentes:
Click



Formularios, controles y eventos.
TextBox
Propiedades frecuentes:
CharacterCasing
MultiLine
PasswordChar
ReadOnly
Text
TextAlign
Eventos frecuentes:
Click
KeyPress
KeyUp
KeyDown



Formularios, controles y eventos.
Button.
Propiedades frecuentes:
FlatStyle
Image
Text
TextAlign
Eventos frecuentes:
Click



Formularios, controles y eventos.
MenuStrip.
Propiedades frecuentes:
No tiene
Eventos comunes:
No tiene

ToolStripMenuItem.
Propiedades frecuentes :
Image
Text
Eventos frecuentes:
Click



Formularios, controles y eventos.
ToolStrip.
Propiedades frecuentes :
Name
Eventos comunes:
No tiene

ToolStripButton.
Propiedades frecuentes:
DisplayStyle
Image
Text
Eventos frecuentes:
Click



Formularios, controles y eventos.
ImageList.
Propiedades frecuentes:
Images
TransparentColor
Eventos frecuentes:
No tiene




Formularios, controles y eventos.
Statustrip.
Propiedades frecuentes:
Name


ToolStripStatusLabel
Propiedades frecuentes:
Text
Eventos comunes:
No tiene






Formularios, controles y eventos.
ContextMenuStrip.
Propiedades frecuentes:
Name
Eventos comunes:
No tiene

ToolStripMenuItem.
Propiedades frecuentes:
Image
Text
Eventos comunes:
Click




Conjunto de prcticas 16
1. Crear una aplicacin Windows con un diseo similar al de
la calculadora de Windows en su versin estndar.
2. Crear una aplicacin Windows con un diseo similar al del
bloc de notas de Windows.


30 minutos
Formularios, controles y eventos.
CheckBox.
Propiedades frecuentes:
Checked
CheckState
Text
Eventos frecuentes:
CheckedChanged
Formularios, controles y eventos.
RadioButton
Propiedades frecuentes:
Checked
Text
Eventos frecuentes:
CheckedChanged
Formularios, controles y eventos.
ListBox.
Propiedades frecuentes:
Items
SelectionMode
Eventos frecuentes:
SelectedIndexChanged
Formularios, controles y eventos.
ComboBox.
Propiedades frecuentes:
DropDownStyle
Items
SelectedIndex(RT)
Eventos frecuentes:
SelectedIndexChanged
Formularios, controles y eventos.
MaskedTextBox.
Propiedades frecuentes:
Mask
Text
TextAlign
Eventos frecuentes:
Click
KeyPress
KeyUp
KeyDown
Conjunto de prcticas 17
2. Crear una aplicacin windows que permita gestionar prestamos
de libros de la biblioteca de la unidad regional norte de la UAS.
La aplicacin debe tener las siguientes caractersticas.

La aplicacin debe controlar lo siguiente:
o Nmero de cuenta, nombre del alumno y fecha de prstamo del libro,
El men principal de la aplicacin debe ser como el siguiente
a) Prestar libros
b) Mostrar libros prestados
c) Salir

El prstamo y muestra de libros debe hacerse usando procedimientos.
120 minutos
Formularios, controles y eventos.
PictureBox.
Propiedades frecuentes:
Image
SizeMode
Eventos frecuentes:
Click
Formularios, controles y eventos.
TabControl.
Propiedades frecuentes:
ImageList
TabPages
Eventos frecuentes:
SelectedIndexChange

TabPage.
Propiedades frecuentes:
ImageIndex
Text
Eventos frecuentes:
No tiene


Formularios, controles y eventos.
ProgressBar.
Propiedades frecuentes:
Maximun
Minimun
Value
Step
Style
Eventos frecuentes:
No tiene
Formularios, controles y eventos.
DateTimePicker.
Propiedades frecuentes:
Format
MaxDate
MinDate
Value
Eventos frecuentes:
ValueChanged
Formularios, controles y eventos.
Timer.
Propiedades frecuentes:
Interval
Eventos frecuentes:
Tick
Formularios, controles y eventos.
OpenDialog.
Propiedades comunes:
Filter
FilterIndex
InitialDirectory
Title
Eventos comunes:
No tiene
Formularios, controles y eventos.
SaveDialog.
Propiedades comunes:
Filename
Filter
FilterIndex
InitialDirectory
Title
Eventos comunes:
No tiene
Formularios, controles y eventos.
DataGridView.
Propiedades comunes:
Columns
DataSource
Enabled
ReadOnly
TabIndex
Eventos comunes:
Click
Enter
Leave
CellEnter
CellLeave
Conjunto de prcticas 18
1. Crear una aplicacin windows que permita gestionar los diplomados de
la facultad de ingeniera Mochis. La aplicacin debe tener las siguientes
caractersticas.

La aplicacin debe permitir ingresar un mximo de 20 alumnos.
La aplicacin debe controlar lo siguiente:
o Id, nombre, telfono, direccin y foto,
o Si el alumno es externo a la uas pagar una cuota de 800 pesos por modulo,
o Si el alumno estudia en la uas y paga el modulo antes de que inicie se le cobrara una cuota de 600 por modulo.
o Si el alumno es de la uas y paga el modulo una vez iniciado, la cuota ser de 800 pesos por modulo
El men principal de la aplicacin debe ser como el siguiente
a) Inscribir alumno
b) Mostrar alumnos inscritos
c) Salir

Los alumnos deben ser inscritos y mostrados usando un procedimiento.
La cuota a pagar debe ser determinada usando una funcin.

Ejercitar las opciones de busqueda, reemplazo y code folding revisadas en la seccin anterior.
60 minutos
Controles dinmicos en C#
Un control dinmico en C # es un control que se crea en tiempo de ejecucin en lugar
de en tiempo de diseo. Pueden ser creados en respuesta a cmo el usuario
interacta con la aplicacin y no estn accesibles desde que la aplicacin es
ejecutada. Algunos de los controles que mas comnmente se agregan en tiempo de
ejecucin son los controles Label Button y TextBox. //Crear un textbox
TextBox dynamicTextbox = new TextBox();
dynamicTextbox.Name = "dynamicTextbox" ;
dynamicTextbox.Width = 290;
dynamicTextbox.Height = 20;
dynamicTextbox.Left = 9;
dynamicTextbox.Top = 10;
dynamicTextbox.Text = "TextBox Dinamico ";

//Crear un botn
Button dynamicButton = new Button();
dynamicButton.Name = "dynamicButton";
dynamicButton.Width = 75;
dynamicButton.Height = 23;
dynamicButton.Left = 9;
dynamicButton.Top = 20;
dynamicButton.Text = "Boton dinamico";
dynamicButton.Click += new EventHandler(Button_Click);

//Agregar al contenedor
pContainer.Controls.Add(dynamicTextbox);
pContainer.Controls.Add(dynamicButton);

//Manejador de evento del boton
private void Button_Click(object sender, EventArgs e){}
Conjunto de prcticas 21
Elaborar un programa que cree una minicalculadora con las operaciones bsicas
de suma, resta, multiplicacin y divisin utilizando solo controles dinmicos.
30 minutos








Introduccin a SQL Server 2008

Sql Server Management Studio
Para ejecutar cualquier query desde SSMS ya sea del tipo DDL (Data Definition
Language-Lenguaje de Definicin de Datos) o DML (Data Manipulation Language-
Lenguaje de Manipulacin de Datos) haga click sobre el cono <New Query> desde la
barra de herramientas.
Al ejecutar el query, este se ejecutar sobre la BD que estaba seleccionada en el
nodo databases al abrir el query o de lo contrario se ejecutar sobre la base de
datos que tenga establecida como default. Si no tiene ninguna BD establecida
como default ocurrirn errores al ejecutar el query ya que no encontrar los
objetos.

Si desea establecer una base de datos default siga estos pasos:

1. Desconctese de la instancia actual haciendo clic sobre el cono <Disconnect> del
explorador de objetos.

2. Haga clic sobre el cono <Connect> del explorador de objetos


Sql Server Management Studio
Al aparecer la ventana de login haga clic en <Options>.

En la pestaa Connection Properties expanda la lista Connect to database y elija la
opcin <Browse server>


Sql Server Management Studio
Al aparecer la ventana Browse Server for Database expanda el nodo User
Databases y elija la base de datos que desea establecer como default, finalmente
haga clic en <Ok>



Sql Server Management Studio
A partir de este momento cada vez que abra un nuevo query sin seleccionar
ninguna base de datos, el query ser ejecutado sobre la base de datos default.

Para mayor seguridad a la hora de estar trabajando con mltiples bases de datos
utilice el comando :
USE <nombre_base_datos>

Por ejemplo:
USE NOMINA

De esta manera est indicando que desea que el query se ejecute
especficamente sobre la base de datos NOMINA sin importar si dicha base de
datos est seleccionada o sea default.


Sql Server Management Studio
Por default, SSMS est configurado para prevenir que se realicen cambios a la
estructura de una tabla una vez que esta ya fue creada con lo cual no podr modificar
la estructura la tabla despus de creada.

Para desactivar esta opcin siga estos pasos:

En el men Tools elija la opcin Options

En el cuadro de dilogo que aparece, expanda el nodo Designers en el panel de la
izquierda y a continuacin seleccione el sub-nodo Table and Database Designers.

En el panel de la derecha desactive la casilla Prevent saving changes that requiere
table re-creation.


Sql Server Management Studio
Haga clic en <Ok>.


Sql Server Management Studio

Creacin de tablas desde SSMS
Abra SSMS.
Expanda el nodo databases
Expanda el nodo de la base de datos en la que desea crear la tabla
Haga clic derecho sobre el nodo Tables y elija la opcin New Table
Introduzca la siguiente informacin en el diseador de tablas:






Haga clic en el icono <Guardar> de la barra de herramientas y ponga el nombre:
PRODUCTOS.

CAMPO TIPO NULL
CLAVE int No
NOMBRE varchar(60) Si
PRECIO float Si
LINEA Int Si

Creacin de tablas desde SSMS
De igual forma cree la tabla LINEAS con la siguiente informacin








CAMPO TIPO NULL
CLAVE int No
NOMBRE varchar(60) Si

Creacin de tablas desde SSMS
Crear la tabla de PRODUCTOS mediante T-Sql:

CREATE TABLE PRODUCTOS
(
CLAVE int NOT NULL,
NOMBRE varchar(60) NULL,
PRECIO float NULL,
LINEA int NULL
)
Crear la tabla de LINEAS mediante T-Sql
CREATE TABLE LINEAS
(
CLAVE int NOT NULL,
NOMBRE varchar(60) NULL
)











Definicin de llave primaria
Haga clic derecho sobre la tabla a la que desea agregar una llave primaria y elija la
opcin Design.
En el diseador seleccione el campo o campos que desea utilizar como llave
primaria.
Haga clic derecho sobre los campos seleccionados y elija la opcion Set Primary
Key.


Definicin de llave primaria
Defina la llave primaria para la tabla de PRODUCTOS sobre el campo CLAVE.

Defina la llave primara para la tabla de LINEAS sobre el campo CLAVE


Definicin de llave primaria
Defina la llave primaria para la tabla PRODUCTOS sobre el campo CLAVE
mediante T-Sql:
ALTER TABLE LINEAS
ADD CONSTRAINT
PK_LINEAS PRIMARY KEY CLUSTERED
(
CLAVE
)
GO
Defina la llave primaria para la tabla LINEAS sobre el campo CLAVE mediante T-Sql
ALTER TABLE PRODUCTOS
ADD CONSTRAINT
PK_PRODUCTOS PRIMARY KEY CLUSTERED
(
CLAVE
)
GO



Definicin de llave fornea
Un campo que no es clave primaria en una tabla y sirve para enlazar sus valores
con otra tabla en la cual es clave primaria se denomina clave fornea, externa o
ajena.

Las claves forneas y las claves primarias deben ser del mismo tipo para poder
enlazarse.

Entonces, una clave fornea es un campo (o varios) empleados para enlazar datos
de 2 tablas, para establecer un "join" con otra tabla en la cual es clave primaria


Definicin de llave fornea
Haga clic derecho sobre la tabla a la que desea agregar una llave fornea y elija la
opcin Design.
En el diseador seleccione el campo o campos que desea utilizar como llave
secundaria.
Haga clic derecho sobre los campos seleccionados y elija la opcion Relationship


Definicin de llave fornea
Haga clic en <Add> para agregar una llave fornea









En el panel de la derecha seleccione la opcin Tables and Colums Specification y
haga clic en <>




Definicin de llave fornea
En esta ventana seleccione la tabla referenciada en el panel de la izquierda
(LINEAS) y elija la llave primaria de dicha tabla.

En el panel de la derecha aparece por default la tabla a la que le queremos
agregar la llave fornea, simplemente seleccione el campo por el cual se enlazar.



Clic en <Ok>.




Definicin de llave fornea
Regresamos a la ventana Foreign Key Relationships.

Puede cambiar el nombre de la llave fornea si lo desea en Identity

Para establecer las restricciones de la llave fornea expanda el nodo Table
Disigner y posteriormente INSERT and UPDATE Specification

Puede definir las restricciones para las reglas de borrado y/o para las reglas de
actualizacin.

Para ambas puede especificar: No Action, Cascade, Set Null, Set Default




Definicin de llave fornea
No action: Indica que si intentamos eliminar o actualizar un valor de la clave
primaria de la tabla referenciada (LINEAS) que tengan referencia en la tabla
principal (PRODUCTOS), se genere un error y la accin no se realice; es la opcin
predeterminada.

Cascade: Indica que si eliminamos o actualizamos un valor de la clave primaria en
la tabla referenciada (LINEAS), los registros coincidentes en la tabla principal
(PRODUCTOS), tambin se eliminen o modifiquen; es decir, si eliminamos o
modificamos un valor de campo definido con una restriccin "primary key" o
"unique", dicho cambio se extiende al valor de clave externa de la otra tabla
(integridad referencial en cascada).




Definicin de llave fornea
Set NULL: Indica que si intentamos eliminar o actualizar un valor de la clave
primaria de la tabla referenciada (LINEAS) que tengan referencia en la tabla
principal (PRODUCTOS), se establecer el valor NULL en la tabla principal, esto es
siempre y cuando el campo permita valores nulos en caso contrario marcar un
error.

Set DEFAULT: Indica que si eliminamos o actualizamos un valor de la clave
primaria en la tabla referenciada (LINEAS), los registros coincidentes en la tabla
principal (PRODUCTOS), se establecern a su valor predeterminado siempre y
cuando se haya especificado uno.




Definicin de llave fornea
Cree la llave fornea para la tabla PRODUCTOS sobre el campo LINEA ligado a la
tabla LINEAS mediante T-Sql.

ALTER TABLE PRODUCTOS
ADD CONSTRAINT
FK_PRODUCTOS_LINEAS FOREIGN KEY
(
LINEA
) REFERENCES LINEAS
(
CLAVE
)
ON UPDATE CASCADE
ON DELETE NO ACTION
GO






Insercin de registros
Haga clic derecho sobre la tabla a la que desea agregar registros y elija la opcin
Edit top 200 rows.
En el editor de tabla introduzca algunos valores para la tabla de LINEAS.
Por cada registro que vaya introduciendo se va almacenando automticamente
Un cono el forma de lpiz indica que se est editando cierto campo

Insercin de registros
Usando el mismo procedimiento inserte algunos registros en la tabla de
PRODUCTOS.

Ya podr poner valores a la columna LINEA porque ya existen en la tabla LINEAS.

Insercin de registros
Inserte algunos registros en la tabla LINEAS mediante T-Sql.

INSERT INTO LINEAS(CLAVE, NOMBRE)
VALUES (4, 'LINEA 4');

INSERT INTO LINEAS(CLAVE, NOMBRE)
VALUES (5, 'LINEA 5');

INSERT INTO LINEAS(CLAVE, NOMBRE)
VALUES (6, 'LINEA 6')

Insercin de registros
Inserte algunos registros en la tabla PRODUCTOS mediante T-Sql.

INSERT INTO PRODUCTOS(CLAVE, NOMBRE, PRECIO, LINEA)
VALUES (4, 'PRODUCTO 4', 12, 1);

INSERT INTO PRODUCTOS(CLAVE, NOMBRE, PRECIO, LINEA)
VALUES (5, 'PRODUCTO 5', 13, 2);

INSERT INTO PRODUCTOS(CLAVE, NOMBRE, PRECIO, LINEA)
VALUES (6, 'PRODUCTO 6', 18, 3);

Actualizacin de registros
Haga clic derecho sobre la tabla a la que desea actualizar registros y elija la
opcin Edit top 200 rows.
En el editor de tabla posicinese sobre el campo que desea actualizar.
Introduzca el nuevo valor para la columna y simplemente cambie de registro para
que el cambio surta efecto.

Actualizacin de registros
Modifique el nombre del producto con clave 1 de PRODUCTO 1 a Escritorio
para computadora mediante T-Sql.

UPDATE PRODUCTOS
SET NOMBRE = 'Escritorio para computadora'
WHERE CLAVE = 1

Si no se especifica la clusula WHERE el cambio se realiza para todos los registros,
es decir, todos los registros de la tabla PRODUCTOS tendran la misma descripcin
Escritorio para computadora.

Eliminacin de registros
Haga clic derecho sobre la tabla a la que desea eliminar registros y elija la opcin
Edit top 200 rows.
En el editor de tabla posicinese sobre el registro que desea eliminar.
Seleccione el registro haciendo clic en la celda de la izquierda y presione la tecla
<Supr>.

Eliminacin de registros
Elimine los productos con la clave mayor que 4 mediante T-Sql.

DELETE FROM PRODUCTOS
WHERE CLAVE > 4

Si no especifica la clusula WHERE se borran todos los registros de la tabla.


Seleccin de registros
Haga clic derecho sobre la tabla a la que desea seleccionar registros y elija la
opcin Select Top 1000 Rows.

Seleccin de registros
Seleccione todos los registros de la tabla PRODUCTOS mediante T-Sql.

SELECT * FROM PRODUCTOS

Seleccione todos los productos que pertenecen a la lnea 1 mediante T-Sql:

SELECT * FROM PRODUCTOS
WHERE LINEA = 1












Desarrollo de aplicaciones Windows con ADO .NET, SQL Server
y Crystal Reports
Que es ADO.NET?
ADO.NET es un conjunto de componentes software que
pueden ser usados por los programadores para acceder a
datos y a servicios de datos. Es una parte de la biblioteca de
clases base que est incluida en el Microsoft .NET
Framework. Es comnmente usado por los programadores
para acceder y para modificar los datos almacenados en un
Sistema Gestor de Bases de Datos Relacionales.
Mtodos de acceso a datos en Visual Studio
Ambiente Visual
Cuando accedemos a la base de datos en ambiente visual lo
que hacemos es simplemente arrastrar las tablas desde el
Explorador de Servidor del Visual Studio hacia el diseo de
nuestro formulario.
Al hacer esto Visual Studio automticamente crea los objetos
necesarios para acceder a la base de datos.
Ventajas:
Se acelera el proceso de desarrollo
Desventajas:
Menos flexibilidad
Menos rendimiento en cuanto a velocidad.

Mtodos de acceso a datos en Visual Studio
Por cdigo
Al acceder la base de datos por medio de cdigo lo que
hacemos es crear los objetos para acceder a los datos
manualmente, es decir, los declaramos y creamos en el
cdigo de nuestra aplicacin.
Ventajas:
Mayor flexibilidad para hacer lo que se quiere
Mejor rendimiento ya que se pueden crear y destruir los
objetos cuando uno quiera
Desventajas:
Desarrollo mas lento

Proveedores de datos (Dataproviders)
Un proveedor de datos .NET es un conjunto de
componentes que proporcionan acceso a una fuente de
datos como Microsoft SQL Server u Oracle. Cada fuente de
datos tiene su propio proveedor, pero en cada uno de estos
proveedores se tiene un conjunto comn de clases que
incluye, entre otras, a las clases Connection, Command,
DataReader y DataAdapter.
Tipos de proveedores de datos
Proveedor administrado OLEDB
Proveedor administrado ODBC
Proveedor administrado SQL
Proveedor administrado Oracle
Proveedor administrado MySQL
Proveedor administrado Firebird
Etc


Proveedor OLEDB (System.Data.OleDb)
El proveedor de datos de .NET Framework para OLE DB describe
una coleccin de clases que se utiliza para obtener acceso a un
origen de datos OLE DB en el espacio administrado. Utiliza
proveedores OLE DB originales a travs de la interoperabilidad
COM para habilitar el acceso a origenes de datos.
Algunos proveedores OLE DB compatibles con ADO.NET son los
siguientes:

Proveedor OLE DB de Microsoft para SQL Server
Proveedor OLE DB de Microsoft para Oracle
Proveedor OLE DB Microsoft.Jet.OLEDB. para Jet

Proveedor ODBC (System.Data.Odbc)
El proveedor de datos ODBC .NET ofrece acceso a controladores
ODBC originales del mismo modo que el proveedor de datos OLE
DB .NET ofrece acceso a proveedores OLE DB originales. El
proveedor de datos ODBC .NET est pensado para funcionar con
todos los controladores que cumplan las especificaciones ODBC.
Algunos controladores ODBC compatibles con ADO.NET son los
siguientes:

Controlador ODBC para Microsoft SQL
Controlador ODBC de Microsoft para Oracle
Controlador ODBC para Microsoft Jet

Proveedor SQL
Utiliza su propio protocolo para comunicarse con la base
de datos de Microsoft SQL Server. El proveedor de
datos de .NET Framework para SQL Server describe
una coleccin de clases utilizadas para obtener acceso a
una base de datos de SQL Server en el espacio
administrado.

Estas clases se encuentran en el espacio de nombres
System.Data.SqlClient.
Clases Principales del Proveedor SQL
SqlConnection
SqlCommand
SqlDataReader

DataTable
DataSet
SqlDataAdapter
SqlCommandBuilder

SqlConnection
Esta clase se utiliza para establecer una conexin con
el servidor de base de datos Microsoft SQL Server.
Representa una conexin abierta con el servidor de
base de datos y representa una nica sesin abierta
con dicho origen de datos.
ConnectionString
Es una cadena que provee la informacin que define una conexin a un
almacn de datos usando un conjunto de parmetros. Los siguientes son los
parmetros mas usuales de una cadena de conexin para conectarse a un
origen de datos SQL Server.

Data Source - El nombre del servidor.
Initial Catalog - El nombre de la base de datos, si se omite se utiliza la
predeterminada del usuario.
Password - El password del usuario.
User ID - El login del usuario.
Integrated Security - Establece el mecanismo de autenticacin con el
servidor, los valores posibles son TRUE y FALSE.
Ejemplo SqlConnection
private static void OpenSqlConnection()
{
SqlConnection connection = new SqlConnection(Data Source=FIM-CC1- 043\SQLEXPRESS;Initial
Catalog=AdventureWorks; Integrated
Security=SSPI;))
connection.Open();
Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
Console.WriteLine("State: {0}", connection.State);

}
SqlCommand
Representa un procedimiento almacenado o una instruccin de
Transact-SQL que se ejecuta en una base de datos de SQL
Server.Se encuentra en lenguaje DML (Data Definition Language),
es decir, puede ser una consulta, para insertar datos, borrar o
actualizar.
Ejemplos de comandos DML son:
SELECT telefono_cliente FROM clientes
INSERT INTO clientes(telefono_cliente) VALUES(22746207)
DELETE FROM clientes WHERE telefono_cliente=22746207
UPDATE clientes SET telefono_cliente=22746207 WHERE
id_cliente=1
Ejemplo SqlCommand
private static void ReadOrderData(string connectionString)
{
string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders;";
SqlConnection connection = new SqlConnection( connectionString))
SqlCommand command = new SqlCommand(queryString, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
}
}
finally
{
// Always call Close when done reading.
reader.Close();
connection.Close();
}
}
SqlDataReader
Es un lector de datos de slo avance. Proporciona una forma
de leer una secuencia de filas slo hacia delante en una base
de datos de SQL Server. Para crear un SqlDataReader, se
debe llamar al mtodo ExecuteReader del objeto
SqlCommand.
Ejemplo SqlDataReader
private static void ReadOrderData(string connectionString)
{
string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders;";
SqlConnection connection = new SqlConnection( connectionString))
SqlCommand command = new SqlCommand(queryString, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
}
}
finally
{
// Always call Close when done reading.
reader.Close();
}
}
DEMO
Construccin de un ABC bsico utilizando
SqlConnection, SqlCommand y SqlDataReader
Prctica
Elaborar un prototipo aplicacin windows utilizando SqlConnection,
SqlCommand y SqlDataReader que contenga los siguientes
catlogos:

Paises (Clave, Nombre)
Estados (Clave, Nombre, Pais)
Proveedores (Clave, Nombre, Domicilio, Telfono)
Productos (Clave, Descripcin, Precio, Proveedor)

Cada catlogo debe estar en formularios independientes, con
opciones de insertar, modificar, borrar y buscar registros.
120 minutos
DataSet
Representa un componente fundamental de la arquitectura de
ADO.NET. Un DataSet est compuesto por una coleccin de
objetos DataTable en memoria y asemeja en su estructura a una
base de datos.
Un DataSet puede leer y escribir datos como documentos
XML. De este modo los datos y esquemas pueden
transportarse, a travs de HTTP y cualquier aplicacin puede
utilizarlos en cualquier plataforma que sea compatible con
XML.
DataSet dsProductos = new DataSet(); // Contenedor de datatables
DataTable
Representa un componente fundamental de la biblioteca de
ADO .Net. Un datatable es una representacin en memoria de
una tabla de una base de datos. Es decir, cuando nosotros
ejecutamos una consulta, nuestra consulta regresa una serie de
filas identificadas por una columna cada una. Este serie de
filas y columnas es almacenada en un DataTable exactamente
como las regreso la consulta que hicimos a la base de datos.

SqlDataAdapter daProductos = new SqlDataAdapter("select * from Productos", conexion); //Se utiliza para llenar un datatable
daProductos.Fill(dsProductos, "Productos"); //Llena una tabla llamada "productos" dentro del dataset
SqlDataAdapter
Representa un conjunto de comandos de datos y una conexin
de base de datos que se utilizan para rellenar un DataSet y
actualizar una base de datos de SQL Server. SqlDataAdapter,
se utiliza como un puente entre DataSet y SQL Server para
recuperar y guardar datos.

SqlDataAdapter daProductos = new SqlDataAdapter("select * from Productos", conexion); //Se utiliza para llenar un datatable
daProductos.Fill(dsProductos, "Productos"); //Llena una tabla llamada "productos" dentro del dataset

SqlCommandBuilder
Genera automticamente comandos de tabla nica que se utilizan para
conciliar los cambios realizados en un objeto DataSet con la base de datos
de SQL Server asociada.
SqlDataAdapter no genera automticamente las instrucciones de
Transact-SQL requeridas para reconciliar los cambios realizados en un
DataSet con la instancia asociada de SQL Server. No obstante, se puede
crear un objeto SqlCommandBuilder que genere automticamente
instrucciones de Transact-SQL para las actualizaciones de una sola tabla
si se establece el valor de la propiedad SelectCommand de
SqlDataAdapter. A continuacin, cualquier instruccin de Transact-SQL
adicional que no se establezca se genera mediante SqlCommandBuilder.

daProductos = new SqlDataAdapter("select * from Productos", conexion);
SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daProductos);
DataGridView
Muestra los datos en una cuadrcula personalizable. El
control DataGridView proporciona una tabla personalizable
para mostrar datos. La clase DataGridView permite
personalizar celdas, filas, columnas y bordes mediante
propiedades como DefaultCellStyle,
ColumnHeadersDefaultCellStyle, CellBorderStyle y
GridColor.

dataGridView1.DataSource = dsProductos;
dataGridView1.DataMember = "Productos";
Ejemplo SqlDataAdapter, DataSet,
DataTable y SqlCommandBuilder
SqlConnection conexion;

private SqlDataAdapter daProductos;
private DataSet dsProductos;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
conexion = new SqlConnection("Data Source=localhost;Initial Catalog=Inventario;Integrated Security=SSPI");
conexion.Open(); //3.- Abrir la conexin
dsProductos = new DataSet(); // Contenedor de datatables
daProductos = new SqlDataAdapter("select * from Productos", conexion);
SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daProductos);
daProductos.FillSchema(dsDia2, SchemaType.Mapped, Productos");
daProductos.Fill(dsProductos, "Productos");
dataGridView1.DataSource = dsProductos;
dataGridView1.DataMember = "Productos";
}

private void btnGuardar_Click(object sender, EventArgs e)
{
daProductos.Update(dsProductos, "Productos");
}
DataRow
Representa una fila de datos en un DataTable. Se utiliza el
objeto DataRow y sus propiedades y mtodos para recuperar,
evaluar, insertar, eliminar y actualizar los valores de
DataTable.

DataRow drProducto = dsProductos.Tables["productos"].NewRow();
drProducto["Clave"] = txtClave.Text;
drProducto["Descripcion"] = txtDescripcion.Text;
dsProductos.Tables["productos"].Rows.Add(drProducto);
SqlParameter
Representa un parmetro de un objeto SqlCommand y,
de manera opcional, su asignacin a columnas de
DataSet.

// Sentencia sql a ejecutar
SqlCommand cmdConsultar = new SqlCommand("insert into productos(clave,descripcion) values (@Clave,@Descripcion)",
conexion);
//Agregar parametros
cmdConsultar.Parameters.Add("@Clave", SqlDbType.VarChar, 10).Value = txtClave.Text;
cmdConsultar.Parameters.Add("@Descripcion", SqlDbType.VarChar, 50).Value = txtDescripcion.Text;
// 2. Ejecutar sentencia sql contra base de datos
cmdConsultar.ExecuteNonQuery();
SqlTransaction
Representa una transaccin de Transact-SQL que se realiza en
una base de datos de SQL Server. Para utilizar un objeto
SqlTransaction la aplicacin crea un objeto SqlTransaction
mediante una llamada a BeginTransaction en el objeto
SqlConnection. Todas las operaciones siguientes asociadas a
la transaccin (por ejemplo, la confirmacin o la interrupcin
de la transaccin) se realizan en el objeto SqlTransaction.
Ejemplo SqlTransaction
private static void ExecuteSqlTransaction(string connectionString)
{
SqlConnection connection = new SqlConnection(connectionString)
connection.Open();
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
transaction = connection.BeginTransaction("SampleTransaction");
command.Connection = connection;
command.Transaction = transaction;
try
{
command.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
command.ExecuteNonQuery();
command.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
command.ExecuteNonQuery();
transaction.Commit();
Console.WriteLine("Both records are written to database.");
}
catch (Exception ex)
{
Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
Console.WriteLine(" Message: {0}", ex.Message);
transaction.Rollback();
}
}
}
DEMO
Construccin de un ABC bsico utilizando DataSet,
DataTable, SqlDataAdapter y SqlCommandBuilder
Prctica
Elaborar un prototipo aplicacin Windows utilizando DataSet,
DataTable, SqlDataAdapter y SqlCommandBuilder que contenga los
siguientes catlogos:

Paises (Clave, Nombre)
Estados (Clave, Nombre, Estado)
Proveedores (Clave, Nombre, Domicilio, Telfono)
Productos (Clave, Descripcin, Precio, Proveedor)

Cada catlogo debe estar en formularios independientes, con
opciones de insertar, modificar, borrar y buscar registros.
120 minutos
Introduccin al Databinding
El databinding (enlace de datos) una tcnica para mostrar datos
en los controles escribiendo poco o ningn cdigo.
En el pasado el databinding a sufrido de una mala reputacin,
ya que las nicas aplicaciones que podan utilizarlo con xito
eran simples herramientas de generacin de informes o
envolturas de base de datos escritas en lenguajes como
Microsoft Access Basic. Estas aplicaciones eran muy fciles de
programar, pero notablemente limitadas, inflexibles, y con un
pobre desempeo.
Introduccin al Databinding
Los principales problemas que ha presentado el databinding en el pasado
son:

Necesidad de conexin continua con el origen de datos: Con el
databinding tradicional, las conexiones con el origen de datos deben
estar abiertas por largos perodos de tiempo, por lo general, siempre
que una ventana se est mostrando. Esto podra ser aceptable para una
pequea aplicacin, pero no funciona en un entorno distribuido o con
una aplicacin basada en web.

Poco personalizacin. El desarrollador no puede controlar parte del
proceso de enlace de datos, tiene poca capacidad para aplicar la lgica
de validacin, y no se puede personalizar el despliegue de la mayora
de los controles que admiten el enlace de datos.

Databinding en .NET
ADO.NET se ocupa de estas cuestiones con un framework
adaptable y reutilizable de enlace de datos que se centra en
dos clases:
DataView
DataViewManager.
Estas clases proporcionan una importante capa de
vinculacin indirecta entre los datos y su formato de
visualizacin, lo que permite aplicar ordenamientos y filtros en
los registros sin modificar la informacin base, es decir, se
tienen dos diferentes vistas de los mismos datos. El
databinding en ADO.NET siempre se lleva a cabo por uno de
estos objetos.

DataView
La clase DataView acta como una vista en un nico
DataTable. Cuando se crea un objeto DataView, se puede
especificar el DataTable subyacente en el constructor:

// Crear un DataView para la tabla Customers.
DataView view = new DataView(ds.Tables["Customers"]);

Cada DataTable proporciona tambin un DataView
predeterminado a travs de la propiedad DefaultView:

// Obtener una referencia a la default DataView de la tabla Customers.
DataView view = ds.Tables["Customers"].DefaultView;
DataViewManager
El DataViewManager representa una vista de un DataSet
completo. Al igual que con la DataView, es posible crear un
DataViewManager manualmente, pasando una referencia a
un DataSet como argumento del constructor, o se puede
utilizar el DataViewManager predeterminado que se
proporciona a travs de la propiedad
DataSet.DefaultViewManager.
Ejemplo de DataView
Al parecer se esta asociando el
datagrid directamente al datatable,
pero en realidad .NET asocia por
default el datagrid a la propiedad
DefaultView del DataTable, de este
modo es posible utilizar la siguientes
sintaxis equivalentes:
Ejemplo DataViewManager
Ordenar un DataView
Para aplicar un ordenamiento a los datos en un DataView se utiliza la
propiedad DataView.Sort. Para ordenar los datos ADO.NET utiliza la
misma sintaxis que la clausula order by de SQL.
SQL
El equivalente en ADO .NET es
Ordenar por mltiples columnas
Filtrado de un DataView
Para aplicar un filtrado a los datos en un DataView se utiliza la propiedad
DataView.RowFilter. Para filtrar los datos ADO.NET utiliza la misma
sintaxis que la clausula where de SQL.
SQL
El equivalente en ADO .NET es
Es posible tambin aplicar filtrado por el estado del registro del siguiente
modo:
Multiples DataViews
Uno de los aspectos ms tiles de los
DataView es la capacidad de crear
mltiples objetos DataView para
proporcionar diferentes
representaciones de los mismos datos.
Esta tcnica es bastante sencilla y se
muestra en el siguiente ejemplo:
Acceder datos en DataView
Un DataView no es slo para hacer databinding. Tambin se
puede utilizar para hacer cambios programticos. Por
ejemplo, se puede crear un objeto DataView que contengalos
registros que coinciden con determinados criterios y luego
aplicarles un cambio global. Por ejemplo:
Buscar datos en DataView
Una vez que se ha definido un criterio de ordenacin de un DataView,
es posible utilizar criterios de bsqueda de registros. El DataView
proporciona dos mtodos para esta tarea: Find () y FindRows ().
Buscar un registro
Buscar varios registros
Buscar por varios campos
Databinding en Windows Forms
Hasta ahora, los ejemplos mostrados se han concentrado en
un solo control diseado especficamente para el enlace de
datos: el control DataGrid de Windows. Pero la plataforma de
Windows Forms tambin es compatible con el enlace de datos
con casi cualquier control y automticamente puede
sincronizar mltiples controles enlazados a datos.
CurrencyManager y BindingContext
CurrencyManager

Cuando se enlaza un objeto de datos a un control, a este se le
asigna automticamente un objeto CurrencyManager. El
CurrencyManager realiza un seguimiento de la posicin actual
en el origen de datos. Si se va a enlazar a ms de un origen de
datos, cada uno tiene su CurrencyManager por separado. Si
varios controles son enlazados al mismo origen de datos, estos
comparten el mismo objeto CurrencyManager.
CurrencyManager y BindingContext
BindingContext

Cada formulario tiene un objeto BindingContext. El objeto
BindingContext realiza un seguimiento de todos los objetos
CurrencyManager en el formulario. Es posible crear y utilizar
ms de un objeto BindingContext, pero, por defecto, cada
formulario tiene un nico BindingContext.
CurrencyManager y BindingContext
Single-Value Binding (TextBox, Label, etc)
Conectar a un TextBox al campo ContactName de la tabla
List Binding (Combobox, ListBox, etc)
Enlazar el combobox a la tabla customers y mostrar el campo CustomerId (DisplayMember)
Enlazar el combobox a la tabla customers, mostrar el campo ContactName
(DisplayMember) y guardar el campo ValueMember
Desplegar el CustomerId del registro actual
Navegacin
Hasta ahora, hemos considerado slo una forma de control
de la navegacin: el uso de un control de navegacin como
un control ListBox o DataGrid. Sin embargo, tambin es
posible controlar la navegacin mediante programacin
interactuando directamente con el CurrencyManager.
Cuando uno de estos botones se hace clic, un nuevo registro
est seleccionado, y todos los controles vinculados se
actualizan automticamente.








Elaboracin de reportes con Crystal Reports

Qu es Crystal Reports?
Crystal Reports es una aplicacin de inteligencia empresarial utilizada para
disear y generar informes desde una amplia gama de fuentes de datos (bases de
datos).

Crystal Reports fue originalmente creado por Crystal Services Inc., la cual produjo
las versiones 1.0 hasta la 3.0.

La compaa fue subsecuentemente adquirida por Seagate Software, la que
luego fue renombrada como Crystal Decisions, y produjo las versiones 4.0 hasta
la 9.0.

Crystal Decisions fue adquirida en diciembre de 2003 por Business Objects, la cual
ha producido las versiones 10 y 11 (XI).


Qu es Crystal Reports?
Business Objects fue adquirida el 8 de Octubre de 2007 por SAP.

Varias aplicaciones, como Microsoft Visual Studio, incluyen una versin OEM
(Original Equipment Manufacturer - Fabricante de Equipamiento Original) de
Crystal Reports como una herramienta de propsito general para informes.

Crystal Reports ha sido parte de Visual Basic desde 1993, y una parte de Visual
Studio desde su primer lanzamiento en 2002. Crystal Reports ha sido un
componente muy exitoso de estos productos.






Qu es un informe?
Un informe es otra modalidad de presentacin de los datos, que puede enviarse a
la pantalla o imprimirse. Los informes resultan ms adecuados para presentar
informacin agrupada, ofreciendo la posibilidad de agrupar y subagrupar,
permitiendo obtener subtotales de distintos niveles.

Los informes son herramientas de administracin. Sirven para facilitar una rpida
compresin de los elementos bsicos y las relaciones entre los datos sin formato
y ayudarle a tomar las decisiones correctas.

Dentro de los informes pueden incluirse textos, grficos, lneas y diversos
elementos visuales.

Partes de un informe
Encabezado del informe: Los objetos que se coloquen en esta seccin se
imprimirn una sola vez al principio del informe. Esta seccin se usa para poner el
ttulo del informe (si se quiere que salga solamente en la primer pgina), o para
grficas o mapas que representan a todos los datos del informe.

Encabezado de pgina: Esta seccin imprime los objetos al principio de cada
pgina del informe. Esta es una buena localizacin para fechas, nmeros de
pgina, o cualquier otra informacin que el usuario quiera que aparezca en cada
pgina.

Encabezado de grupo: Si se decide dividir la informacin en el informe, esto se
hace creando grupos. Los objetos en esta seccin aparecen al inicio de cada
nuevo grupo. Comnmente esta seccin contiene el nombre del grupo o algn
otro texto identificador que representa los datos del grupo.


Partes de un informe
Detalles: Esta seccin contiene el detalle de los registros del informe y se repite
por cada registro recuperado de la base de datos. Aqu es donde se colocan los
objetos que representan los datos en el informe.

Pie de grupo: Esta seccin imprime al final de cada grupo y solo se despliega
cuando el informe se ha dividido en grupos. Aqu es donde se colocan los
subtotales y sumarios por grupo y cualquier otra informacin que se quiera incluir
al final de cada grupo.

Pie del informe: Los objetos colocados en esta seccin se imprimen solo una vez
al final del informe. Es un lugar perfecto para colocar el gran total y otros
sumarios para el informe entero.


Partes de un informe
Pie de pgina: Como en el encabezado de pgina, esta seccin aparece en cada
pgina del informe, solo que sta se despliega al final de la pgina. Se puede usar
para nmeros de pgina, fecha de impresin, o cualquier otra informacin que el
usuario necesite que se vea en cada pgina del informe.

Cabe destacar que puede incluir tantos Encabezados y Pies de grupo como lo
desee.

Todas las reas mencionadas anteriormente tienen un tamao fijo (establecido
en tiempo de diseo) excepto el rea de detalles la cual crece de acuerdo al
nmero de registros que presenta sobre ella.

Encabezado del Informe
Encabezado del Pgina
Encabezado de grupo 1
Encabezado de grupo 2
Encabezado de grupo 3
DETALLES
Pie del grupo 2
Pie de pgina

Crear un informe mediante el asistente
Con Crystal Reports puede iniciar diseando sus informes a partir de cero creando
un informe en blanco o puede comenzar utilizando el asistente el cual lo guiar
paso a paso en generar un informe.

Por el momento crearemos un informe haciendo uso del asistente.

Siga los siguientes pasos para crear un informe bsico mediante el asistente de
Crystal Reports.







Preparacin del entorno
Se indican los pasos necesarios para crear un ejemplo bsico de informes, puede
seleccionar configuraciones distintas a las presentadas aqu si as lo desea pero se
recomienda que de inicio los siga al pie de la letra y una vez que ya tenga soltura
en el uso de Crystal Reports cree sus propias configuraciones.

Cree la siguiente estructura de carpetas en la unidad C:
C:\AppInformes
C:\AppInformes\BD







Crear la BD
Con Crystal Reports puede utilizar una gran variedad de fuentes de datos.
Utilizaremos el motor de base de datos Sql Server.

Cree una base de datos con Sql Server con la siguiente informacin:

Nombre: REFACCIONARIA
Path: C:\AppInformes\BD






Crear la BD
Cree una tabla con la siguiente informacin:







Introduzca informacin aleatoria a esta tabla
PRODUCTOS
LLAVE CAMPO TIPO NULOS
PK CLAVE INT NO
DESCRIPCION VARCHAR(100) SI
PRECIO FLOAT SI

Crear la aplicacin
Abra Visual Studio 2010 y cree una aplicacin de tipo Windows Form: File-New-
Project. Pngale el nombre AppInformes y lo guarda en la ruta
C:\AppInformes


Crear la aplicacin
Lucir as:


Crear el informe
Una vez creado el proyecto, agregue un informe al proyecto siguiendo estos
pasos:

Seleccione la opcin Project-Add New Item

En la ventana emergente extienda el nodo Visual C# Items del panel de la
izquierda y luego el subnodo Reporting.

En el panel del medio elija la opcin Crystal Reports.

Escriba un nombre para el informe, por ejemplo RepProductos

Clic <Add>


Crear el informe
Seleccin de un informe


Iniciar el asistente
Elija la opcin Using the Report Wizard

Seleccione el informe Standard

Clic <Ok>


Establecer conexin con la BD
En la ventana Standard expanda el nodo Create New Connection y
posteriormente expanda el subnodo OLE DB (ADO)


Establecer conexin con la BD
Se abrir una nueva ventana para establecer la cadena de conexin.

En la lista de Providers seleccione Sql Server Native Client 10.0

Clic <Next>






Establecer conexin con la BD
Seleccione el servidor Sql Server en la lista Server

Si active la casilla Integrated Security

Finalmente elija la base de datos de la lista
database.

Clic <Next>






Establecer conexin con la BD
Si lo desea puede hacer ajustes a ciertas propiedades.

Clic <Finish>






Crear el informe mediante el asistente
Una vez establecida la conexin a la BD, se le mostrarn los objetos de dicha BD.

Seleccione la tabla Productos y arrstrela al panel de la derecha.

Clic <Next>






Crear el informe mediante el asistente

Seleccione los campos con los que desee trabajar en el informe y arrstrelos al
panel de la derecha.

Clic <Next>






Crear el informe mediante el asistente
En la siguiente pantalla podr establecer un campo para agrupacin, por el
momento no utilizaremos esta opcin.

Clic <Next>






Crear el informe mediante el asistente
En la siguiente pantalla podr establecer un filtro para reducir los registros
devueltos, por el momento no utilizaremos esta opcin.

Clic <Next>






Crear el informe mediante el asistente
Seleccione un diseo de informe de su preferencia.

Clic <Finish>






Crear el informe mediante el asistente

El resultado ser similar a este:





Crear un informe mediante el asistente
Describe los pasos a seguir para crear un informe bsico.
Si le da clic en Main Report Preview se mostrar lo siguiente:






Ver el informe en un formulario
Para mostrar el informe en un formulario de su aplicacin siga estos pasos:

Primeramente cambie el framework utilizado por su aplicacin. Por default est
establecido como .NET Framework 4 Client Profile, cmbielo a .NET Framework 4.

Seleccione la opcin Project-AppInformes Properties

Despliegue la lista Target Frameword y elija la opcin .NET Framework 4

Clic <Si>








Ver el informe en un formulario
Propiedades del proyecto.








Ver el informe en un formulario
Abra el formulario donde desee visualizar su informe.

Arrastre el componente CrystalReportViewer desde el toolbox en la pestaa
Reporting y colquelo en el formulario.

Establezca la propiedad ReportSource, seleccione el reporte que acaba de
disear.

Establezca la propiedad Dock= Fill







Crear un informe mediante el asistente
Describe los pasos a seguir para crear un informe bsico.
.








IDE de Crystal Reports





Barra de herramientas
La barra de herramientas nos sirve para acceder de manera ms rpida a las
opciones que tenemos en el men. Crystal Reports tiene cuatro barras de
herramientas bsicas:



Barra de herramientas
Barra de herramientas estndar: Esta barra contiene botones para comandos
bsicos de edicin, tales como guardar, abrir, cortar, copiar, pegar, deshacer, etc.



Barra de herramientas
Barra de herramientas formato: Esta barra contiene botones de comandos para
dar formato, como negrita, itlica, subrayado, alineacin, formato de nmeros,
etc. Muchos de estos botones no se activan hasta que se tiene seleccionado
algn objeto.



Barra de herramientas
Barra de herramientas insertar: Esta barra contiene botones para aadir varios
objetos al reporte. Estos botones generalmente estn activos para todos los
reportes.



Barra de herramientas
Barra de herramientas experto: Esta barra contiene botones para modificar y
formatear objetos como grficas de barras y mapas. Estos botones pueden estar
activos o no, dependiendo del tipo de objeto que representen.




Barra de herramientas
Barra de herramientas alineacin: Esta barra contiene botones que le ayudan a
alinear ciertos objetos con otros.




Explorador de campos
El Explorador de campos se usa para insertar todos los tipos de campos dentro
del reporte.

Se listan los ocho tipos de campos que se pueden insertar:
- De base de datos
- Frmulas
- Expresiones de SQL
- Parmetros
- Totales
- Grupos
- Especiales
- Unbound Fields






rea de trabajo
Esta rea ocupa el mayor espacio del IDE de Crystal Reports y es con la que
trabajar la mayor parte del tiempo al disear un informe.

Se divide en dos reas:

- rea de diseo
- rea de previsualizacin






rea de trabajo
El rea de diseo: Es la representacin esquemtica del reporte que contiene los
campos y el texto ubicados y ordenados en la forma como aparecern en el
reporte.







rea de trabajo
El rea de diseo est dividida en cinco secciones. Cada seccin corresponde a
una parte especfica del reporte ya impreso.

Estas secciones corresponden a las partes de un informe (visto en el punto 4-
Partes de un informe).

Cada seccin tiene sus propias caractersticas que determinan dnde se
imprimirn los objetos

Cada seccin tiene una barra al final de la seccin que define el tamao de la
seccin. Usando el mouse se puede jalar la barra hasta hacer que la seccin se
haga ms pequea o ms grande, y as tener ms o menos espacio en la seccin
para colocar objetos.






rea de trabajo
El rea de previsualizacin: Esta rea nos sirve para ver de manera preliminar el
diseo de nuestro informe a como va a quedar su aspecto final.








Preguntas

Você também pode gostar