You are on page 1of 86

INFORMÁTICA III

Universidad Tecnológica de San Juan del Río


Tecnologías de la Información y Comunicación
3º Cuatrimestre

Lic. Alejandro César Valencia García


OBJETIVO
Manejar y desarrollar la automatización de
información, con nuevas tecnologías de programación
orientada a objetos.

Visual C# (Aplicaciones Windows)

Lic. Alejandro César Valencia García


UNIDADES TEMÁTICAS
I. Aplicación de Controles

II. Creación de Controles

III. Conectividad a Base de Datos

IV. Código Seguro

V. Archivos de Instalación
Lic. Alejandro César Valencia García
MODO DE EVALUACIÓN
• Examen Práctico (40%)

• Ejercicios en Clase y Tareas (50%)

• Asistencia (10%)

• Todos los ejercicios son individuales (a menos que se indique lo contrario),


se penalizará a aquellos estudiantes que copien los ejercicios o que se
retrasen en las fechas estipuladas.

Lic. Alejandro César Valencia García


VISUAL C#
• Es un entorno de desarrollo de última generación,
con gran parte de los elementos de Visual Studio
2005, conjuntamente con el compilador de uno de
los lenguajes de programación más avanzados que
existen en la actualidad: C# 2.0.

Lic. Alejandro César Valencia García


INICIAR UN PROYECTO
• Ir a Archivo -> Nuevo Proyecto.

1. Seleccionar de Visual C#
la opción Aplicación de
Windows

2. Asignarle un
nombre y una carpeta
de almacenamiento

Lic. Alejandro César Valencia García


ELEMENTOS BÁSICOS
• Explorador de soluciones, es una ventana que sirve
para gestionar los elementos que forman parte de
cada proyecto.

• Cuadro de Herramientas, contiene todos los


elementos (componentes) que se pueden incluir en
un proyecto.

• Ventana Propiedades, permite ajustar las


características de los componentes.
Lic. Alejandro César Valencia García
ENTORNO DE TRABAJO
Cuadro de herramientas Explorador de Soluciones

Vista Diseño

Ventana Propiedades
Lic. Alejandro César Valencia García
DISEÑAR UNA INTERFAZ
• Arrastra los componentes que desees al formulario,
observa que cada uno tiene un nombre y
propiedades.
Los componentes más
usados son:
-Etiquetas (label)
-Cajas de texto (textbox)
-Botones (button)

Lic. Alejandro César Valencia García


PROGRAMAR LOS COMPONENTES
• Para agregar código de programación a cada
componente haz doble clic sobre él.

Lic. Alejandro César Valencia García


EJEMPLO 1
• Programa que muestra un saludo con el nombre que
introduce el usuario en el textbox.

label1
Label1 (a esta le
borramos el
contenido de la
textBox1 propiedad text)

Button1
Button2

Lic. Alejandro César Valencia García


EJEMPLO 1
• El código del botón Saludo sería:

label2.Text = "Hola " + textBox1.Text;

• El código del botón Limpiar sería:

label2.Text = "";
textBox1.Text = "";
textBox1.Focus();

Lic. Alejandro César Valencia García


EJERCICIOS
• Realiza un programa que pida 2 números al usuario y
coloca un botón para Suma, uno para Resta, uno para
Multiplicación y uno para División. El resultado debe
aparecer en otro textBox. (Recuerda usar Parse para
convertir a entero)

• Realiza un programa que resuelva el Área del Triángulo

• Realiza un programa que resuelva el Área del Círculo

Lic. Alejandro César Valencia García


PROPIEDADES BÁSICAS (FORM)
• BackColor: Color de fondo del formulario.

• BackgroundImage: Imagen de fondo del formulario.

• BackGroundImageLayout: Forma en la que se despliega la


imagen de fondo (Tile, Center, Stretch, Zoom)

• ControlBox: Permite habilitar o inhabilitar la caja de control


del formulario (Maximizar, Minimizar, Cerrar)

• ForeColor: Color del texto sobre el formulario (label)


Lic. Alejandro César Valencia García
PROPIEDADES BÁSICAS (FORM)
• FormBorderStyle: Estilo del borde del formulario. Por default está
en Sizable.

• Icon: Icono que aparece en la barra de título del formulario (debe


ser un archivo con extensión .ico)

• StartPosition: Posición en la pantalla en la que se ejecuta el


formulario (CenterScreen es al centro de la pantalla)

• Text: Texto que aparece en la barra de título

• WindowState: Estado inicial del formulario (maximizado,


minimizado, etc.)

Lic. Alejandro César Valencia García


PROPIEDADES BÁSICAS (LABEL)
• BackColor: Color de fondo de la etiqueta.

• BorderStyle: Estilo del borde de la etiqueta.

• Enabled: Indica si el control está habilitado

• Font: Permite cambiar tipo y tamaño de letra

• ForeColor: Color del texto de ese label en particular

Lic. Alejandro César Valencia García


EJERCICIOS
• Realiza un programa que pida las calificaciones de las
materias cursadas de un alumno de tercer
cuatrimestre y calcule su promedio. Si el promedio
obtenido es menor a 7, debe aparecer en rojo el
color del texto.

• La instrucción para cambiar el color de texto de un


control es:
textBox1.ForeColor=System.Drawing.Color.Red;

Lic. Alejandro César Valencia García


OTRAS PROPIEDADES
• Anchor: Indica a cuáles bordes del contenedor está anclado
un control. Esto permite que al cambiar el tamaño del
formulario, los controles se adapten dependiendo a cuál
borde estén anclados (Top, Bottom, Left, Right).

Lic. Alejandro César Valencia García


OTRAS PROPIEDADES
• Multiline: Permite que un textBox sea capaz de recibir varias
líneas de texto. (true, false)

• MinimumSize: Es el tamaño mínimo que un form puede


tener.

• MaximumSize: Es el tamaño máximo que un form puede


tener.
Lic. Alejandro César Valencia García
EJEMPLO
• Diseña un formulario como este:

Los textBox para el


domicilio y el resumen
deben tener la propiedad
Multiline en true.

El textBox para el resumen


debe tener la propiedad
ReadOnly en true.

Lic. Alejandro César Valencia García


EJEMPLO
• La propiedad Anchor debe quedar así:

Control Valor

Todos los label Top, Bottom, Left

Todos los textBox excepto el de


Top, Left, Right
resumen

textBox de resumen Top, Bottom, Left, Right

Botones Top, Right

Lic. Alejandro César Valencia García


EJEMPLO
• Código del botón Aceptar:

string resumen;

resumen = "Nombre: " + textBox1.Text + "\r\n";


resumen += "Dirección: " + textBox2.Text + "\r\n";
resumen += "Ocupación: " + textBox3.Text + "\r\n";
resumen += "Edad: " + textBox4.Text;

textBox5.Text = resumen;

Lic. Alejandro César Valencia García


EJEMPLO
• Código del botón Ayuda:

string resumen;

resumen = "Nombre = Tu nombre\r\n";


resumen += "Dirección = Tu dirección\r\n";
resumen += "Ocupación = El único valor permitido
es 'Programador'\r\n";
resumen += "Edad = Tu edad";

textBox5.Text = resumen;

Lic. Alejandro César Valencia García


CONTROL RADIOBUTTON
• Los botones de radio se despliegan como una etiqueta con un
pequeño círculo que puede ser seleccionado o no. Se usa
cuando se le quiere dar al usuario una elección entre varias
opciones (por ejemplo, el sexo del usuario).

• Para agrupar cajas de radio juntas se usa un control


GroupBox, y dentro de él los botones de radio.

Lic. Alejandro César Valencia García


CONTROL CHECKBOX
• Un CheckBox (casilla de verificación) se despliega como una
etiqueta con una casilla que puede ser marcada. Se usa
cuando se le dan al usuario una o más opciones posibles para
seleccionar (Como un cuestionario que permite varias
respuestas).

Lic. Alejandro César Valencia García


EJEMPLO
• Cambia el diseño del formulario original por este:

Borra el textbox y el label de


Ocupación.

Agrega un GroupBox y cambia su


propiedad Text por Sexo. Dentro
agrega 2 radiobuttons para
Masculino y Femenino.

Agrega un CheckBox y cambia su


propiedad Text a Programador

Lic. Alejandro César Valencia García


EJEMPLO
• Nuevo código para botón Aceptar:

string resumen;

resumen = "Nombre: " + textBox1.Text + "\r\n";


resumen += "Dirección: " + textBox2.Text + "\r\n";
resumen += "Ocupación: " + (string)(checkBox1.Checked ?
"Programador" : "No es programador") + "\r\n";
resumen += "Sexo: " + (string)(radioButton1.Checked ?
"Femenino" : "Masculino") + "\r\n";
resumen += "Edad: " + textBox4.Text;

textBox5.Text = resumen;

Lic. Alejandro César Valencia García


EJEMPLO
• Nuevo código para el botón de Ayuda:

string resumen;

resumen = "Nombre = Tu nombre\r\n";


resumen += "Dirección = Tu dirección\r\n";
resumen += "Programador = Selecciona la casilla
'Programador' si es tu caso\r\n";
resumen += "Sexo = Selecciona tu sexo\r\n";
resumen += "Edad = Tu edad";

textBox5.Text = resumen;

Lic. Alejandro César Valencia García


EJEMPLO
• Carencias que se observan:

▫ El nombre del usuario no debe quedar en blanco


▫ La edad del usuario debe ser un número mayor o igual a cero
▫ El domicilio del usuario no puede quedar en blanco.

Lic. Alejandro César Valencia García


VALIDACIÓN DE DATOS
• Proceso para comprobar la precisión de los datos. Se
puede utilizar para mostrar mensajes de error
cuando los usuarios especifican valores incorrectos
en un formulario.

Lic. Alejandro César Valencia García


VALIDACIÓN DE DATOS
• Para evitar que el usuario deje una caja de texto en blanco, se
programa en el botón de Aceptar una condición que evalúe el
contenido de la misma, y mande un mensaje (con MessageBox) al
usuario.

if (textBox1.Text == "")
{
MessageBox.Show("Debe introducir un
texto","Atención",MessageBoxButtons.OK,MessageBoxIcon.Error);
textBox1.Focus();
}

Lic. Alejandro César Valencia García


MESSAGEBOX
• Es un mensaje emergente. Su sintaxis es:

MessageBox.Show("Texto del mensaje","Título del


mensaje",MessageBoxButtons.OK,MessageBoxIcon.Error);

Botones que muestra Icono que muestra

Lic. Alejandro César Valencia García


VALIDAR NÚMEROS
• Para que el usuario introduzca sólo números en el textBox,
primero se suscribe al evento KeyPress (cuando se presiona
una tecla). Al comienzo del código se agrega la línea en
negritas:

public Form1()
{

InitializeComponent();
this.textBox1.KeyPress += new
System.Windows.Forms.KeyPressEventHandler(this.te
xtBox1_KeyPress);
}
Lic. Alejandro César Valencia García
VALIDAR NÚMEROS
• Se agrega esta función:

private void textBox1_KeyPress(object sender,


System.Windows.Forms.KeyPressEventArgs e)
{

if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8)


e.Handled = true;

Los únicos caracteres que se permitirá introducir en el TextBox serán los números
del 0 al 9 (ASCII del 48 al 57) y se permitirá también usar el Backspace (ASCII 8)
para borrar.

Lic. Alejandro César Valencia García


EJERCICIO
• Hacer un programa de punto de venta que pida al usuario:
cantidad de artículos, descripción y precio unitario. Cada vez
que se pulse el botón de Aceptar se debe calcular el subtotal
de ese artículo y agregarlo a un textBox (como un ticket de
compra).

• Debe tener validación: cantidad de artículos y precio deben


permitir solo números y la descripción no puede quedar en
blanco.

Lic. Alejandro César Valencia García


VARIABLES GLOBALES
• Es una variable que puede utilizarse en más de una función,
ya que es pública.

• Se debe declarar una clase y cada variable se declara como


public static además del tipo de dato:

class variables
{
public static string resumen;
}

Lic. Alejandro César Valencia García


VARIABLES GLOBALES
• Se hace referencia a ellas desde cualquier función, indicando
el nombre de la clase a la que pertenecen, seguido por un
punto y el nombre de la variable.

variables.resumen += "Cantidad: " + textBox1.Text;


textBox3.Text = variables.resumen;

Lic. Alejandro César Valencia García


NÚMEROS ALEATORIOS
• Un número aleatorio es un valor generado al azar dentro de
un rango específico.

• En C Sharp existe una clase llamada Random que permite


declarar objetos que generen números aleatorios.

Random aleatorio = new Random();


int numero1 = aleatorio.Next(1, 42);

• El código anterior genera un número aleatorio entre 1 y 42 y


lo almacena en la variable entera numero1.

Lic. Alejandro César Valencia García


EJEMPLO (JUEGO DE ADIVINANZAS)
• Programa que pide al usuario un número y genera otro
(aleatorio) al presionar el botón de TIRAR. Si son iguales da un
mensaje de triunfo al jugador.

Este es un label vacío que mostrará el mensaje

Lic. Alejandro César Valencia García


CÓDIGO DE TIRAR
Random aleatorio = new Random();
int numero = aleatorio.Next(1, 10);
textBox2.Text = Convert.ToString(numero);

if (int.Parse(textBox1.Text) == numero)
{
label3.Text = "FELICIDADES, Ganaste";
}
else
{
label3.Text = "Sigue intentando";
}

Lic. Alejandro César Valencia García


EJERCICIO
• Realiza un programa de juego de lotería, donde el usuario
introduzca 6 números y la PC genere otros 6 de manera
aleatoria. Debes contabilizar el número de aciertos y otorgar
un premio de acuerdo a lo siguiente:
No. De Aciertos Premio
6 $1,000,000.00 (un millón de pesos)
5 $100,000.00 (cien mil pesos)
4 $25,000.00 (veinticinco mil pesos)
3 $10,000.00 (diez mil pesos)
2 $1,000.00 (mil pesos)
1 Reintegro
El rango de números es entre 1 y 42, el programa debe validar que el usuario
introduzca sólo números, los textBox del CPU deben ser sóloLic.
lectura.
Alejandro César Valencia García
COMBOBOX
• Conocidos como listas desplegables, permiten al usuario
seleccionar una de varias opciones, y así limitar el rango de
datos que el programa va a permitir.

• Su principal propiedad es Items, en la cual se agregan los


elementos de la lista desplegable. La propiedad Text
corresponde al elemento seleccionado por el usuario.

Lic. Alejandro César Valencia García


COMBOBOX (AGREGAR ELEMENTOS)
• En la propiedad Items, haz clic en el botón correspondiente y
aparecerá el siguiente cuadro:

• Escribe los elementos, uno por línea. Cada elemento se


considera como string.
Lic. Alejandro César Valencia García
EJEMPLO
• Programa para una gasolinería. El usuario seleccionará con un
combo el tipo de gasolina (Magna o Premium) y en base a la
selección se mostrará el precio por litro en un textBox:

Este textBox queda como solo lectura

Lic. Alejandro César Valencia García


CÓDIGO DEL BOTÓN CALCULAR PAGO (1 DE 3)
string tipo;
double precio=0,total=0;
int litros;
tipo=comboBox1.Text;

switch (tipo
{
case "Magna":
precio = 7.50;
textBox1.Text = Convert.ToString(precio);
break;

Lic. Alejandro César Valencia García


CÓDIGO DEL BOTÓN CALCULAR PAGO (2 DE 3)
case "Premium":
precio = 10.00;
textBox1.Text = Convert.ToString(precio);
break;
default:
MessageBox.Show("Opción no válida");
comboBox1.Focus();
break;
}

Lic. Alejandro César Valencia García


CÓDIGO DEL BOTÓN CALCULAR PAGO (3 DE 3)
litros = int.Parse(textBox2.Text);
total = litros * precio;
textBox3.Text = Convert.ToString(total);

Lic. Alejandro César Valencia García


ALIMENTAR UN COMBOBOX DINÁMICAMENTE
• El usuario seleccionará una zona del estado de Querétaro
(Norte, Centro, Sur) en un combo y en otro combo aparecerán
los municipios de la zona seleccionada.

Este comboBox tendrá los items: Norte, Centro


y Sur. El otro combo queda en blanco

Lic. Alejandro César Valencia García


CÓDIGO (1 DE 2)
• El código se agrega en el evento SelectedIndexChanged, es
decir cuando el usuario seleccione un elemento de la lista.
Para agregar el código haz doble clic en el comboBox1.

string[] mun_norte= new string[]{"Arroyo Seco", "Jalpan de


Serra", "Pinal de Amoles","Landa de Matamoros"};

string[] mun_centro = new string[] { "Cadereyta",


"Ezequiel Montes", "Peñamiller", "Tolimán" };

string[] mun_sur = new string[] { "Amealco", "San Juan del


Río", "Tequisquiapan" };

string region = comboBox1.Text;


Lic. Alejandro César Valencia García
CÓDIGO (2 DE 2)
switch (region)
{
case "Norte":
comboBox2.Items.Clear();
comboBox2.Items.AddRange(mun_norte);
break;
case "Centro":
comboBox2.Items.Clear();
comboBox2.Items.AddRange(mun_centro);
break;
case "Sur":
comboBox2.Items.Clear();
comboBox2.Items.AddRange(mun_sur);
break;
default:
comboBox2.Items.Clear();
MessageBox.Show("Opción no válida");
comboBox1.Focus();
break;
} Lic. Alejandro César Valencia García
TRABAJAR CON VARIOS FORMULARIOS
• Un proyecto puede estar compuesto por más de un
formulario, dependiendo la complejidad del mismo.

• Por default, en un proyecto nuevo se genera el archivo


form1.cs, que representa a nuestro primer formulario.

• Para agregar un formulario al proyecto:

▫ Menu Proyecto -> Agregar Windows Forms…

Lic. Alejandro César Valencia García


TRABAJAR CON VARIOS FORMULARIOS
• En el cuadro de diálogo de agregar nuevo elemento,
selecciona Windows Form, y Agregar.

Lic. Alejandro César Valencia García


TRABAJAR CON VARIOS FORMULARIOS
• El nuevo formulario aparece ahora en el Explorador de
Soluciones

Lic. Alejandro César Valencia García


EJEMPLO – COMO ABRIR OTRO FORMULARIO
• En el formulario 1, agregamos un botón que al darle clic nos
abrirá el segundo formulario:

El código del botón quedaría:

Form2 frm = new Form2();


frm.ShowDialog();

Lic. Alejandro César Valencia García


EJERCICIO
Hacer un programa que tenga un formulario inicial con 4
botones :

-Conversión de pesos a dólares


-Conversión de pies a metros
-Conversión de libras a kilogramos
-Conversión de millas a kilómetros

Hacer los formularios correspondientes a cada área

Lic. Alejandro César Valencia García


EJERCICIO
• Hacer un programa que pida usuario y contraseña y muestre
un segundo formulario. Si el usuario o contraseña son
incorrectos, mostrar un mensaje de error. Sólo deben
permitirse 3 intentos de acceso, al cuarto acceso, cerrar el
programa.

Lic. Alejandro César Valencia García


ACCESO A BASE DE DATOS
• Actualmente la mayoría de los proyectos de desarrollo de
software que se ponen en marcha cuentan entre sus
necesidades con el acceso a bases de datos relacionales.

• El ADO.NET es un conjunto de componentes del 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án incluidas en el Microsoft .NET
Framework.

Lic. Alejandro César Valencia García


ADO .NET

Lic. Alejandro César Valencia García


DATA PROVIDER
• Connection: Proporciona una conexión usada para comunicarse con la
fuente de datos.

• Command: Usado para realizar alguna acción en la fuente de datos, como


lectura, actualización, o borrado de datos relacionales.

• Parameter: Describe un simple parámetro para un command. Un ejemplo


común es un parámetro para ser usado en un procedimiento almacenado.

• DataAdapter: "Puente" utilizado para transferir datos entre una fuente de


datos y un objeto DataSet (ver abajo).

• DataReader: Es una clase usada para procesar eficientemente una lista


grande de resultados, un registro a la vez.
Lic. Alejandro César Valencia García
EJEMPLO
• Crear una base de datos en Access (versión 2003) llamada
clientes y una tabla del mismo nombre con los campos:

▫ ID (autonumérico)
▫ Nombre (texto, 100)
▫ Apellido_p (texto, 100)
▫ Apellido_m (texto, 100)
▫ Domicilio (texto, 255)
▫ Telefono (texto, 50)
▫ E_mail (texto, 50)

• Introducir 5 registros.

Lic. Alejandro César Valencia García


EJEMPLO
• Genera un nuevo proyecto de Visual. El primer formulario
tendrá botones para acceder a las secciones del sistema:

Lic. Alejandro César Valencia García


EJEMPLO
• Agrega un nuevo form, y programa el botón de Consultas para
abrir este formulario.

Lic. Alejandro César Valencia García


EJEMPLO
• En el nuevo formulario, insertar un componente
DataGridView y dos botones (Ver Registros y Salir):

Lic. Alejandro César Valencia García


EJEMPLO
• Propiedades para el DataGridView:

ColumnsHeadersVisible = True (para que muestre los


nombres de los campos)

ReadOnly = True (Para que no permita borrar, modificar o


agregar registros)

RowHeaderVisible = False (para que no agregue un número


en cada fila)

Lic. Alejandro César Valencia García


EJEMPLO
• Código para el botón de Ver Registros:
// se declaran los objetos conexión, adapter y dataset

OleDbConnection CANAL;
OleDbDataAdapter ORDEN;
DataSet TABLA;

// crear y enlazar conexión a la base de datos. Checar bien la ruta

CANAL = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data


Source=c:\\clientes.mdb");

// crear y cargar el adapter con la instruccion sql

ORDEN = new OleDbDataAdapter("select * from clientes", CANAL);

Lic. Alejandro César Valencia García


EJEMPLO
// se crea y se carga el dataset

TABLA = new DataSet();


ORDEN.Fill(TABLA, “clientes");

// se carga y se enlaza el DataGridView

dataGridView1.DataSource = TABLA;
dataGridView1.DataMember = “clientes";

Importante. Se debe agregar en las directivas using (al comienzo del código):

using System.Data.OleDb
Lic. Alejandro César Valencia García
EJEMPLO
• Debe mostrar los registros de esta forma:

• Si es necesario ajusta los tamaños del formulario y del


dataGrid para que se visualicen todos los campos.
Lic. Alejandro César Valencia García
EJEMPLO
• Agrega un nuevo form, y programa el botón de Altas para
abrir este formulario:

Lic. Alejandro César Valencia García


EJEMPLO
• El diseño del nuevo formulario sería así:

Lic. Alejandro César Valencia García


EJEMPLO
• Código del botón Guardar:

// crear y cargar conexión y command

OleDbConnection CANAL;
OleDbCommand ORDEN;

// se abre la conexión. Checar la ruta

CANAL = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data


Source=c:\\clientes.mdb");

string q = "insert into clientes(nombre,apellido_p,apellido_m,domicilio,telefono,e_mail)


values(@NOMBRE, @APELLIDO_P, @APELLIDO_M, @DOMICILIO, @TELEFONO,
@E_MAIL)";

ORDEN = new OleDbCommand(q, CANAL);


Lic. Alejandro César Valencia García
EJEMPLO
ORDEN.Parameters.Add(new OleDbParameter("@NOMBRE", OleDbType.VarWChar, 100));
ORDEN.Parameters["@NOMBRE"].Value = textBox1.Text;

ORDEN.Parameters.Add(new OleDbParameter("@APELLIDO_P", OleDbType.VarWChar, 100));


ORDEN.Parameters["@APELLIDO_P"].Value = textBox2.Text;

ORDEN.Parameters.Add(new OleDbParameter("@APELLIDO_M", OleDbType.VarWChar, 100));


ORDEN.Parameters["@APELLIDO_M"].Value = textBox3.Text;

ORDEN.Parameters.Add(new OleDbParameter("@DOMICILIO", OleDbType.VarWChar, 255));


ORDEN.Parameters["@DOMICILIO"].Value = textBox4.Text;

ORDEN.Parameters.Add(new OleDbParameter("@TELEFONO", OleDbType.VarWChar, 50));


ORDEN.Parameters["@TELEFONO"].Value = textBox5.Text;

ORDEN.Parameters.Add(new OleDbParameter("@E_MAIL", OleDbType.VarWChar, 50));


ORDEN.Parameters["@E_MAIL"].Value = textBox6.Text;
Lic. Alejandro César Valencia García
EJEMPLO
ORDEN.Connection.Open();
ORDEN.ExecuteNonQuery();
ORDEN.Connection.Close();

MessageBox.Show("Se insertó un registro correctamente");

textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox5.Text = "";
textBox6.Text = "";
textBox1.Focus();
Lic. Alejandro César Valencia García
TIPOS DE DATO OLEDBTYPE MÁS COMUNES

• Integer

• Char

• Date

• Double

• VarWChar

Lic. Alejandro César Valencia García


EJEMPLO
• Agrega un nuevo form y programa el botón de Modificaciones
para abrir este formulario:

Lic. Alejandro César Valencia García


EJEMPLO
• El diseño del formulario quedaría así:

La idea es que cuando cargue el


formulario muestre el primer registro
en los textBox. El usuario modifique lo
necesario y dé clic en Guardar.

El textBox1 (ID del Cliente) es solo


lectura (propiedad readonly en true)

En la parte inferior del formulario se


agregan botones de navegación para
ver los demás registros (primero,
anterior, siguiente, último)

Lic. Alejandro César Valencia García


EJEMPLO
• Entrar al código y agregar las líneas que están en naranja (identifica bien la ubicación
del código):

using System.Data.OleDb;

namespace clientes
{
public partial class Form4 : Form
{
public Form4()
{
InitializeComponent();
}

private int fila;


private OleDbConnection CANAL;
private OleDbDataAdapter ORDEN;
private DataTable TABLA;

Lic. Alejandro César Valencia García


EJEMPLO
• Hacer doble clic en el form (no en los controles) y agregar el siguiente código
(debe quedar en Form4_Load):
CANAL = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\clientes.mdb");
ORDEN = new OleDbDataAdapter("select * from clientes", CANAL);

//Se asigna el comando Update al DataAdapter


OleDbCommandBuilder cb = new OleDbCommandBuilder(ORDEN);
ORDEN.UpdateCommand = cb.GetUpdateCommand();

TABLA = new DataTable();


ORDEN.Fill(TABLA);

// Y mostrar el primer registro


if (TABLA.Rows.Count > 0)
{
button3_Click(null, null);
}
else
{
fila = -1;
button1.Enabled = false;
}
Lic. Alejandro César Valencia García
EJEMPLO
• Código para el botón > (siguiente):

// Posicionarse en la fila siguiente


int uf = TABLA.Rows.Count - 1;
fila = fila + 1;
if (fila > uf) fila = uf;
// Mostrar los datos de la fila indicada
mostrarDatos(fila);

• Código para el botón >| (último):

// Posicionarse en la última fila


fila = TABLA.Rows.Count - 1;
// Mostrar los datos de la fila indicada
mostrarDatos(fila);
Lic. Alejandro César Valencia García
EJEMPLO
• Código para el botón |< (primero):

// Posicionarse en la primera fila


fila = 0;
// Mostrar los datos de la fila indicada
mostrarDatos(fila);

• Código para el botón < (anterior):

// Posicionarse en la fila anterior


fila = fila - 1;
if (fila < 0) fila = 0;
// Mostrar los datos de la fila indicada
mostrarDatos(fila);
Lic. Alejandro César Valencia García
EJEMPLO
• Código para el botón Grabar:
// Actualizar los datos en la fila actual
if (fila < 0 || fila > TABLA.Rows.Count - 1) return;

DataRow dr = TABLA.Rows[fila];
// Asignar los datos de los textbox a la fila
asignarDatos(dr);
// Guardar físicamente los datos en la base
try
{
ORDEN.Update(TABLA);
TABLA.AcceptChanges();
MessageBox.Show("El Registro ha sido modificado");
}
catch (DBConcurrencyException ex)
{
MessageBox.Show("Error de concurrencia:\n" + ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Lic. Alejandro César Valencia García
EJEMPLO
• Agregar esta función después del último botón:
private void mostrarDatos(int f)
{
int uf = TABLA.Rows.Count - 1;
if (f < 0 || uf < 0) return;

DataRow dr = TABLA.Rows[f];
textBox1.Text = dr["ID"].ToString();
textBox2.Text = dr["nombre"].ToString();
textBox3.Text = dr["apellido_p"].ToString();
textBox4.Text = dr["apellido_m"].ToString();
textBox5.Text = dr["domicilio"].ToString();
textBox6.Text = dr["telefono"].ToString();
textBox7.Text = dr["e_mail"].ToString();

button1.Enabled = true;
}
Lic. Alejandro César Valencia García
EJEMPLO
• Agregar esta función después de la anterior:

private void asignarDatos(DataRow dr)


{
// Usar los datos que hay en los textbox
dr["nombre"] = textBox2.Text;
dr["apellido_p"] = textBox3.Text;
dr["apellido_m"] = textBox4.Text;
dr["domicilio"] = textBox5.Text;
dr["telefono"] = textBox6.Text;
dr["e_mail"] = textBox7.Text;
}

Lic. Alejandro César Valencia García


EJEMPLO
• Agrega un nuevo form y programa el botón de Bajas para abrir este
formulario:

Lic. Alejandro César Valencia García


EJEMPLO
• El diseño del formulario quedaría así (es exactamente igual al de
Modificaciones):
Todo el código que agregaste en el
form de modificaciones lo tienes que
agregar aquí.

La única diferencia es que el botón de


Guardar debe decir ahora Eliminar, y el
código de ese botón viene en la
siguiente diapositiva

Lic. Alejandro César Valencia García


EJEMPLO
• Código para el botón de Eliminar:
// Objetos OLEDB que se ocupan

OleDbCommand ORDEN2;

// Instruccion sql DELETE FROM TABLA WHERE CLAVE=DATO

string q = "delete from clientes where id=@ID";

ORDEN2 = new OleDbCommand(q, CANAL);

ORDEN2.Parameters.Add(new OleDbParameter("@ID", OleDbType.Integer));


ORDEN2.Parameters["@ID"].Value = textBox1.Text;

ORDEN2.Connection.Open();
ORDEN2.ExecuteNonQuery();
ORDEN2.Connection.Close();

Continúa en la siguiente diapositiva…


Lic. Alejandro César Valencia García
EJEMPLO
//reseteando la Tabla
TABLA.Rows.Clear();
ORDEN.Fill(TABLA);

MessageBox.Show("Registro Eliminado");

// Y mostrar el primer registro


if (TABLA.Rows.Count > 0)
{
button3_Click(null, null);
}
else
{
fila = -1;
button1.Enabled = false;
}
Lic. Alejandro César Valencia García

You might also like