Translate

domingo, 18 de mayo de 2014


Como guarda, modificar, eliminar informacion en "Access" mediante V.B
  • Lo primero que debemos hacer es ir a crear una tabal en Acces ,  dando clic en la pestaña vista de diseño, y agragas los campos que necesites. Como por ejemplo:


  • Yo, a mi tabla la llame pasaporte y agrega los campos que necesita mi tabla, les di el tipo de dato que les corresponde a cada uno de los campos, es importante también agregar una breve descripción de los que es cada uno de los campos, en mi caso no lo hice pero ustedes lo pueden hacer. Recuerden siempre identificar la identidad con una clave principal  ya que es un campo único y el tipo de dato  será autonumerico. Cuando termines seleccionas la pestaña "Ver hoja de datos" y les mostrara como quedo estructurada su tabla.

  • Luego nos vamos a abrir un nuevo proyecto en Visual Basic y seleccionamos "Agregar Windows Form" en el formulario que nos da V.B con el cuadro de herramientas pegamos los Label, Texbox, Combobox, button etc. Dependiendo cual le corresponda a el campo.



  • Para que la información que ingresemos en el formulario se envíe a Access escribimos el siguiente código en el formulario dando doble clic en el formulario.
Public Class Form1
    Dim Cadena As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\EjercicioPasaporte\Ejercicio Pasaporte.accdb"
    Private Function Validar() As Boolean
        'Datos Personales
        If txtidentidad.Text.Trim = String.Empty Then
            Erp.SetError(txtidentidad, "Escriba la Identidad")
            txtidentidad.Focus()
            Return False
        End If
        Erp.SetError(txtidentidad, "")
        If txtNombres.Text.Trim = String.Empty Then
            Erp.SetError(txtNombres, "Escriba el Nombre")
            txtNombres.Focus()
            Return False
        End If
        Erp.SetError(txtNombres, "")
        If txtapellidos.Text.Trim = String.Empty Then
            Erp.SetError(txtapellidos, "Escriba el Apellido")
            txtapellidos.Focus()
            Return False
        End If
        Erp.SetError(txtapellidos, "")
        If txtCiudad.Text.Trim = String.Empty Then
            Erp.SetError(txtCiudad, "Escriba la Cuidad")
            txtCiudad.Focus()
            Return False
        End If
        Erp.SetError(txtCiudad, "")
        If txtDepartamento.Text.Trim = String.Empty Then
            Erp.SetError(txtDepartamento, "Escriba el Departamento")
            txtDepartamento.Focus()
            Return False
        End If
        Erp.SetError(txtDepartamento, "")
        If txtDuración.Text.Trim = String.Empty Then
            Erp.SetError(txtDuración, "Escriba la Duración del Pasaporte")
            txtDuración.Focus()
            Return False
        End If
        Erp.SetError(txtDuración, "")
        Return True


    End Function

  •         Este código también valida cada uno de los campos en tu tabla.



  •          Para que Guarde y Modifique  información en la tabla.
Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        'Boton Guardar
        If Validar() = True Then
            Dim fecha As String
            Dim cSQLIns As String
            If txtidentidad.ReadOnly = False Then
                'Agregar Registro
                cSQLIns = " Insert into Pasaporte(Identidad,Nombres,Apellidos,FechaNac,Ciudad,Departamento,FechaSoli,Duración)Values('" & txtidentidad.Text.Trim & "','" & txtNombres.Text.Trim & "','" & txtapellidos.Text.Trim & "',#" & DtpFechaNac.Value.ToShortDateString & "#,'" & txtCiudad.Text.Trim & "','" & txtDepartamento.Text.Trim & "',#" & DtpFechaSoli.Value.ToShortDateString & "#,'" & txtDuración.Text.Trim & "')"
            Else
                cSQLIns = " Update Pasaporte set Nombres ='" & txtNombres.Text.Trim & "', Apellidos='" & txtapellidos.Text.Trim & "', FechaNac=#" & DtpFechaNac.Value.Month & "/" & DtpFechaNac.Value.Day & "/" & DtpFechaNac.Value.Year & "# , Ciudad='" & txtCiudad.Text.Trim & "', Departamento='" & txtDepartamento.Text.Trim & "', FechaSoli=#" & DtpFechaSoli.Value.ToShortDateString & "#, Duración='" & txtDuración.Text.Trim & "' Where Identidad ='" & txtidentidad.Text.Trim & "'"
            End If
            Dim oConexion As New OleDb.OleDbConnection(Cadena)
            oConexion.Open()

            Dim cmd As New OleDb.OleDbCommand(cSQLIns, oConexion)
            cmd.ExecuteNonQuery()
            MsgBox("La Informacion Fue Almacenada ", MsgBoxStyle.OkOnly, "Guardar")
            oConexion.Close()
            Call btnNuevo_Click(Nothing, Nothing)

        End If
    End Sub


  • Al momento de  guardar la fecha en Access ocurre un error que Access la guarda: mes/día/año y en V.B la escribimos: día / mes/año  para arreglar este error  nos vamos a la instrucción update y la escribimos así:

FechaNac=#" & DtpFechaNac.Value.Month & "/" & DtpFechaNac.Value.Day & "/" & DtpFechaNac.Value.Year & "#

  • En nuestro caso ya la teníamos arreglada así  que no habrá  ningún cambio

  •          Para que elimine informacion:
  Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
        Dim cSQL As String
        cSQL = " Delete From Pasaporte Where Identidad = '" & txtidentidad.Text.Trim & "'"
        Dim oConexion As New OleDb.OleDbConnection(Cadena)
        oConexion.Open()
        Dim cOMANDO As New OleDb.OleDbCommand(cSQL, oConexion)
        cOMANDO.ExecuteNonQuery()
        oConexion.Close()
        MsgBox("La informacion a sido eliminada")
        Call btnNuevo_Click(Nothing, Nothing)




sábado, 5 de abril de 2014

 OBJETOS DE ADO.NET PARA C#

 Acontinuacion le presentamos un diagrama :

 

 

 

 

 

 

 

 

 

 

 

 

  1. Maneja la conexion a una base de datos.                    
  2. Ejecuta Comandos contra una base de datos.              
  3. Intercambia datos entre un dataset y una base de datos
  4. Copia local de Datos Relacionales.                              
  5. Provee acceso a datos Reand-Only, Forward-Only.     

 

 Bases de Datos Access y C#. Insert, select, update, delete



1.       Crea una base de Datos en Access







2. Crea un Nuevo proyecto en C# 


3. Agrega una nueva clase llamada Database y a continuación escribe el siguiente código: 
using System; 
using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.OleDb; 
namespace bd_access2 
    class Database 
    { 
        private string StrConexion; 
        private OleDbConnection Conexion; private OleDbDataAdapter Adapter; 
        private DataSet miDataSet = new DataSet(); 
        public void IniciarConexion(string DataBase) 
        { 
            //Creo la cadena de conexion para Office 2007 
            StrConexion = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = " + DataBase; 
             
            //Objeto conexion 
            Conexion = new OleDbConnection(StrConexion); 
        } 
        public int ejecutar_sql(string sql) 
        { 
            //inserto en la BD   int i = 0;  try  { 
                Conexion.Open(); 
                OleDbCommand cmd = new OleDbCommand(sql, Conexion);                                                                     i = cmd.ExecuteNonQuery(); 
            }    catch
             {   i = -1;          
             }   return i; 
        } 
        public DataTable consultar(string sql, string tabla) 
        { 
            Adapter = new OleDbDataAdapter(sql, Conexion); 
            //Creo el DataTable 
            DataTable dt = new DataTable(); 
            //Relleno el adaptador con los datos en memoria 
            Adapter.Fill(dt); 
                         return dt; 
        } 
    } 
   
4. Crea una nueva clase llamada Alumnos y escribe el siguiente código: 
using System; 
using System.Collections.Generic; using System.Linq; 
using System.Text; 
namespace bd_access2 
    class Alumnos 
    { 
        public string ncuenta;public string nombre; public string apellidop;  public string apellidom; public int edad; 
        public int semestre; 
        public Alumnos() 
        { 
        } 
        public Alumnos(string ncuenta, string nombre, string apellidop, string apellidom, int edad, int semestre) 
        { 
            this.ncuenta = ncuenta;  this.nombre = nombre; this.apellidop = apellidop;  this.apellidom = apellidom; this.edad = edad; this.semestre = semestre; 
        } 
    } 
}  
5. Edita el formulario agregando los siguientes componentes: 



6.       Edita la propiedad ContextMenuStrip del DataGridView1. (Le permitirá mostrar un menú flotante al dar clic con el botón derecho sobre el DataGridView.




7.       Edita el código del Form1.cs
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

namespace bd_access2
{

  public partial class Form1 : Form
   { 
   Database DB = new Database();
    String sql

   public Form1() 
    {
   InitializeComponent(); 
   }

      private void Form1_Load(object sender, EventArgs e
     {
      DB.IniciarConexion("../../prueba.accdb");
//Creo el miembro de datos del DataGridView
   dataGridView1.DataMember = "alumnos";
     }

       private Alumnos asig_alum_text() 
       { 
        string ncta, nombre, apellidop, apellidom;
      int
      edad = 0, semestre; ncta = txtnCta.Text;
      nombre = txtNombre.Text;
      apellidop=txtApellidop.Text; apellidom = txtApellidom.Text;  
      try
        {

       edad = Convert.ToInt32(txtEdad.Text
        }
catch   {
      //Ejemplo de validacion
     MessageBox.Show("Ingrese un valor numerico 
txtEdad.Focus(); txtEdad.SelectionStart = 0; 
txtEdad.SelectionLength = txtEdad.TextLength
 }
      semestre = Convert.ToInt32(txtSemestre.Text);
       Alumnos A = new Alumnos(ncta, nombre, apellidop, apellidom, edad, semestre 
return A;

        }
        private void btnInsertar_Click(object sender, EventArgs e)
       

         Alumnos a = asig_alum_text();
         sql = "INSERT INTO alumnos(ncuenta,nombre,apellidop,apellidom,edad,semestre)";    
sql += "VALUES('" + a.ncuenta + "'" + ",'" + a.nombre + "','" + a.apellidop + "'"; sql += ",'" + a.apellidom + "','" + a.edad + "', '" + a.semestre + "')";  int insert = DB.ejecutar_sql(sql);
   if (insert == 1)

//Si se logro la insercion limpio el formulario
            {
                MessageBox.Show("Se insertaron correctamente sus datos");                 foreach (Control txt in this.Controls)         

                 {

              if (txt.GetType() == typeof(TextBox))
              txt.Text = ""
                }            
}
else
MessageBox.Show("Hubo un error al insertar los datos");

        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            sql = "SELECT * FROM alumnos WHERE ncuenta='" + txtCriterio.Text + "'";
            
            //Vuelco los datos al DataGridView
            dataGridView1.DataSource = DB.consultar(sql, "alumnos");
        }
        private void modificarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //Para modificar los datos del alumnos            
  int renglon=dataGridView1.CurrentCell.RowIndex;int ncuenta =Convert.ToInt32(dataGridView1[0, renglon].Value.ToString());             if (ncuenta != -1)
            {
       txtnCta.Text = dataGridView1[0 renglon].Value.ToString();txtNombre.TextdataGridView1[1, renglon].Value.ToString();txtApellidop.Text = dataGridView1[2, renglon].Value.ToString(); txtApellidom.Text = dataGridView1[3, renglon].Value.ToString(); txtEdad.Text= dataGridView1[4, renglon].Value.ToString(); txtSemestre.Text = dataGridView1[5,renglon].Value.ToString(); btnActualizar.Enabled = true;
            }
        }

        private void eliminarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //Para eliminar un alumno
            int renglon = dataGridView1.CurrentCell.RowIndex;
            int ncuenta = Convert.ToInt32(dataGridView1[0, renglon].Value.ToString());             if (ncuenta != -1)
            {
                if 
      (MessageBox.Show("Esta seguro que desea eliminar el alumno " + dataGridView1[1,  renglon].Value.ToString(), "Eliminar registro", MessageBoxButtons.YesNo) ==DialogResult.Yes)
      DB.ejecutar_sql("DELETE FROM alumnos WHERE Cuenta='"+ ncuenta +"'"); dataGridView1.Rows.RemoveAt(renglon);
            }
        }

        private void btnActualizar_Click(object sender, EventArgs e)
        {
            Alumnos a = asig_alum_text(); sql = "UPDATE alumnos SET nombre='" + a.nombre + "',";  sql += " apellidop='" + a.apellidop   + "',apellidom='" + a.apellidom + "',";  sql  += " edad='" + a.edad + "', semestre='" + a.semestre + "'"; sql += " WHERE ncuenta='" +a.ncuenta + "'";

           int update = DB.ejecutar_sql(sql);
            if (update == 1) //Si se logro la insercion limpio el formulario
            {
                MessageBox.Show("Se actualizaron correctamente sus datos");                 foreach (Control txt in this.Controls)
                {
                    if (txt.GetType() == typeof(TextBox))
                        txt.Text = "";
                }        
     }

else   
MessageBox.Show("Hubo un error al actualizar los datos");
        }
    }
}          

NOTAS:
       No olviden generar todo el código de los eventos.
       Verifiquen bien el nombre de sus controles.
       Integren un módulo de validación de datos.
       Agreguen control de errores en las partes que lo requieran.