Horario

martes, 8 de septiembre de 2009

Práctica 1 en Optimización de sistemas de información

Utilizaremos C# y Base de datos Access

En esta forma podemos agregar, modificar y eliminar un registro de una base de datos access. También podemos navegar por medio de cuatro botones, principio, atrás, adelante y final

El propósito de la práctica es ver lo incómodo es buscar un registro cuando ya contamos con muchos en nuestra base de datos
Como podemos ver, tenemos un texto para manejar el número del cliente, el nombre del cliente y su dirección

Pasos a seguir
  • Form Load: Este es un evento de la forma, y el código programado en el evento se ejecutará cuando la forma se haya terminado de cargar, o sea, de aparecer en la pantalla. Le damos doble click a la forma, en la parte gris en el fondo y escribimos lo siguiente
private void Practica1_Load(object sender, EventArgs e)
{
    coneccion = new System.Data.OleDb.OleDbConnection(
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=datos.mdb");

    // Código para crear la tabla e ingresar los rows
    /*
    System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
    myCommand.Connection = coneccion;
    myCommand.CommandText = "create table clientes(cli int, clientes string, dom string)";
    coneccion.Open();
    myCommand.ExecuteNonQuery();
    myCommand.CommandText = "insert into clientes values (1, \"Juan\",\"Avenida 3\")";
    myCommand.ExecuteNonQuery();
    myCommand.CommandText = "insert into clientes values (2,\"Ana\",\"Calle 7\")";
    myCommand.ExecuteNonQuery();
    myCommand.CommandText = "insert into clientes values (3,\"Maria\",\"Avenida 12\")";
    myCommand.ExecuteNonQuery();
    myCommand.Connection.Close();
    */

    CargarDatos(0);
}
Nos podemos dar cuenta que tenemos un código extra para crear tablas e ingresar datos a la tabla, estos los tenemos que descomentar la primera vez que corremos el programa, para descomentar solo borra el /* y el */

Para esto, debimos haber creado un archivo lllamado "datos.mdb" en el directorio "bin/Debug" de nuestro proyecto
  • Button Click: Es el evento al hacerle click a un botón. Para programarlo, basta con darle doble click a un botón, a continuación el código que deben poner en cada uno de los botones
private void btnAgregar_Click(object sender, EventArgs e)
{
    canal = new System.Data.OleDb.OleDbDataAdapter(
        "insert into clientes values(\"" + txtNo.Text
        + "\",\"" + txtCliente.Text + "\",\"" + txtDomicilio.Text
        + "\")", coneccion);
    tabla = new DataSet();
    canal.Fill(tabla, "mitabla");
    ren++;
    CargarDatos(ren);
}

private void btnModificar_Click(object sender, EventArgs e)
{
    canal = new System.Data.OleDb.OleDbDataAdapter(
        "update clientes set cli=" + txtNo.Text
        + ", clientes=\"" + txtCliente.Text
        + "\", dom=\"" + txtDomicilio.Text
        + "\" where cli="
        + tabla.Tables["mitabla"].Rows[ren][0].ToString(), coneccion);
    tabla = new DataSet();
    canal.Fill(tabla, "mitabla");
    CargarDatos(ren);
}

private void btnEliminar_Click(object sender, EventArgs e)
{
    canal = new System.Data.OleDb.OleDbDataAdapter(
        "delete from clientes where cli="
        + txtNo.Text, coneccion);
    tabla = new DataSet();
    canal.Fill(tabla, "mitabla");
    if (ren > 0) ren--;
    CargarDatos(ren);
}

private void btnSalir_Click(object sender, EventArgs e)
{
    this.Close();
}

Nota importante: Mis campos de texto se llaman txtNo, txtCliente y txtDomicilio, es probable que los tuyos se llamen textbox1, textbox2 y textbox3
  • Navegación: La navegación está hecha en base a botones, por lo tanto es igual que lo anterior
private void btnPrimero_Click(object sender, EventArgs e)
{
    ren = 0;
    CargarDatos(ren);
}

private void btnAtras_Click(object sender, EventArgs e)
{
    if (ren > 0)
        ren--;
    CargarDatos(ren);
}

private void btnAdelante_Click(object sender, EventArgs e)
{
    if (ren < tabla.Tables["mitabla"].Rows.Count - 1)
        ren++;
    CargarDatos(ren);
}

private void btnUltimo_Click(object sender, EventArgs e)
{
    ren = tabla.Tables["mitabla"].Rows.Count - 1;
    CargarDatos(ren);
}

Otra nota: Los botones también los nombré de diferente manera, puede que el código de la función del evento sea un poco distinto, es decir, en lugar de "btnUltimo_Click" podría decir "button1_Click"
  • Variables globales y CargarDatos: La función CargarDatos es creada por nosotros mismos y ésta va a ser ejecutada principalmente por los botones de navegación. Las variables globales van fuera de cualquier función, pero dentro de la clase
int ren;
System.Data.DataSet tabla;
System.Data.OleDb.OleDbDataAdapter canal;
System.Data.OleDb.OleDbConnection coneccion;

private void CargarDatos(int rego)
{
    canal = new System.Data.OleDb.OleDbDataAdapter("select * from clientes", coneccion);
    tabla = new DataSet();
    canal.Fill(tabla, "mitabla");
    ren = rego;
    txtNo.Text = tabla.Tables["mitabla"].Rows[ren][0].ToString();
    txtCliente.Text = tabla.Tables["mitabla"].Rows[ren][1].ToString();
    txtDomicilio.Text = tabla.Tables["mitabla"].Rows[ren][2].ToString();
}

Con esto podemos dar por terminada la práctica, a continuación el link para descargar la práctica
https://dl.getdropbox.com/u/1955604/Practica1.zip

No hay comentarios.: