Como en el lenguaje de visual puedo llamar a una tabla desde un formulario por ejemplo llamada pensinados y que de la columna rut lo busque y muestre el nombre... Otra pregunta es como puedo hacer para que se incremente en un foemulario el ultimo mayor ingresado en la tabla
Aúpa, Para dar respuesta a las preguntas que me planteas, voy a utilizar objetos DAO. Para que funcionen en tu Base de Datos, asegúrate de que tienes activada la referencia a este tipo de Objetos. Las referencias se establecen en el cuadro de diálogo Referencias, disponible haciendo clic en Referencias en el menú Herramientas mientras estás en la vista Diseño de un módulo. La Biblioteca de compatibilidad que debes tener activada es: DAO 2.5/3.5 de Microsoft Bien, aclarados estos previos, vamos con tus preguntas: 1. Cómo acceder a una tabla " pensinados" desde Visual Basic Para acceder a una tabla (o consulta) desde Visual Basic, debes utilizar un RecordSet (Conjunto de Registros). Un RecordSet obtiene los registros que se le indican de un origen de datos y los guarda en memoria como si se tratase de una tabla más de Access con la que podemos hacer las mismas operaciones de agregar, eliminar, modificar. Un RecordSet siempre hay que crearlo desde un Objeto DataBase (Base de Datos) En tu caso, para acceder a la tabla "pensinados" habría que introducir las siguientes líneas de código el Visual Basic: Dim bdActual as DataBase 'Definimos el objeto DataBase Dim rsPensinados as RecordSet 'Definimos el objeto RecordSet 'Ahora asignamos a bdActual la Base de datos que tenemos abierta set bdActual = CurrentDB 'Creamos el RecordSet a partir de la tabla pensinados set rsPensinados = bdActual.OpenRecordSet ("pensinados", dbOpenDynaSet) 'Como ves, lo creamos con el método OpenRecordSet, cuyos parámetros te recomiendo mirar en la ayuda de Access para más información. El RecordSet sólo hay que crearlo una vez, después podemos hacer con él todas las operaciones que queramos. 'Con esto ya tenemos la tabla en memoria. Si quieres obtener el campo "rut" del primer registro, bastaría con hacer lo siguiente MiVariable = rsPensinados![rut] Ahora bien, si quieres localizar un registro concreto en la tabla, puedes utilizar el método FindFirst del objeto RecordSet (en la ayuda encontrarás una descripción completa de sus posibilidades) Por ejemplo: Supón que queremos localizar le primer registro de la tabla "pensinados" cuyo campo "rut" contiene un valor guardado en la variable MiVar. El código Visual Basic sería: Dim bdActual as DataBase 'Definimos el objeto DataBase Dim rsPensinados as RecordSet 'Definimos el objeto RecordSet 'Ahora asignamos a bdActual la Base de datos que tenemos abierta set bdActual = CurrentDB 'Creamos el RecorSet a partir de la tabla pensinados set rsPensinados = bdActual.OpenRecordSet ("pensinados", dbOpenDynaSet) 'Localizamos el registro que buscamos (suponiendo que el campo rut es de tipo texto) rsPensinados.FindFirst "[rut]='" & MiVar & "'" 'Fíjate que si rut fuese de otro tipo diferente de texto, bastaría con poner "[rut]=" & MiVar 'Ahora comprobamos si ha encontrado el registro: If rst.NoMatch Then MsgBox "No se ha encontrado ningún registro." Else MsgBox "Registro Encontrado." End If 'Por último, cerramos el RecordSet para liberar la memoria si ya no lo vamos a utilizar más. rsPensinados.Close 'También podemos cerrar el objeto DataBase bdActual.close Los RecordSets ofrecen un montón de posibilidades realmente interesantes. Te animo a que vayas probando y descubriéndolas. Vamos con la segunda pregunta. 2. Incrementar un campo. La verdad es que no sé muy bien que registro quieres incrementar exactamente, si el último de la tabla, o el que tiene mayor valor en un campo dado. Voy a tratar de responder a las dos posibilidades. Además ahora que ya conocemos los RecordSets, puede ser un buen ejercicio para practicar con ellos: a) Cómo incrementar el valor de un campo del último registro insertado en una tabla: Dim bdActual as DataBase Dim rsTabla as RecordSet set bdActual = CurrentDB set rsTabla = bdActual.OpenRecordSet ("Nombre de la tabla que quieres abrir ", dbOpenDynaSet) 'Este método obtiene el último registro del RecordSet según el orden que este tenga establecido rsTabla.MoveLast 'Modificamos el campo Campo1, incrementando su valor en 1 'Activamos el modo de Edición en el RecordSet rsTabla.Edit 'Modificamos el campo Campo1 de la Tabla rsTabla![Campo1]= rsTabla![Campo1] +1 'Actualizamos el RecordSet rsTabla.Update 'Cerramos el RecordSet y el Objeto DataBase rsTabla.Close bdActual.Close b) Cómo incrementar el valor de un campo del registro con mayor valor Vamos a suponer que tenemos una tabla Tabla1, con un Campo Campo1 de tipo numérico Entero. Si hiciéramos una consulta para obtener el elemento de mayor valor en el campo1, el código SQL de la consulta sería: SELECT Max(Tabla1.Campo1) AS MáxDeCampo1 FROM Tabla1; Bien, pues podemos crear un RecordSet que directamente nos obtenga el mismo elemento que la consulta. Basta con poner, en lugar del nombre de la tabla en el RecordSet, el código SQL de la Consulta. El código sería: Dim bdActual as DataBase Dim rsTabla as RecordSet set bdActual = CurrentDB set rsTabla = bdActual.OpenRecordSet ("SELECT Max(Tabla1.Campo1) AS MáxDeCampo1 FROM Tabla1;", dbOpenDynaSet) 'Modificamos el campo Campo1, incrementando su valor en 1 'Activamos el modo de Edición en el RecordSet rsTabla.Edit 'Modificamos el campo Campo1 de la Tabla rsTabla![MáxDeCampo1]= rsTabla![MáxDeCampo1] +1 'Actualizamos el RecordSet rsTabla.Update 'Cerramos el RecordSet y el Objeto DataBase rsTabla.Close bdActual.Close Espero que esto te haya servido. Si tienes cualquier duda o pega con las soluciones que te propongo, no dudes en consultármelo. Un abrazo, Javi