1 .
Para empezar
2 .
Ahora vamos a configurar el ADO Data Control
3 .
Para ligar cada Text1 con un campo de la base de datos
4 .
Añadir y borrar registros de la tabla
Si has intentado usar una base de datos creada o convertida con el Access
2000, te habrás llevado una pequeña sorpresa al ver que usando el Data Control
que se incluye en el Visual Basic no te permite hacerlo. Esto es porque el nuevo
formato de Access usa el motor Jet versión 4.0 y los datacontrol DAO sólo
"entienden" hasta la versión 3.6...
Pero si tienes la versión 6.0 de Visual Basic, o bien has conseguido las
DLLs de ADO (ActiveX Data Object), puedes usarlas sin problemas... incluso con
el ADO Datacontrol.
En el siguiente código veremos cómo abrir y movernos en una base de datos,
en este caso, lo mismo dará que la base de datos haya sido creada con Access 97
o con el Access 2000.
Para empezar
Crea un nuevo proyecto, en Proyecto/Componentes... selecciona Microsoft
ADO Data Control (OLEDB), pulsa Aceptar y verás que se añade un nuevo control a
la barra de herramientas: ¡Ese será el control que usaremos!
Haz dobleclick en ese control para que se añada al formulario, cámbiale
la altura a un valor pequeño: 315 está bien, sitúalo donde más coraje te de y
añade un TextBox, cambia el tamaño, yo le he dado estos valores:
Crea un array del Text1 recién añadido:
- Selecciona el Text1, pulsa el botón derecho y copialo; pulsa en cualquier
lado del Form y pulsa el ratón derecho del ratón, selecciona Pegar... te
preguntará si quieres crear un array del control Text1, responde que SI.
- Vuelve a pegar de nuevo y se creará un tercer Text1.
- Ahora tendrás tres controles Text1 con los índices desde 0 a 2
Si te parece demasiado "básico" todos estos pasos... te aguantas...
y espera un poco que ya mismo termino.
Ahora vamos a configurar el ADO Data Control
Selecciona el datacontrol, en la ventana de propiedades pulsa en Custom...
Te mostrará un cuadro de diálogo, (puede que si tienes la versión en
castellano del VB, no te muestre lo que yo te digo, ya que la versión que tengo
está en inglés, pero espero que no te lies...)
- En la ficha General, estará seleccionada la opción "Use Connection String",
pulsa en el botón "Build..."
- Te mostrará otro cuadro de diálogo, en la ficha "Provider", selecciona
Microsoft Jet 4.0 OLE DB Provider, pulsa en "Next>>" y selecciona la base de
datos que quieres usar, (si tienes la que están incluidas en el ZIP, se llamará
db2000.mdb); el resto de opciones déjalos como está; pulsa en "Aceptar" dos
veces para que se cierren los cuadros de diálogo.
Ahora tenemos que decirle que tabla usar y otras
cosillas.
- Selecciona la propiedad CursorType y de la lista desplegable selecciona
2-adOpenDynaset.
- Selecciona la propiedad RecordSource y pulsa en el botón, te mostrará un
cuadro de diálogo.
- De la lista desplegable (Command type), selecciona: 2-adCmdTable, la
lista "Table or Stored Procedure Name" se habrá habilitado, selecciona el nombre
de la tabla que quieres usar, en este caso Table1 y pulsa en Aceptar.
Esto mismo se puede hacer mediante código, para ello asígnale estos
valores al datacontrol: (por ejemplo en el evento Form_Load)
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
Nota: En el código de ejemplo asignaremos en tiempo
de ejecución la base de datos y demás conexiones necesarias.
Ahora será necesario "ligar" los cuadros de texto con el Datacontrol y
los campos correspondientes:
- Selecciona los tres Text1, en la ventana de propiedades selecciona
DataSource y en la lista desplegable selecciona Adodc1
Para ligar cada Text1 con un campo de la base de datos
Pulsa en cualquier parte del formulario para quitar la selección actual.
Selecciona el Text1 con índice 0.
En la ventana de propiedades, selecciona DataField y de la lista
desplegable, selecciona "Nombre".
Haz lo mismo con los otros dos Text1, pero para el de índice 1, selecciona
"e-mail" y para el otro: "Comentario".
Este último control sería conveniente que lo hicieras más grande y
MultiLine, ya que se supone que aceptará textos más grandes porque el tipo de
campo es "Memo".
Ya puedes pulsar en F5 para probar que todo esto funciona.
Realmente no es necesario añadir nada de código, pero si quieres hacerlo
manualmente, añade lo siguiente en el evento Form_Load:
Evento Form_Load (II)
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"
Adodc1.CursorType = adOpenDynamic
' 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ñade este código:
Adodc1_MoveComplete
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
Esta página web nos deberia de presentar la información contenida en la tabla direcciones de la base de datos prueba.
Y a partir de aquí solamente teneis que leer la documentación y usar vuestra imaginación para crear páginas web dinámicas, actualizadas y que presenten la información contenida en vuestras bases de datos.
Añadir y borrar registros de la tabla
Para tener estas dos opciones, añade dos botones al formulario, al primero
lo llamas cmdAdd y en el Caption escribe Añadir, al otro botón le cambias el
nombre a cmdDel y en el Caption escribe: Eliminar.
Añade el siguiente código:
Private Sub cmdAdd_Click()
Adodc1.Recordset.AddNew
End Sub
Private Sub cmdDel_Click()
Adodc1.Recordset.Delete
End Sub