UNIVERSIDAD TECNOLÓGICA DE IZÚCAR DE MATAMOROS Código de la Aplicación El alumno desarrollará aplicaciones visuales con acceso a una BD local para administrar la información. 22/10/2012 Implementar sistemas de información de calidad, a través de técnicas avanzadas de desarrollo de software para eficientar los procesos de las organizaciones. Implementar y administrar sistemas manejadores de bases de datos acorde a los requerimientos de información de la organización.
Tabla de Contenido Introducción 2 Manejo de Datos (ACME) 4 Formulario ListaCompleta 5 Código del Botón Imprimir Lista 7 Código del Evento PrintPage del Contról prtdocumento 7 Código del Botón Consultar para Llenado del DataGrid 9 Código para el evento Click del botón Guardar 10 Código para el evento Click del botón Actualizar 12 Código para el evento Click del botón Eliminar 14 Tabla de Ilustraciones Ilustración 1. Inicio de sesión del sistema. 2 Ilustración 2. Fornulario principal. 3 Ilustración 3. Diseño del formulario de Lista de Usuarios. 5 Ilustración 4. Controles de sección Impresión. 6 Ilustración 5. Reporte en formato pdf. 6
Introducción Con base en la información teórica y las prácticas desarrolladas en clase presencial, se pide desarrollar una aplicación de Windows Forms con una Conexión a una Base de Datos Local, para ello dentro de las actividades se dio inicio con el ejemplo de Gestión de Usuarios, con lo cual se pretende aplicar lo aprendido en las actividades. Hasta ahora ya deben de tener lo que a continuación se detalla y se muestra en las imágenes, después de haber seguido el archivo de Conexión a BD con C# y Sql Server. Ilustración 1. Inicio de sesión del sistema. Dentro del inicio de sesión del sistema se tiene una consulta a la base de datos utilizada (negocio), comparando los datos que se atrapan en los campos de texto con los que existen en la tabla de la base de datos.
Ilustración 2. Fornulario principal. En el formulario principal tenemos algunas etiquetas y un Picture para agregar una imagen, podrán observar que tenemos un Timer y entonces lo tienen que agregar al formulario principal, para mostrar en la etiqueta correspondiente los cambios del evento Tick del mismo Timer, el código para hacer esto es el siguiente: private void timer1_tick(object sender, EventArgs e) System.DateTime d2 = System.DateTime.Now; lbltiempo.text = Convert.ToString(d2);
Manejo de Datos (ACME) Posteriormente al cargar el formulario de Gestión de Usuarios, podremos realizar las operaciones solicitadas, en los botones correspondientes, a continuación los códigos para cada uno: Código Botón Guardar Código Botón Actualizar Código Botón Eliminar Nota: El botón buscar hace una consulta de tipo select para seleccionar el usuario con el id especificado en el campo de texto de Clave.
Formulario ListaCompleta El botón Lista Completa lanza a un formulario secundario en el cual se tiene el siguiente diseño: Ilustración 3. Diseño del formulario de Lista de Usuarios. Dentro del DataGrid tenemos que consultar los datos que existen en la tabla, para ello agregar un DataGrid llamado dtglistausuarios en el formulario y puede usar el código siguiente: Código del Botón Consultar Una vez que se llena el DataGrid con los datos de la tabla, estos se mandan a imprimir, para ello, necesitará agregar 2 controles (PrintDialog y PrintDocument) con los nombres detallados en la siguiente imagen:
Ilustración 4. Controles de sección Impresión. Además el código del botón ImprimirLista que también es necesario agregarlo en el formulario, para lo cual active el Evento Click del botón y el código es el siguiente: Código del Botón Imprimir Lista Notar que para la impresión se agrega dentro del evento PrintPage un código que es el que se muestra a continuación: Código del Evento PrintPage del Contról prtdocumento Revisar el funcionamiento de la aplicación y al mandar a imprimir la lista deberá generar un archivo pdf similar al de la siguiente imagen: Ilustración 5. Reporte en formato pdf.
Código del Botón Imprimir Lista private void btnimprimirlista_click(object sender, EventArgs e) pddialogo.document = prtdocumento; if (pddialogo.showdialog() == DialogResult.OK) prtdocumento.print(); Código del Evento PrintPage del Contról prtdocumento private void prtdocumento_printpage(object sender, System.Drawing.Printing.PrintPageEventArgs ev) // Especificamos la fuente para el documento. Font font = new Font("Microsoft Sans Serif", 11); int ycord = 180; // Contamos las filas del DataGrid. int renglones = dtglistausuarios.rows.count; // Mostramos el título y la fecha. Font fonttitle = new Font("Arial", 18); string titulo = "REPORTE GENERAL DE USUARIOS"; ev.graphics.drawstring(titulo, fonttitle, Brushes.Black, 200, 30); DateTime timer = DateTime.Now; string fecha = Convert.ToString(timer); fecha = "Fecha y hora de impresión del Reporte: " + fecha; ev.graphics.drawstring(fecha, font, Brushes.Black, 30, 80); // Obtiene o establece la celda de encabezado de la columna. string col1 = dtglistausuarios.columns[0].headertext.tostring(); // Obtiene o establece la celda de encabezado de la Fila. //string col1 = Convert.ToString(dtgListaUsuarios.Rows[0].HeaderCell.Value = "Clave"); ev.graphics.drawstring(col1, font, Brushes.Black, 30, 130); string col2 = dtglistausuarios.columns[1].headertext.tostring(); ev.graphics.drawstring(col2, font, Brushes.Black, 80, 130); string col3 = dtglistausuarios.columns[2].headertext.tostring(); ev.graphics.drawstring(col3, font, Brushes.Black, 320, 130); // Recorremos el DataGrid. for (int i = 0; i < renglones; i++)
// Atrapamos los valores de cada fila del DataGrid. string id2 = dtglistausuarios.rows[i].cells["id_usergrid"].value.tostring(); ev.graphics.drawstring(id2, font, Brushes.Black, 30, ycord); string nombre = dtglistausuarios.rows[i].cells["nombre_usergrid"].value.tostring(); ev.graphics.drawstring(nombre, font, Brushes.Black, 80, ycord); string comen = dtglistausuarios.rows[i].cells["comentario_usergrid"].value.tostring(); ev.graphics.drawstring(comen, font, Brushes.Black, 320, ycord); // Ampliamos los interlineados para cada renglon. ycord = ycord + 40;
Código del Botón Consultar para Llenado del DataGrid private void btnconsultarlista_click(object sender, EventArgs e) llenardatagrid(); public void llenardatagrid() string cadenaconexion = @"Server=Servidor;Database=negocio2;Integrated Security=True"; SqlConnection miconexion = new SqlConnection(cadenaConexion); string consulta = "SELECT id_user,nombre_user,comentario FROM tabla"; SqlCommand micomando = new SqlCommand(consulta, miconexion); SqlDataReader myreader = null; miconexion.open(); dtglistausuarios.rows.clear(); myreader = micomando.executereader(); // Mientras haya datos va creando una Fila. while (myreader.read()) // Utilizado para contar las filas. int renglon = dtglistausuarios.rows.add(); // Obtiene el índice de columna a partir del nombre de la columna determinado. // Obtiene un número y se lo asigna a la columna especificada. dtglistausuarios.rows[renglon].cells["id_usergrid"].value = myreader.getbyte(myreader.getordinal("id_user")).tostring(); dtglistausuarios.rows[renglon].cells["nombre_usergrid"].value = myreader.getstring(myreader.getordinal("nombre_user")); dtglistausuarios.rows[renglon].cells["comentario_usergrid"].value = myreader.getstring(myreader.getordinal("comentario")); myreader.close(); miconexion.close();
Código para el evento Click del botón Guardar private void btnguardar_click(object sender, EventArgs e) claveuser = txtclaveuser.text; nickuser = txtnickuser.text; nomuser = txtnomuser.text; passuser = txtpasswuser.text; descuser = txtdescuser.text; if (claveuser == "" nickuser == "" nomuser == "" passuser == "" descuser == "") MessageBox.Show("Algún campo esta vacío.", "Falta algún campo.", MessageBoxIcon.Exclamation); else string cadenaconexion = @"Server=SERVIDOR;Database=negocio2;Integrated Security=True"; SqlConnection miconexion = new SqlConnection(cadenaConexion); miconexion.open(); string cadenaselect = "SELECT * FROM tabla where id_user=" + claveuser; SqlCommand micomando = new SqlCommand(cadenaSelect, miconexion); string totalregistros = Convert.ToString(miComando.ExecuteScalar()); if (totalregistros!= "") MessageBox.Show("El usuario ya existe.", "Registro existente.", MessageBoxIcon.Information); LimpiarTextos(); else string cadenainsert = "INSERT INTO tabla (id_user,nick_name,nombre_user,pass_user,fecha_alta,comentario) VALUES ('" + claveuser + "','" + nickuser + "','" + nomuser + "','" + passuser + "',GETDATE(),'" + descuser + "')"; SqlCommand micomando2 = new SqlCommand(cadenaInsert,miConexion); // Ejecutamos la consulta. micomando2.executenonquery(); // Liberamos los recursos. micomando2.dispose(); // Cerramos la conexión.
miconexion.close(); MessageBox.Show("Datos insertados correctamente.", "Registro insertado.", MessageBoxIcon.Information); // Limpiamos los campos de texto. LimpiarTextos();
Código para el evento Click del botón Actualizar private void btnactualizar_click(object sender, EventArgs e) claveuser = txtclaveuser.text; nickuser = txtnickuser.text; nomuser = txtnomuser.text; passuser = txtpasswuser.text; descuser = txtdescuser.text; if (claveuser == "" nickuser == "" nomuser == "" passuser == "" descuser == "") MessageBox.Show("Algún campo esta vacío.", "Falta algún campo.", MessageBoxIcon.Exclamation); else string cadenaconexion = @"Server=SERVIDOR;Database=negocio2;Integrated Security=True"; SqlConnection miconexion = new SqlConnection(cadenaConexion); miconexion.open(); string cadenaselect = "SELECT * FROM tabla where id_user=" + claveuser; SqlCommand micomando = new SqlCommand(cadenaSelect, miconexion); string totalregistros = Convert.ToString(miComando.ExecuteScalar()); if (totalregistros == "") MessageBox.Show("La clave de usuario no existe para modificar sus datos.", "Clave no existente.", MessageBoxIcon.Information); LimpiarTextos(); else string cadenaupdate = "UPDATE tabla SET id_user='" + claveuser + "',nick_name='" + nickuser + "',nombre_user='" + nomuser + "',pass_user='" + passuser + "',comentario='" + descuser + "' WHERE id_user='" + claveuser + "'"; SqlCommand micomando3 = new SqlCommand(cadenaUpdate, miconexion); micomando3.executenonquery(); miconexion.close(); micomando3.dispose(); MessageBox.Show("Datos actualizados correctamente.", "Registro actualizado.",
MessageBoxIcon.Information); LimpiarTextos();
Código para el evento Click del botón Eliminar private void btneliminar_click(object sender, EventArgs e) claveuser = txtclaveuser.text; if (claveuser == "") MessageBox.Show("No hay clave para eliminar datos.", "Falta clave del usuario.", MessageBoxIcon.Exclamation); else string cadenaconexion = @"Server=SERVIDOR;Database=negocio2;Integrated Security=True"; SqlConnection miconexion = new SqlConnection(cadenaConexion); miconexion.open(); claveuser; string cadenaselect = "SELECT * FROM tabla where id_user=" + SqlCommand micomando = new SqlCommand(cadenaSelect, miconexion); string totalregistros = Convert.ToString(miComando.ExecuteScalar()); // Si la variable tiene datos entonces eliminamos los datos. if (totalregistros == "") MessageBox.Show("La clave de usuario no existe en la base de datos.", "Clave no existente.", MessageBoxIcon.Information); LimpiarTextos(); else DialogResult resultado; resultado = MessageBox.Show(" Estas seguro de querer eliminar los datos.?", "Verificación del usuario.", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (resultado == System.Windows.Forms.DialogResult.Yes) string cadenadelete = "DELETE FROM tabla WHERE Id_user=" + claveuser; SqlCommand micomando4 = new SqlCommand(cadenaDelete, miconexion); micomando4.executenonquery(); miconexion.close(); micomando4.dispose();
MessageBox.Show("Datos eliminados correctamente.", "Registro eliminado.", MessageBoxIcon.Information); LimpiarTextos();