Necesito ayuda con respecto a ADO

Laura
16 de Agosto del 2003
Necesito que me envien el codigo para la conexion del objeto ADO con la base de dato que se encuentra en Access 97 y cuyo motor de base es Microsoft Jet 3.51, especificamente un ejemplo de como se realiza la conexion sin tener que utilizar el objeto ADO.
Por favor podrian enviarme un ejemplo en donde se realize las operaciones basicas de todo programa ALTAS, BAJAS, CONSULTA, MODIFICACION, utilizando el objeto ADO, y sobre una base de dato relacional, por lo que dentro de un mismo formulario podamos trabajar con 2 o mas tablas distintas que se encuentran relacionadas a traves de claves foraneas, de tal forma de poder actualizar datos de todas ellas, o bien eliminar.
Les agradeceria que puedan ayudarme ya que lo necesito para regularizar una materia......Gracias
Laura

marag
16 de Agosto del 2003
Como te prometí te mando más o menos lo que pedias en el foro.
Aquí tienes el código de una aplicación, que propuse a mis alumnos el año pasado.
Esta aplicación está basada en una base de datos Access 97 llamada Pruebas.mdb y con una sola tabla
llamada Tabla1, esta consta de 6 campos que son Id con formato autonumérico, Cliente de texto, NumCliente de texto, Dirección de texto, Cp de texto con una longitud de 5 caracteres y máscara de entrada de código postal y finalmente Población de texto.
El formulario consta de una matriz de 6 textBox y 11 CommandButton con la propiedad nombre y caption a, Nuevo, Primero, Anterior, Siguiente, Ultimo, Guardar, Cancelar, Actualizar, Borrar, Buscar y Salir.
Esta aplicación usa objetos ADO y podrás practicar con ellos.


Option Explicit
Dim cn As Connection
Dim rs As Recordset


Private Sub BuscarCliente(Criterio As String)
rs.MoveNext
If Not rs.EOF Then
rs.Find Criterio
End If
If rs.EOF Then
rs.MoveFirst
rs.Find Criterio
If rs.EOF Then
rs.MoveLast
MsgBox ("No se encuentra el cliente")
End If
End If
End Sub


Private Sub Actualizar_Click()
rs.Requery 'actualizamos el recordset
End Sub

Private Sub Anterior_Click()
rs.MovePrevious 'nos movemos al registro anterior
If rs.BOF Then 'evita que nos situemos en un registro no valido
rs.MoveFirst
End If
End Sub


Private Sub Buscar_Click()
Dim Buscar As String, Criterio As String

Buscar = InputBox("Introduzca el nombre del cliente que quiera buscar") 'mostramos un inputBox en ‘el que introduciremos los criterios de busqueda
If Buscar = "" Then Exit Sub
Criterio = "Cliente Like '*" & Buscar & "*'"
BuscarCliente Criterio
End Sub


Private Sub Cancelar_Click()
rs.CancelUpdate 'cancelamos la modificación
End Sub

Private Sub Eliminar_Click()
Dim r As Integer
On Error GoTo InterceptarError

r = MsgBox("¿Realmente desea borrar el registro?", vbYesNo + vbCritical, "Precaución") 'Provocamos la aparición de un msgBox para confirmar la eliminación
If r <> vbYes Then Exit Sub ' si pulsamos No se sale del procedimiento
rs.Delete 'si pulsamos Si borramos el registro actual
rs.MoveNext 'nos situamos en el registro siguiente
If rs.EOF Then 'evitamos situarnos en un registro no valido
rs.MoveLast
End If
Exit Sub

InterceptarError: 'interceptamos el error
r = MsgBox("Se ha producido un error y el registro no será actualizado", vbOKOnly, "Error:") 'mostramos un mensaje diciendo que ha habido un error
rs.CancelUpdate 'cancelamos la eliminación del registro
End Sub


Private Sub Form_Load()
Dim i As Integer
ChDir App.Path 'le indicamos a vb que la base de datos se encuentra en el mismo directorio que la ‘aplicación

Screen.MousePointer = vbHourglass 'el puntero del ratón se convierte en reloj de arena

Set cn = New ADODB.Connection 'se crea el objeto conexión
With cn 'establecemos sus propiedades
.Provider = "Microsoft.Jet.OLEDB.3.51"
.ConnectionString = "pruebas.mdb"
.Mode = adModeReadWrite 'aqui se otorgan los permisos de acceso
End With
cn.Open 'establecemos un vínculo con el origen de datos

Set rs = New ADODB.Recordset 'Creamos un conjunto de registros desde la tabla proves
With rs 'establecemos sus propiedades
.Source = "SELECT * From Tabla1 order by Cliente" 'esta es la cadena SQL, mira en el apartado ‘definiciones
.ActiveConnection = cn 'le indicamos al recordset la conexión activa
.CursorType = adOpenStatic 'este es el tipo de cursor
.CursorLocation = adUseClient 'indica la localización del cursor
.LockType = adLockOptimistic 'indica el tipo de bloqueo de la base de datos
End With
rs.Open Options:=adCmdText 'abrimos el conjunto de registros, en cuanto a las opciones mira en ‘definiciones

For i = 0 To 5 'conectamos los controles con los campos del conjunto de registros
Set txtCliente(i).DataSource = rs
txtCliente(i).DataField = rs.Fields(i).Name
Next i

Screen.MousePointer = vbDefault ' restauramos el cursor del ratón
End Sub


Private Sub Guardar_Click()
rs.Update 'guardamos la modificación
End Sub


Private Sub Nuevo_Click()
rs.AddNew 'añadir un registro nuevo
End Sub


Private Sub Primero_Click()
rs.MoveFirst 'nos desplazamos al primer registro
End Sub


Private Sub Salir_Click()
Set rs = Nothing
Set cn = Nothing
Unload Me
End
End Sub



Private Sub Siguiente_Click()
rs.MoveNext 'nos desplazamos al registro siguiente
If rs.EOF Then 'evita que nos situemos en un registro no valido
rs.MoveLast
End If
End Sub



Private Sub Ultimo_Click()
rs.MoveLast 'nos desplazamos al último registro
End Sub



DEFINICIONES

USO DE MULTIPLES TABLAS Cuando se combinan varias tablas en una consulta siempre hay que incluir la cláusula WHERE para especificar algún criterio
SELECT Campo2, Campo3
FROM Tabla1, Tabla2
WHERE Tabla1.Campo1 = Tabla2.Campo1
Esta consulta devuelve el resultado del campo2 de la tabla1 y el campo3 de la tabla 2 con el criterio de que los valores del campo1 de la tabla1 y el campo2 de la tabla 2 sean iguales. Cuando dos campos de dos tablas diferentes tienen el mismo nombre, se debe especificar el origen de cada uno colocando como prefijo el nombre de la tabla a la que pertenecen.
Si especificamos múltiples tablas sin cláusula WHERE, la consulta nos devolverá un cursor muy extenso
Por ejemplo
SELECT Campo2, Campo3
FROM Tabla1, Tabla2

Marag
16 de Agosto del 2003
De momento te envio el codigo para la conexión, para el resto hay casi que preparar una tesis, pero te lo mandaré
Por ejemplo despues de Opcion Explicit escribimos
Dim cn As Connection
En el evento:
Private Sub Form_Load
ChDir App.Path 'Aquí le indicamos a Vb en directorio activo
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.3.51"
.ConnectionString = "Mi_Base_De_Datos.mdb"
.Mode = adModeReadWrite 'O el que más convenga
End With
cn.Open
End Sub
Para el resto de tu consulta te voy a preparar un pequeño documento