viernes, 19 de octubre de 2012

Uso básico Datagridview (DataSet y Oracle)

A petición de un lector, facilito el código para la conexión de un proyecto vb.Net con el SGBD Oracle

De nuevo, lo haré de dos formas
  • Asignando a la propiedad de la tabla source el dataset
  • Recorriendo el dataset y agregando los datos a la tabla
Los pasos son:
  1. Crear una base de datos en Oracle llamada "DBEJEMPLO"
  2. Crear una tabla llama "DEPARTAMENTOS" con los campos
    • departamento
    • descripción
CREATE TABLE "DEPARTAMETOS"
( "DEPARTAMETO" NUMBER(4,0),
"DESCRIPCION" CHAR(100) NOT NULL ENABLE,
CONSTRAINT "DEPARTAMETOS_PK" PRIMARY KEY ("DEPARTAMETO") ENABLE
)


3. Crear un proyecto en Visual Studio
4. Agregar 2 datagridview al formulario desde la barra de herramientas.
5. Ir a proyecto y agregar una referencia llamada "Oracle.DataAccess"

6. Crear una clase llama "CONEXION" y escribir el siguiente código


Imports Oracle.DataAccess.Client

Public Class conexion
   
    Private OCommand As New OracleCommand()
    Dim OConnString As String = "DATA SOURCE=127.0.0.1;PASSWORD=Micontraseña;USER ID=Miusuario"
    Public oConexion As OracleConnection = New OracleConnection(OConnString)
    Dim oAdapter As OracleDataAdapter
    Public Dataset As DataSet = New DataSet()

    Private Function CargarDataset(ByVal OString As String, ByVal tabla As String) As DataSet
        Try
     oAdapter = New OracleDataAdapter(OString, oConexion)
     Dim oCreadorDeComandos As OracleCommandBuilder = New OracleCommandBuilder(oAdapter)
     Dataset.Clear()
     oAdapter.Fill(Dataset, tabla)
     oConexion.Close()
     Return Dataset
        Catch ex As Exception
     Return Nothing
     MessageBox.Show("No se pudo completar la operación, intente de verificar la conexión a la base de datos.", "Fallo conexión a la base de datos", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
     oConexion.Close()
        End Try
    End Function


    Public Sub Cargargrid(ByVal formulario As String, ByRef dtg As DataGridView)
        Try
     Dim tabla As String = "departamentos"
     Dim OString As String = "select a.id_departamento as Código, a.descripcion as Departamento from  " + tabla + " a"
     Dim ds As DataSet = CargarDataset(OString, tabla)

     If ds Is Nothing Then
         Exit Sub
     End If

     Select Case formulario
         Case 1
             CargarForma1(ds, dtg, tabla)
         Case 2
             CargarForma2(ds, dtg, tabla)
         Case Else
             Exit Sub
     End Select
        Catch ex As Exception
     MessageBox.Show(Err.Description)
        End Try
    End Sub


    Private Sub CargarForma1(ByVal ds As DataSet, ByRef dtg As DataGridView, ByVal tabla As String)
        Try
     Dim n As Integer ' variables para el for
     Dim fila As DataGridViewRow ' representa una fila del datagridview
     ' ciclo para limpiar el datagrid de cualquier dato y evitar que se repitan
     If dtg.Rows.Count > 0 Then
         For n = dtg.Rows.Count - 2 To 0 Step -1
             fila = dtg.Rows(n)
             dtg.Rows.Remove(fila) ' Eliminamos la fila de la colección
         Next
     End If


     dtg.DataSource = Nothing ' limpiar el datasourse
     dtg.Refresh() ' actualizar
     dtg.DataSource = ds ' asignar en la memoria la tabla
     dtg.DataMember = tabla ' asignar la tabla escogida
        Catch ex As Exception
     MessageBox.Show(Err.Description)
        End Try
    End Sub


    Private Sub CargarForma2(ByVal ds As DataSet, ByRef dtg As DataGridView, ByVal tabla As String)
        Try
     If dtg.Rows.Count > 0 Then
      dtg.Rows.Clear() 'limpiar el datagridview
     End If
     Dim filas As Integer = ds.Tables(tabla).Rows.Count - 1 ' verificamos
     If filas < 0 Then
         Exit Sub
     End If
     Dim Codigo As String
     Dim descripcion As String
     For i As Integer = 0 To filas ' recorrer las filas del dataset cargado
         Codigo = ds.Tables(tabla).Rows(i)(0)
         descripcion = ds.Tables(tabla).Rows(i)(1)
         dtg.Rows.Add(Codigo, descripcion)
     Next
        Catch ex As Exception
     MessageBox.Show(Err.Description, "Fallo conexión a la base de datos", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

End Class


7. En el evento load del formulario

  Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim s As New conexion
        s.Cargargrid(1, DataGridView1)
        s.Cargargrid(2, DataGridView1)
    End Sub

8. Listo a ejecutarlo


El proyecto esta disponible   AQUI

Espero que les sea de gran utilidad...!!!  

8 comentarios:

  1. excelente me fue de gran utilidad muchas gracias ingeniera, tambien le quiero preguntar si saber como insertarle los valores a la tabla apartir de varios textbox?

    ResponderEliminar
  2. Hola que tal, me gustaria que me facilitaras tu proyecto para hacer unas pruebas, gracias y felicidees tienes mi admiracion por su blog ing.

    ResponderEliminar
  3. Muchas felicidades ING. Eve Porras gracias por compartir sus conocimientos

    ResponderEliminar
  4. Hola ,gracias por el tema, tenia un par de dudas...

    ResponderEliminar
  5. Buen dia, como puedo hacer si tengo un proyecto de n capas, Ya tengo mis datos exportados desde excel a un DataGridView, ahora como paso del DataGridView a un DataSet y luego que se guarden en mi base de Oracle?

    ResponderEliminar
    Respuestas
    1. Estoy trabajando con VisualStudio 2010(C#) y base de datos Oracle.

      Eliminar