Option Strict On Imports Microsoft.VisualBasic Imports System

Anuncio
Option Strict On
Imports
Imports
Imports
Imports
Imports
Imports
Microsoft.VisualBasic
System
System.Windows.Forms
System.Drawing
System.Data
System.Data.OleDb
Public Class Form1
Private Sub btnConectar_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnConectar.Click
Try
If System.IO.File.Exists(txtBase.Text) = False Then
MessageBox.Show("No existe la base de datos indicada")
txtBase.Focus()
Exit Sub
End If
Catch ex As Exception
MessageBox.Show("ERROR: " & ex.Message & vbCrLf &
"Seguramente porque no existe la base de datos indicada")
txtBase.Focus()
Exit Sub
End Try
'
' La cadena de conexión
Dim sCnn As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=" & txtBase.Text
' La cadena de selección
Dim sSel As String = "SELECT * FROM Prueba ORDER BY ID"
' Para traer solo los registros entre dos fechas
' sSel = "SELECT * FROM Prueba WHERE (FechaAlta >= #2006/01/05#
AND FechaAlta <= #2006/01/06#)"
'
' Comprobar si hay algún error
Try
' Crear un nuevo objeto del tipo DataAdapter
'Dim cnn As New OleDbConnection(sCnn)
da = New OleDbDataAdapter(sSel, sCnn)
' Crear los comandos de insertar, actualizar y eliminar
Dim cb As New OleDbCommandBuilder(da)
' Como hay campos con caracteres especiales,
' al usarlos incluirlos entre corchetes.
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
' Asignar los comandos al DataAdapter
' (se supone que lo hace automáticamente, pero...)
da.UpdateCommand = cb.GetUpdateCommand
da.InsertCommand = cb.GetInsertCommand
da.DeleteCommand = cb.GetDeleteCommand
'
' Esta base de datos usa el ID con valores automáticos
da.MissingSchemaAction = MissingSchemaAction.AddWithKey
'
dt = New DataTable
' Llenar la tabla con los datos indicados
da.Fill(dt)
'
' Habilitar los controles
For Each c As Control In Me.GroupBox1.Controls
c.Enabled = True
Next
Me.GroupBox1.Enabled = True
Me.GroupBox1.Text = "Conexión realizada"
' Y mostrar el primer registro
If dt.Rows.Count > 0 Then
btnFirst_Click(Nothing, Nothing)
Else
fila = -1
btnActualizar.Enabled = False
End If
Catch ex As Exception
MessageBox.Show("ERROR al conectar o recuperar los datos:" &
vbCrLf & _
ex.Message, "Conectar con la base", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub BtnExaminar_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles BtnExaminar.Click
Dim ofd As New OpenFileDialog
ofd.Title = "Seleccionar base de datos"
ofd.FileName = txtBase.Text
If ofd.ShowDialog = DialogResult.OK Then
txtBase.Text = ofd.FileName
End If
End Sub
Private dt As DataTable
Private da As OleDbDataAdapter
Private fila As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
For Each c As Control In Me.GroupBox1.Controls
' Limpiar los textbox
If TypeOf c Is TextBox Then
c.Text = ""
End If
' Deshabilitarlos
c.Enabled = False
Next
Me.GroupBox1.Enabled = False
Me.GroupBox1.Text = "Debes conectar antes de usar los datos"
'
' El nombre de la base de datos:
' (poner el path real de la base de datos de prueba)
Me.txtBase.Text = "C:\Prueba.mdb"
End Sub
Private Sub btnActualizar_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnActualizar.Click
If fila < 0 OrElse fila > dt.Rows.Count - 1 Then Exit Sub
Dim dr As DataRow = dt.Rows(fila)
' Asignar los datos de los textbox a la fila
asignarDatos(dr)
'dr("Nombre") = txtNombre.Text
'dr("e-mail") = txtEmail.Text
'dr("FechaAlta") = txtFechaAlta.Text
'dr("Comentario") = txtComentario.Text
' Guardar físicamente los datos en la base
Try
da.Update(dt)
dt.AcceptChanges()
Catch ex As DBConcurrencyException
MessageBox.Show("Error de concurrencia:" & vbCrLf &
ex.Message)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnNuevo.Click
Dim dr As DataRow = dt.NewRow()
' Asignar los datos de los textbox a la fila
asignarDatos(dr)
'dr("Nombre") = txtNombre.Text
'dr("e-mail") = txtEmail.Text
'dr("FechaAlta") = txtFechaAlta.Text
'dr("Comentario") = txtComentario.Text
' Añadir la nueva fila a la tabla
dt.Rows.Add(dr)
' Guardar físicamente los datos en la base
Try
da.Update(dt)
dt.AcceptChanges()
' Si es el primer registro de la base,
' volver a leer los datos para actualizar los IDs
If CInt("0" & dr("ID").ToString) = 0 Then
dt = New DataTable
da.Fill(dt)
End If
' Posicionarlo en la última fila
btnLast_Click(Nothing, Nothing)
Catch ex As DBConcurrencyException
MessageBox.Show("Error de concurrencia:" & vbCrLf &
ex.Message)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub asignarDatos(ByVal dr As DataRow)
' Usar los datos que hay en los textbox
dr("Nombre") = txtNombre.Text
dr("e-mail") = txtEmail.Text
dr("FechaAlta") = txtFechaAlta.Text
dr("Comentario") = txtComentario.Text
End Sub
Private Sub mostrarDatos(ByVal f As Integer)
Dim uf As Integer = dt.Rows.Count - 1
If f < 0 OrElse uf < 0 Then Exit Sub
'
Dim dr As DataRow = dt.Rows(f)
txtID.Text = dr("ID").ToString
txtNombre.Text = dr("Nombre").ToString
txtEmail.Text = dr("e-mail").ToString
txtFechaAlta.Text = dr("FechaAlta").ToString
txtComentario.Text = dr("Comentario").ToString
'
btnActualizar.Enabled = True
End Sub
Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnFirst.Click
' Posicionarse en la primera fila
fila = 0
' Mostrar los datos de la fila indicada
mostrarDatos(fila)
End Sub
Private Sub btnPrev_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnPrev.Click
' Posicionarse en la fila anterior
fila = fila - 1
If fila < 0 Then fila = 0
' Mostrar los datos de la fila indicada
mostrarDatos(fila)
End Sub
Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnNext.Click
' Posicionarse en la fila siguiente
Dim uf As Integer = dt.Rows.Count - 1
fila = fila + 1
If fila > uf Then fila = uf
' Mostrar los datos de la fila indicada
mostrarDatos(fila)
End Sub
Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnLast.Click
' Posicionarse en la última fila
fila = dt.Rows.Count - 1
' Mostrar los datos de la fila indicada
mostrarDatos(fila)
End Sub
End Class
Descargar