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







Ing. Cesar Medina Victorio
Ingeniera de la Informacin II
Recorre Datos



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










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







Ing. Cesar Medina Victorio


using System;
using System.Data;
using System.IO;
using 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





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







Ing. Cesar Medina Victorio
/// </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];
}


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







Ing. Cesar Medina Victorio

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


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







Ing. Cesar Medina Victorio
/// 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();


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







Ing. Cesar Medina Victorio
//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;
}
}
}









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







Ing. Cesar Medina Victorio
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using 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 = "";
this.txtTelefono.Text = "";
this.txtCelular.Text = "";




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







Ing. Cesar Medina Victorio
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";
}
}



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







Ing. Cesar Medina Victorio
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);
}
}
}

Potrebbero piacerti anche