Controles de datos ADO.

Activex Data Object. Para poder agregar un control de datos ADO (Adodc), se requiere agregar un componente, desde del menú Project -->Components y después:

Palomear en el componente microsoft ADO Data Control 6.0 (OLEDB).

En el cuadro de herramientas, se agrega este componente:
Dibujado en el formulario tiene una apariencia así:

A continuación se muestra un ejemplo para mostrar el uso de este control.

Para empezar:
Crear un nuevo proyecto, agregar el componente, Hacer dobleclick en ese control para que se añada al formulario, cambiarle la altura a un valor pequeño: 315 está bien, añadir un TextBox, cambiar el tamaño, valores: alto 315, ancho 2955.
Crear un array del Text1; seleccionar el Text1, pulsar el botón derecho y copiarlo; pulsar en cualquier lado del Form y pulsar el ratón derecho del ratón, seleccionar Pegar... saldrá un mensaje preguntando si se quiere crear un array del control Text1, responder que SI.
Volver a pegar de nuevo y se creará un tercer Text1.
Se tendran tres controles Text1 con los índices desde 0 a 2


Configurar el ADO datacontrol:
Seleccionar el datacontrol, en la ventana de propiedades pulsar en Propiedades...


mostrará un cuadro de diálogo, en la ficha General, estará seleccionada la opción

"Use Connection String", pulsar en el botón "Build..." (o Construir)
Mostrará otro cuadro de diálogo, en la ficha "Provider", seleccionar Microsoft Jet 4.0 OLE DB Provider, pulsar en "Next>>" y seleccionar la base de datos que se quiera usar, el resto de opciones dejarlos como están; pulsar en "Aceptar" dos veces para que se cierren los cuadros de diálogo

.

Seleccionar la propiedad CursorType y de la lista desplegable seleccionar 2-adOpenDynaset.
Seleccionar la propiedad RecordSource y pulsar en el botón, mostrará un cuadro de diálogo.
De la lista desplegable (Command type), seleccionar: 2-adCmdTable, la lista "Table or Stored Procedure Name" se habrá habilitado, seleccionar el nombre de la tabla que se quiera usar, en este caso Table1 y pulsar en Aceptar.

Esto mismo se puede hacer mediante código, para ello asignar estos valores al datacontrol: (por ejemplo en el evento Form_Load)

' Indicar la base de datos a usar  
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  "Data Source=" & App.Path & "\db2000.mdb"
   
Adodc1.CursorType = adOpenDynamic
' Conectarlo a la tabla de prueba
Adodc1.RecordSource = "Table1"  
' Refresh es necesario para que se cargue la tabla
Adodc1.Refresh  

Es necesario "ligar" los cuadros de texto con el Datacontrol y los campos correspondientes:
Seleccionar los tres Text1, en la ventana de propiedades seleccionar DataSource y en la lista desplegable selecciona Adodc1


Para ligar cada Text1 con un campo de la base de datos:
Pulsar en cualquier parte del formulario para quitar la selección actual.
Seleccionar el Text1 con índice 0.
En la ventana de propiedades, selecciona DataField y de la lista desplegable, seleccionar "Nombre"
Hacer lo mismo con los otros dos Text1, pero para el de índice 1, seleccionar "e-mail" y para el otro: "Comentario"
Este último control sería conveniente que se hiciera más grande y MultiLine, ya que se supone que aceptará textos más grandes porque el tipo de campo es "Memo"
Pulsar en F5 para probar que todo esto funciona.

Para hacerlo manualmente, añadir lo siguiente en el evento Form_Load:

Private Sub Form_Load()
  ' Indicar la base de datos a usar
  Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  "Data Source=" & App.Path & "\db2000.mdb"
 
  ' Conectarlo a la tabla de prueba
  Adodc1.RecordSource = "Table1"
  ' Refresh es necesario para que se cargue la tabla
  Adodc1.Refresh
  ' Conectar manualmente los Text1 al recordset
  Dim i As Long
  ' Asignar el control data
  For i = 0 To 2
  Set Text1(i).DataSource = Adodc1
  Next
  ' Asignar los nombres de los campos
  Text1(0).DataField = "Nombre"
  Text1(1).DataField = "e-mail"
  Text1(2).DataField = "Comentario"
End Sub

Para que el Caption del data control nos muestre el número de registro, en este caso el campo ID de la tabla, añadir este código:

Private Sub Adodc1_MoveComplete(ByVal adReason As
  ADODB.EventReasonEnum, _
  ByVal pError As ADODB.Error, _
  adStatus As ADODB.EventStatusEnum, _
  ByVal pRecordset As ADODB.Recordset)
  ' Mostrar el ID del registro actual
  ' si se pasa del primero o del último, dará error
 
  On Local Error Resume Next
  ' Mostrar el ID del registro actual usando el recordset pasado como parámetro
  'Adodc1.Caption = "ID del Registro: " & pRecordset!ID
  ' También se puede usar:
  Adodc1.Caption = "ID del Registro: " & Adodc1.Recordset!ID
  Err = 0
End Sub


Añadir y borrar registros de la tabla.
Para tener estas dos opciones, añadir dos botones al formulario, al primero ponerle el nombre cmdAdd y en el Caption escribir Añadir, al otro botón el nombre a cmdDel y en el Caption escribir: Eliminar.
Añadir el siguiente código:

Private Sub cmdAdd_Click()
  Adodc1.Recordset.AddNew
End Sub
   
Private Sub cmdDel_Click()
  Adodc1.Recordset.Delete
End Sub