Bueno, pues vamos a ver un poco de teoria de bases de datos y de recordsets. Parece un poco rollo, pero al final es mucho mas facil de lo que parece, ya lo veras. ;-))
En primer lugar, te voy a contar un poco como se manejan los datos de una base de datos, desde que se cogen del fichero, hasta que vuelven a el, y es la siguiente:

Bueno, mas o menos el flujo es el del dibujo.
Los datos se recogen de la base de datos del disco duro y se pasan a memoria, pero como en memoria tienen que estar "guardados" de alguna manera, y relacionados con el Visual de alguna forma, en memoria se guardan en lo que se llama "Recordset", que traducido del ingles es un "Conjunto de Registros", y para ligarlos al visual se utiliza el DataControl, asi que realmente el flujo de datos seria de esta forma:

Aunque el recordset y el DataControl, a efectos de usuario es como si fuesen lo mismo
Es por eso, por lo que cuando queremos acceder a los datos que "contiene" un DataControl, o queremos movernos por el tenemos que poner siempre algo asi:
Data1.Recordset.
Fields ("Nombre")
Data1.Recordset.
Movenext
Data1.Recordset.
Movelast
Con Data1, decimos a cual de los controles de base de datos nos estamos refiriendo, pues podemos tener varios controles (Data1, Data2, Data3....), y luego de ese DataControl, al poner Recordset, le estamos diciendo al Visual que vamos a hacer algo con los Registros que tiene asociados, que vamos a hacer algo con el Recordset, y por ultimo le decimos que es lo que vamos a hacer con esos registros.
Si por ejemplo escribimos lo siguiente:
Data1.puta RecordSource = "Ingredientes"
Data1.DatabaseName = "Recetas"
En este caso no ponemos lo de Recordset, porque no vamos a hacer nada con los registros de ese DataControl, estamos accediendo directamente a propiedades concretas del DataControl.
Bueno, y asi es como se manejan los datos en el visual si utilizmos DataControls.
Lo que podemos hacer con estos Registros que nosotros tenemos cargados en memoria dentro de un Recordset ligado a un DataControl es lo siguiente:
Intstrucciones de movimiento:
Data1.Recordset.MoveFirst
Nos movemos al primer registro del recordset
Data1.Recordset.MoveLast
Nos movemos al último registro del recordset
Data1.Recordset.MovePrevious
Nos movemos al registro anterior del recordset
Data1.Recordset.MoveNext
Nos movemos al registro siguiente del recordset
Instrucciones de busqueda:
Data1.Recordset.FindFirst Condicion
Busca el primer registro que cumpla una condicion
Data1.Recordset.FindNext Condicion
Busca el siguiente registro que cumpla una condicion
Para especificarle la condicion, simplemente hay que definir una cadena de texto que la contenga, una posible forma, seria primero crear una variable tipo texto en donde vamos a guardar esa condicion, y luego hacer la busqueda:
Private Function Buscar ( )
Dim Query as String
Query = "Nombre = ‘Pincho de Setas’ "
Data1.Recordset.FindFirst Query
End Function
Como ves, la variable Query tiene que ser de tipo texto, y si dentro de ese tipo texto queremos especificar que hay una cadena de texto, como pasa con "Pincho de Setas" (que no es un numero), debemos encerrarlo entre comillas simples, porque si ponemos comillas dobles, estariamos cerrando las primeras que hemos puesto, y entonces nos dara error.
Yo suelo utilizar siempre la misma variable cuando tengo que hacer busquedas para poner las condiciones, tambien si estoy utilizando SQL utilizo el mismo nombre de variable (Query (busqueda en ingles)), y eso me sirve para saber siempre que donde estoy utilizando una Query, estoy poniendo una condicion a una busqueda, o estoy utilizando SQL. Es por comodidad, y sirve para tener el codigo mas claro, porque si utilizas cada vez un nombre de variable distinta al final ya no sabes como le habias llamado en esa funcion, sobre todo si es muy grande. Si necesito mas de una variable de este tipo, las suelo numerar.
Bueno, yo te cuento cosas que te pueden ser utiles, para que si quieres las hagas como las hago yo, pero puedes hacerlas como quieras, porque a lo mejor no te parecen comodas como las hago yo.
Y por ultimo si quieres utilizar o referirte al contenido de alguno de los campos del registro en el que estas situado en ese momento, existen tres posibilidades:
Data1.Recordset.Fields ("Nombre")
Data1.Recordset!Nombre
y una tercera que no me acuerdo ahora
Puedes utilizar cualquiera de las dos primeras para referirte al valor de un campo, yo suelo utilzar la segunda por dos motivos, primero, porque es mas corta, y segunda porque segun me ha dicho Manolo, es mucho mas rapida en tiempo de ejecucion, asi que como todo son ventajas, pues es la que yo utilizo, pero cualquiera de las dos te dara el mismo valor si haces esto:
Private Function RecuperaNombre ( )
Dim Nombre1, Nombre2 as String
Nombre1 = Data1.Recordset.Fields ("Nombre")
Nombre2 = Data1.Recordset!Nombre
End Function
Nombre1 y Nombre2, contendran el mismo valor, el contenido del campo nombre del registro en el que estes situado.
Principio y final de los datos almacenados en el DataControl:
Data1.Recordset.BOF
Principio de la base de datos
Data1.Recordset.EOF
Final de la base de datos
Bueno, y esta es la forma de utilizar los DataControls, que mas o menos, algo ya te sonaban... ¿no? ;-))