Hace poco descubrí VBA de Access y he aprendido algo, estoy tratando de desarrollar un rprograma y me he uqedado atascado pues tengo varias dudas: ¿Cómo puedo trabajar con Recordset? ¿Es obligatorio usarlo para el trabajo con tablas? ¿Por que cuando busco un registro con docmd. Gotorecord y luego trato de mostrar los datos de un campo con me. Campo1. Value me muestra el valor campo1 del primer registro y no el del registro que indique con docmd. Gotorecord?
Mi correo es [email protected]
1 respuesta
Respuesta de telemaco
1
1
telemaco, He trabajado 5 años desarrollando aplicaciones tanto en access...
Hay muchas maneras de traer datos o trabajar con tablas (bueno no tantas en realidad son dos), una manera es cuando amarras a un formulario un atabla, por medio de su propiedad Origen del Registro, también puedes amarrarlo a una consulta... ahora si necesitas buscar un dato de un tabla puedes hacerlo de dos maneras si es un dato sencillo puedes utilizar la función DLookup, tienes que entrar el nombre del campo, Nombre de la tabla, y opcionalmente un criterio por si desea filtrar la búsqueda... cuando necesitas búsquedas un poco más complejas (por ejemplo cuando mezclas dos tablas INNER JOIN) entonces es mejor los recordset... Para poderlos utilizar debes irte akl menu herramientas del editor de visual basic, y hacer click en referencias, busca Microsoft Dao y selecciona la version más reciente... Ahora para llenar un recordset o poblarlo, se hace así: ********************* Dim RegProd as dao.recordset Sql = "SELECT * FROM PRODUCTOS" Set RegProd = Currentdb.openRecorset(sql) If regprod.Recordcount > 0 then Regprod.MoveLast RegProd.Move first For i=1 to RegProd.recordcount NombreProducto= regprod("NomProd") Regprod.MoveNext Next i end if ********************** El anterior código es una maera sencilla de llenar un recordset con una consulta de una tabla de productos.. La primer parte en dim nombamos la variable que vamos a utilizar, en este caso es una variable recordset de Dao... La variable SQL, es para colocar la instrucción sql que se invocaras más abajito y que retornara en realidad lo que es "una consulta sql" Sql = "SELECT * FROM PRODUCTOS" Set RegProd = Currentdb.openRecorset(sql) Donde esta el Set es pra poblar la variable recorset RegProd, el objeto Currentdb habla de la base de datos actual, y es la que se encarga de LLENAR LOS RECORDSET O EJECUTAR CONSULTA DE ACCIÓN.. aquí con la instrucción OpenRecordset le estoy diciendo que se llene con registros de una tabla... El primer if, espara saber si hay registros (RecordCount > 0 ) osea el total de registros mayor a cero, si es cero es porque no hay registros... Después viene la manera de ir a un registro u otro Regprod. MoveLast RegProd. Move first Movelast se mueve al ultimo y move first al primero... se debe hacer esto, porque al llenar la variable recordset no se actaliza el total de registros, entonces por eso estas dos lineas... El for me recorre hasta la totalidad de registros (recordcount), la manera de traer un dato es nombrar el recorset y entre paréntesis y comillas dobles el nombre del campo en la tabla Regprod("NomProd") El MOveNext es para pasar al siguiente registro, para seguir capturando los datos que necesitamos... Bueno por ahora eso es todo, pero tengo que irme porque me salio algo en este momento DISCULPAME... pero mañana te respondo la ultima parte que me comento.. Att:telemaco