Sei sulla pagina 1di 9

UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA DEPARTAMENTO ACADEMICO DE INGENIERIA DE SISTEMAS PROGRAMA ACADEMICO PROFESIONAL DE INGENIERA DE SISTEMAS

Ingeniera de la Informacin II Recorre Datos

CapaAccesoAdatos: esta capa se encarga de realizar cualquier operacin que se haga con la base de datos.

Ing. Cesar Medina Victorio

UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA DEPARTAMENTO ACADEMICO DE INGENIERIA DE SISTEMAS PROGRAMA ACADEMICO PROFESIONAL DE INGENIERA DE SISTEMAS

using using using using

System; System.Data; System.IO; System.Drawing;

namespace LogicaDelNegocio { public class cNavegador { private DataTable oTabla; private int laFila; private int totalFilas { get { return oTabla.Rows.Count - 1; } } /// /// /// /// /// <summary> El constructor que recibe la tabla a usar </summary> <param name="tabla"> La tabla por la que se navegar

Ing. Cesar Medina Victorio

UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA DEPARTAMENTO ACADEMICO DE INGENIERIA DE SISTEMAS PROGRAMA ACADEMICO PROFESIONAL DE INGENIERA DE SISTEMAS

/// </param> /// <remarks> /// 20/Feb/2007 /// </remarks> public cNavegador(DataTable tabla) { oTabla = tabla; laFila = 0; } public void ActualizarTabla(DataTable tabla) { oTabla = tabla; if (laFila > totalFilas) { laFila = totalFilas; } if (laFila < 0) { laFila = 0; } } // Los cuatro mtodos para navegar por las filas public DataRow Primera() { laFila = 0; return oTabla.Rows[laFila]; } public DataRow Ultima() { laFila = totalFilas; return oTabla.Rows[laFila]; } public DataRow Siguiente() { laFila += 1; if (laFila > totalFilas) { laFila = totalFilas; } return oTabla.Rows[laFila]; } public DataRow Anterior() { laFila -= 1; if (laFila < 0) { laFila = 0; } return oTabla.Rows[laFila]; }

Ing. Cesar Medina Victorio

UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA DEPARTAMENTO ACADEMICO DE INGENIERIA DE SISTEMAS PROGRAMA ACADEMICO PROFESIONAL DE INGENIERA DE SISTEMAS

/// <summary> /// Devuelve un DataRow con la fila actual. /// </summary> /// <value> /// Devuelve un DataRow con la fila actual /// </value> /// <returns> /// Un objeto DataRow con la fila actual. /// </returns> /// <remarks></remarks> public DataRow FilaActual { get { if (this.totalFilas >= 0) { return oTabla.Rows[laFila]; } else { return null; } } } /// <summary> /// Propiedad de solo lectura que devuelve /// el ndidce de la fila actual. /// </summary> /// <value> /// El ndice de la fila actual /// </value> /// <returns> /// El valor del ndice de la fila actual. /// </returns> /// <remarks> /// 20/Feb/2007 /// </remarks> public int NumeroFilaActual { get { return laFila; } } /// /// /// /// /// /// /// /// <summary> Propiedad de solo lectura que devuelve el ndice de la ltima fila. </summary> <value> El ndice de la ltima fila </value> <returns>

Ing. Cesar Medina Victorio

UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA DEPARTAMENTO ACADEMICO DE INGENIERIA DE SISTEMAS PROGRAMA ACADEMICO PROFESIONAL DE INGENIERA DE SISTEMAS

/// El valor del ndice de la ltima fila. /// </returns> /// <remarks> /// 20/Feb/2007 /// </remarks> public int NumeroUltimaFila { get { return totalFilas; } } /// <summary> /// Indizador que devuelve la fila indicada /// </summary> /// <param name="index"> /// El ndice de la fila a devolver. /// El ndice indicado no altera el valor del nmero de la fila actual. /// </param> /// <value> /// La fila con el ndice indicado. /// </value> /// <returns> /// Un objeto DataRow con la fila indicada. /// </returns> /// <remarks> /// 20/Feb/2007 /// </remarks> public DataRow this[int index] { get { if (index < 0) { index = 0; } if (index > totalFilas) { index = totalFilas; } return oTabla.Rows[index]; } } // Mtodos para trabajar con imagenes en la base de datos public static byte[] Image2Bytes(Image img) { string sTemp = Path.GetTempFileName(); FileStream fs = new FileStream(sTemp, FileMode.OpenOrCreate, FileAccess.ReadWrite); img.Save(fs, System.Drawing.Imaging.ImageFormat.Png); // Cerrarlo y volverlo a abrir // o posicionarlo en el primer byte //fs.Close();

Ing. Cesar Medina Victorio

UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA DEPARTAMENTO ACADEMICO DE INGENIERIA DE SISTEMAS PROGRAMA ACADEMICO PROFESIONAL DE INGENIERA DE SISTEMAS

//fs = new FileStream(sTemp, FileMode.Open, FileAccess.Read); fs.Position = 0; // int imgLength = Convert.ToInt32(fs.Length); byte[] bytes = new byte[imgLength]; fs.Read(bytes, 0, imgLength); fs.Close(); return bytes;

} }

public static Image Bytes2Image(byte[] bytes) { if (bytes == null) return null; // MemoryStream ms = new MemoryStream(bytes); Bitmap bm = null; try { bm = new Bitmap(ms); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } return bm; }

Ing. Cesar Medina Victorio

UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA DEPARTAMENTO ACADEMICO DE INGENIERIA DE SISTEMAS PROGRAMA ACADEMICO PROFESIONAL DE INGENIERA DE SISTEMAS

using using using using using using using using

System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Windows.Forms;

using System.Data.SqlClient; using System.Configuration; using LogicaDelNegocio; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private string cadena = ConfigurationManager.ConnectionStrings["cadena"].ConnectionString; CSocio oSocio = new CSocio(); private DataTable oTabla = new DataTable(); private cNavegador oNavegador; private void habilitarControles(bool habilitar) { // Habilitar/deshabilitar los controles segn se indique this.btnPrimero.Enabled = habilitar; this.btnFin.Enabled = habilitar; this.btnSiguiente.Enabled = habilitar; this.btnAnterior.Enabled = habilitar; } private void actualizarNavegacion() { // Actualizar los controles de navegacin actualizarNavegacion(true); } private void actualizarNavegacion(bool mostrarFila) { this.txtCodigo.Text = ""; this.txtNombre.Text = ""; this.txtApellidos.Text = ""; this.txtDireccion.Text = ""; this.txtEmail.Text = "";

Ing. Cesar Medina Victorio

UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA DEPARTAMENTO ACADEMICO DE INGENIERIA DE SISTEMAS PROGRAMA ACADEMICO PROFESIONAL DE INGENIERA DE SISTEMAS

this.txtTelefono.Text = ""; this.txtCelular.Text = ""; this.txtDNI.Text = ""; this.txtSexo.Text = ""; this.txtProfesion.Text = ""; this.txtObservaciones.Text = ""; if (mostrarFila && oNavegador.NumeroUltimaFila >= 0) { DataRow oRow = oNavegador.FilaActual; if (oRow != null) { this.txtCodigo.Text = oRow["codigoSocio"].ToString(); this.txtNombre.Text = oRow["nombre"].ToString(); this.txtApellidos.Text = oRow["apellidos"].ToString(); this.txtDireccion.Text = oRow["direccion"].ToString(); this.txtEmail.Text = oRow["email"].ToString(); this.txtTelefono.Text = oRow["telefono"].ToString(); this.txtCelular.Text = oRow["celular"].ToString(); this.txtDNI.Text = oRow["dni"].ToString(); this.txtSexo.Text = oRow["sexo"].ToString(); this.txtProfesion.Text = oRow["profesion"].ToString(); this.txtObservaciones.Text = oRow["observaciones"].ToString(); if (oRow["Foto"] != DBNull.Value) { Image img = cNavegador.Bytes2Image((byte[])oRow["Foto"]); if (img != null) { this.pbImagen.Image = img; } } } } habilitarControles(false); if (oNavegador.NumeroUltimaFila >= 0) { txtRegistro.Text = (oNavegador.NumeroFilaActual + 1).ToString(); lblPosicion.Text = "de " + (oNavegador.NumeroUltimaFila + 1).ToString(); //habilitarControles(True) if (oNavegador.NumeroFilaActual > 0) { this.btnPrimero.Enabled = true; this.btnAnterior.Enabled = true; } if (oNavegador.NumeroFilaActual < oNavegador.NumeroUltimaFila) { this.btnFin.Enabled = true; this.btnSiguiente.Enabled = true; } } else { txtRegistro.Text = "0"; lblPosicion.Text = "de 0"; }

Ing. Cesar Medina Victorio

UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA DEPARTAMENTO ACADEMICO DE INGENIERIA DE SISTEMAS PROGRAMA ACADEMICO PROFESIONAL DE INGENIERA DE SISTEMAS

} private void Form1_Load_1(object sender, EventArgs e) { dgvDatosSocio.DataSource = oSocio.Listar(); SqlDataAdapter oAdapter = new SqlDataAdapter("select * from Socio", cadena); try { oAdapter.Fill(oTabla); oNavegador = new cNavegador(oTabla); actualizarNavegacion(true); } catch (Exception ex) { MessageBox.Show("ERROR al cargar los datos:\n" + ex.Message, "Error al cargar los datos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }

private void btnPrimero_Click(object sender, EventArgs e) { oNavegador.Primera(); actualizarNavegacion(true); } private void btnAnterior_Click(object sender, EventArgs e) { oNavegador.Anterior(); actualizarNavegacion(true); } private void btnSiguiente_Click(object sender, EventArgs e) { oNavegador.Siguiente(); actualizarNavegacion(true); } private void btnFin_Click(object sender, EventArgs e) { oNavegador.Ultima(); actualizarNavegacion(true); } } }

Ing. Cesar Medina Victorio