A Iii

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View A Iii as PDF for free.

More details

  • Words: 4,009
  • Pages: 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 características de los componentes.

ajustar

las

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

textBox1 Button1

borramos el contenido de la propiedad text)

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 minimizado, etc.)

inicial

del

formulario

(maximizado,

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 resumen

Top, Left, Right

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 resumen resumen resumen

= "Nombre: " + textBox1.Text + "\r\n"; += "Dirección: " + textBox2.Text + "\r\n"; += "Ocupación: " + textBox3.Text + "\r\n"; += "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

Related Documents

Iii A
October 2019 14
A Iii
May 2020 14
Scrisoarea A Iii A
October 2019 22
Scrisoarea A Iii-a
November 2019 19
A Iii 06 Program A
November 2019 18