Conexión con base de datos en Access

Ya vimos un poco de teoría, es tiempo de pasar al código ADO.NET para iniciar con la practica, algunos conceptos que no entiendan por favor dejen su comentario y les contestare en breve.

Este es un ejemplo simple de una conexión con una base de datos de Access la base de datos que estaremos utilizado será la de Northwind o Neptuno como la quieran llamar.

Estaré explicando los ejemplos paso a paso, estaremos trabajando con módulos y los resultados los observaremos en consola, después aplicaremos lo que aprendimos de las conexiones a objetos de Visual Basic .NET, como DataGridView, CristalReports, etc. Si bien les parece mejor que empecemos en vez de consola con objetos de VB.NET.

Les aconsejo que bajen una versión de prueba del Visual Studio 2005,2008 ó 2010 para realizar los ejemplos y que tengan el Access, con la base de datos de ejemplo, Northwind.

Asegúrense de pegar la base de datos de Access, en la carpeta DEBUG que se encuentra en bin dela capeta del proyecto de consola.

Esto solo muestra las propiedades de la conexión si es exitosa.

Empieza Código:

 

 

Imports System.Data.OleDb ‘esta librería es para conectarnos con OLEDB

Module ConexionNorthwind

Sub Main()

‘primero tenemos que crear un objeto connection

Dim conn As New OleDbConnection

‘después establecemos la cadena de conexión, estableciendo el proveedor y el origen de datos

conn.ConnectionString = «Provider = Microsoft.Jet.OLEDB.4.0;» & _

«Data Source = » & CurDir() & «\Northwind.mdb» ‘CurDir, obtiene la carpeta actual

‘se utiliza po si tenemos para tratamiento de error por si tenemos error en la conexión, no se paralice la aplicación

Try

‘abrimos la conexión

conn.Open()

‘condición si esta abierta la conexión

If conn.State = ConnectionState.Open Then

‘mostramos las propiedades de la conexión

Console.WriteLine(«Se a establecido la conexión»)

Console.WriteLine(«ConnectionString = ‘» & conn.ConnectionString & «‘»)

Console.WriteLine(«ConnectionTimeOut = » & conn.ConnectionTimeout)

Console.WriteLine(«Database = » & conn.Database)

Console.ReadLine() ‘espera hasta que se presione una tecla para avanzar

conn.Close() ‘aquí cerramos la conexión

Else

Console.WriteLine(«La conexión no pudo completarse, esta cerrada»)

End If

Catch ex As Exception

Console.WriteLine(«***Error al intentar conexión***»)

End Try

End Sub

End Module

DML(Lenguaje de manipulación de datos)

Si con DDL definimos las estructuras para el almacenamiento de los datos con DML podremos manipular los datos propiamente dichos, efectuando consultas para recuperar datos, modificaciones, borrados, etc.

Las operaciones fundamentales de manipulación de datos son cuatro y consecuentemente cuatro los comando  DML que necesitaremos para poder llevarlas a cabo:

 

  • SELECT: La sentencia DML por excelencia se utiliza para ejecutar consulta de recuperación de datos.

 

  • INSERT: Su finalidad es insertar nuevas filas en una tabla.

 

  • UPDATE : Con este comando es posible cambiar la información alojada en una o mas filas.

 

  • DELETE: Se utiliza para eliminar una o mas filas.

 

Ejemplos:

 

Insertar registro:

 

INSERT INTO tabla1(Campo1,Campo2,Campo3) VALUES(1,’dos’,3)

 

Los capos de texto que en este caso es Campo2 van entre comillas simples.

 

Actualizar registro

 

UPDATE tabla1 SET Campo1 = 4,Campo2 = «Cinco»,Campo3 = 3 WHERE ID = 1

 

En la consulta de Actualizacion cuando se quiere actualizar solo un registro se tiene que poner el WHERE porque tenemos que indicar en donde se actualizara que en este caso es registro con el ID 1, de lo contrario si no lo ponemos se actualizara toda la tabla.

 

Eliminar Registro

 

DELETE Campo1, Campo2, Campo3 FROM tabla1 WHERE ID = 2

 

De igual manera se utiliza el WHERE para eliminar un registro indicado en una tabla, en este caso eliminamos el registro con el ID 2 de la tabla, si no colocáramos el WHERE eliminaríamos toda la tabla.

 

Recuperación de registros

 

SELECT Campo1,Campo2,Campo3 FROM tabla1

 

Esta es como dijimos el DML por excelencia porque se utiliza para realizar consultas que devuelven registros con los criterios aplicados ya sea JOINS.

 

 

Esto es solo un breve concepto de teoría cuando estemos con los ejemplos, explicare paso a paso.

DDL(lenguaje de definición de datos)

Mediante DDL es posible crear una base de datos, crear las tablas definiendo las columnas que tendrán, crear índices y vistas y por supuesto modificar eliminar todos los elementos.

 

Los comando DDL son 3:

 

CREATE : Se utiliza para crear bases de datos, tablas, índices, desencadenadores, procedimientos almacenados y vistas, según la palabra clave que se indique a continuación. Dependiendo el caso aceptara mas o menos parámetros adicionales.

 

DROP: Acepta las mismas palabras clave que el comando create, si bien la finalidad es eliminar el elemento indicado en vez de crearlo.

 

ALTER: Con este comando es posible modificar algunas de las estructuras de una base de datos. No acepta todas las palabras clave de los comandos anteriores, solo parte de ellas. Las vistas por ejemplo pueden crearse y eliminarse pero no modificarse.

 

Dependiendo del elemento que se pretenda crear, eliminar o modificar tras el comando ira una de las palabras clave siguientes :

 

  • DATABASE : Base de datos
  • TABLE: Tabla
  • VIEW: Vista
  • PROCEDURE: Procedimiento Almacenado
  • TRIGGER: Desencadenador
  • INDEX: Índice

 

Los parámetros adicionales dependerán del comando y en ocasiones, del RDBMS sobre del que se esta trabajándose.

 

Ejemplos:

 

Creación de una base de datos

 

CREATE DATABASE TestBD

 

Creación de tabla

 

CREATE TABLE tabla1

(

campoID Integer Primary Key,

Campo2 Char(10) UNIQUE,

Campo3 Char(2) NOT NULL,

Campo4 Char(5)

)

 

Modificación de la tabla1, eliminado el Campo3

 

ALTER TABLE tabla1 DROP COLUMN Campo3

Que es SQL?

Como su propio nombre lo indica, SQL es un lenguaje para consulta de datos. A diferencia de los lenguajes de programación que estará acostumbrado a usar, en SQL no existen ciertos elementos como las estructuras de control por lo que no es un lenguaje que pueda ser usado para crear procedimientos. Su finalidad básica es facilitar la manipulación de datos como si fuesen un conjuntos, en contra posición al tratamiento que se efectúa desde los leguajes de programación donde cada dato se procesa de manera individual.

 

Partes SQL:

 

DML: es la parte conocida como leguaje SQL, al formar parte de el todas las sentencias de manipulación de datos, extracción de información actualización y eliminación. Teóricamente y asumiendo que existe un DBA que se ocupa del RDBMS, los programadores solo tendrían que usar DML para efectuar su trabajo.

 

DDL: con las sentencias DDL no se manipulan los datos propiamente dichos, si no la información de su estructura. Con las sentencias DDL pueden definirse las columnas de una tabla y sus atributos, eliminar o crear un índice.

 

DCL: mucho menos conocidos que los anteriores este lenguaje se compone de sentencias especificas para garantizar la seguridad de acceso a los datos, facilitando la gestión de usuarios y el otorgamiento o denegación de los permisos necesarios para operar cada elemento de la base de datos.

Importar tablas de SQL a base de datos access

Aquí les dejo un ejemplo de como importar las tablas de una base de datos de SQL server, este ejemplo el nombre las tablas y el servidor lo coloque en una tabla de Access  entonces accedo a esa tabla atravez de ADO.Recordset y recorre los registros hasta terminar.

Sub SQLImport()

On Error GoTo error

Dim NombreTabla As String ‘Nombre de la tabla
Dim Base As String ‘base de datos
Dim registros As Integer
Dim contador As Integer
Dim TABLAS_RPM_T4M As ADODB.Recordset
Dim Importar As ADODB.Command
Dim DropTable As ADODB.Command
Dim origen As String ‘origen de la tabla
Set TABLAS_RPM_T4M = New ADODB.Recordset

With TABLAS_RPM_T4M
.ActiveConnection = CurrentProject.Connection
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open «SELECT TABLA,BASE FROM TABLAS_RPM_T4M»
End With

registros = TABLAS_RPM_T4M.RecordCount
For contador = 1 To registros

Set Importar = New ADODB.Command
Set DropTable = New ADODB.Command

NombreTabla = TABLAS_RPM_T4M.Fields(0)
Base = TABLAS_RPM_T4M.Fields(1)
With DropTable
.ActiveConnection = CurrentProject.Connection
.CommandText = «drop table » & NombreTabla
.Execute
End With

origen = «[ODBC;Driver=SQL Server;» & _
«SERVER=CME042;» & _
«DATABASE=» & Base & «;» & _
«Integrated Security=SSPI;].[» & NombreTabla & «]»

With Importar
.ActiveConnection = CurrentProject.Connection
.CommandText = «SELECT * INTO » & NombreTabla & » FROM » & origen
.Execute
End With

If TABLAS_RPM_T4M.EOF And TABLAS_RPM_T4M.BOF Then
Exit Sub
Else
TABLAS_RPM_T4M.MoveNext
End If

Set Importar = Nothing
Set DropTable = Nothing

Next

DoCmd.Echo True

Set Importar = Nothing
Set DropTable = Nothing
Set TABLAS_RPM_T4M = Nothing

Exit Sub
error:
MsgBox error, vbCritical
MsgBox «Problema al crear imagen de » & NombreTabla, vbCritical

DoCmd.Echo True

Set Importar = Nothing
Set DropTable = Nothing
Set TABLAS_RPM_T4M = Nothing

End Sub

Comparar Id de una tabla, para evitar duplicados

Este es un ejemplo sencillo de una pregunta que realizaron en todoexpertos.com

Es meramente para evitar duplicados en las tablas cuando el campo Id no es autonumerico, este  caso el campo Id es Notas

Sub comparar()
Dim SalidosClave As String
Dim EventosCNotas As ADODB.Recordset
Set EventosCNotas = New ADODB.Recordset

‘Aqui colocas la clave que quieres verificar si se puede utilizar, esto es solo un ejemplo

SalidosClave = «DJ125757 – Color GRIS PLATA»
With EventosCNotas
.ActiveConnection = CurrentProject.Connection
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open «Select Notas from Eventos where Notas = ‘» & SalidosClave & «‘»
End With

If EventosCNotas.RecordCount > 0 Then
MsgBox «El registro ya se utilizo»
Else
MsgBox «El registro no se utilizo, puede utilizarlo»
End If
Set EventosCNotas = Nothing
End Sub

Informacion

Ya que tenemos lo esencial empezaremos a trabajar con ejemplos. y de ahí les pediré que me elaboren preguntas si tienen dudas.

dejen su comentario o manden sus aclaraciones a mi correo:

 

rigo_rdz_92@hotmail.com

 

Saludos

Tipos de datos

Además de las variables hay otra serie de elementos que manejan datos, como son las Constantes, procedimientos Sub, y Function, que son capaces de manejar datos de distintos tipos incluso, las funciones que devuelven datos.

 

Que tipos de datos podemos manejar:

 

  • Numéricos
  • Booleanos
  • Fecha / Hora
  • De texto(cadena)
  • Variant
  • De objeto

 

 

Datos Numéricos

 

Existen 2 familias de datos numéricos, números enteros, y de coma flotante.

Como datos Enteres tenemos lo siguientes tipos:

  • Byte

Valor Inferior = 0

Valor superior = 255

  • Integer

Valor Inferior  =  -32.768

Valor superior = 32.767

  • Long

Valor Inferior = -2.147.483.648

Valor Superior = 2.147.483.647

 

Números como Flotante(Números con Decimal)

 

Los números de cómo flotante son números que admiten valores no enteros.

 

Como datos de cómo flotante tenemos lo siguiente

 

Nombre          Tamaño

  • Single              4bytes
  • Double             8bytes
  • Currency          8bytes
  • Decimal           12bytes

 

En general estos son los tipos de datos de tipo decimal según su tamaño aumenta el numero en el que puede contener sus decimales. Al usar algún tipo de dato explicare en que consiste.

Declaración de Variables

Una variable es un elemento del código que apunta a una dirección de memoria en donde se almacena un dato. Haciendo referencia ala variable se puede devolver el dato al que apunta e incluso modificarlo.

Las constantes son similares a las variables, solo que su contenido se le asigna en el momento en el que se declaran, y después no es posible cambiarlo.

 

Hay 3 cosas que debemos considerar en una variable:

 

  • El nombre de la variable
  • El tipo de dato al que apunta
  • El alcance en el que es visible

 

Construcción del nombre de una variable o constante.

 

Nombre:

 

El nombre de una variable esta compuesto por caracteres ASCII.

 

Para su construcción hay indicar las siguientes reglas:

 

  • No se pueden usar caracteres que tienen un uso especial en Access, como son los el punto » . «, los paréntesis «( )», la barra vertical «|», o los caracteres que se pueden utilizar como operadores; entre ellos: <,>,=,+,-,*,/.
  • Una variable debe empezar por una letra o por el signo de subrayado, estos nombres serian correctos, pero lo mejor es solo usar caracteres alfabeticos: «A123456», «_PEPE», «R2P2», «Nombre».
  • El nombre de una variable no puede tener espacios en Blanco.

Informacion

La siguiente publicación empezaremos con SQL solo escribiré teoría para explicar cada consulta y al terminar la introducción SQL ya empezaremos con ADO.NET, lo de base de datos solo estoy explicando un poco no estoy afondo en la explicación del  tema.

 

 

Saludos