Asignar valor a un campo de una tabla desde exprés

Pregunta es la siguiente: tengo una tabla principal con distintos campos, entre ellos: fecha 1ª evaluación y fecha 2ª evaluación. Luego tengo creado una consulta principal en la que he creado una expresión que es esta:
Fecha 2 evaluación:[fecha 1ª evaluacion]+180
Necesito que el campo fecha 2ª evaluación de la tabla principal tome como valor el resultado de esta expresión.
Soy un poco novato y estoy empezando con el acess a un nivel básico. Perdonad si no lo puse claro.

1 respuesta

Respuesta
1
Te explico otra manera de hacer lo que pides:
1.- En un formulario que tengas, o si no creas uno nuevo, añades un botón de comando. Este botón te servirá para actualizar los datos de la tabla.
2.- Sacas las propiedades del botón y te vas a la pestaña Eventos->Al hacer click. Verás que hay un pequeño botón de puntos suspensivos. Si haces click sobre él se te abrirá una ventana. Le dices que quieres generar código.
3.- Se te abrirá el editor de VB, con dos líneas por defecto (Private Sub... y End Sub). Esas líneas no debes tocarlas. En medio de ellas escribes el siguiente código (te lo pongo comentado para que sepas qué hace cada cosa):
...
Private Sub...
'Definimos las variables
Dim vUno as variant, vDos as variant
Dim rst as recordset
'Creamos el recordset
Set rst = currentdb.openrecordset("Tabla1")
'Si no hubiera registros sale del proceso
If rst.Recordcound = 0 then exit sub
'Nos movemos al primer registro
rst.MoveFirst
'Iniciamos el proceso
Do until rst.EOF
'Cogemos el valor de la 1ª evaluación
vUno = rst.Fields("fecha 1ª evaluacion").Value
'Calculamos el valor de la 2ª evaluación
vDos = vUno + 180
'Actualizamos los datos
With rst
.Edit
.Fields("fecha 2ª evaluacion").value = vDos
.Update
End with
'Nos movemos al registro siguiente
rst.MoveNext
Loop
'Lanzamos un mensaje de que el proceso ha ido bien
msgbox "Proceso realizado correctamente",vbInformation,"OK"
'Cerramos conexiones y liberamos memoria
rst.Close
Set rst = nothing
End Sub
...
Las equivalencias que debes comprobar en el código (marcadas con negrita) son:
- Tabla1 -> Debes poner el nombre de tu tabla principal
- Fecha 1ª evaluación -> Comprueba que el nombre sea exactamente el mismo que el que tienes en la tabla.
- Fecha 2ª evaluación -> Comprueba que el nombre sea exactamente el mismo que el que tienes en la tabla.
Y ya está. Ahora, cuando hagas click sobre el botón, se te rellenará la tabla automáticamente.
Si tienes algún problema me comentas.
Hola! Bueno he probado el código que me has dado pero al compilar da un error:
No se encontró el método o el dato miembro
En el código se detiene en esta parte
'Si no hubiera registros sale del proceso
If rst.Recordcound = 0 then exit sub
¿No se si tiene que ver que la tabla ya tiene datos?
Muchas gracias de antemano
Ostras!
Eso pasa por escribir el código de cabeza! Qué pifia!
Cambia esa línea por esta otra:
If rst.RecordCount = 0 Then Exit Sub
Disculpa... las prisas y mi cabeza... ;)
Ya me dirás si ahora te va bien.
Siento causarte molestias de nuevo, pero ahora me de otro error (je je)
En esta linea:
With rst
.Edit ------>aquí se para el depurador
¿Qué ocurre ahora?
Muchas gracias
Ahí sí que no debería darte error en cuanto escritura de código, puesto que está bien escrito.
¿Qué texto de error te da? A ver si con eso puedo saber qué es lo que te está pasando.
He creado una mini aplicación con tus datos, y a mí me funciona correctamente. Si te la quieres bajar y echarle un vistazo, a ver si encuentras alguna cosa "diferente" entre tu BD y la mía: http://www.filebig.net/files/wgzgH6KNyw
Ya me dirás.
Neckkito
No me puedo creer que una cosa tan simple me de este calentamiento de cabeza. Efectivamente tu miniaplicación funciona y está tal cual lo puse yo en la mía, lo único que cambia es la dimensión de la tabla, que la mía es inmesa con un montón de campos. Bueno pues hice una prueba de arrastrar tu formulario y tu tabla a la ventana de la base de datos mía, y al ejecutar por ahí me salta el mismo error. El error que sale en el mensaje es un error de compilacon, no se encontró el método o dato miembro y el cursos se para en la linea donde está el:
.Edit
Muchas, gracias igualmente por todo
En este link
http://www.filebig.net/files/DZXcjeLVmU
He subido una copia exactamente igual de tu miniaplicación, pasada a una base de datos en blanco en la cual sale error que me sale a mi. Ahí puedes comprobarlo.
Gracias
He estado mirando esto que me has enviado y debo decirte que es la primera vez que me pasa una cosa semejante. Estoy alucinando. 8)
Vamos a ver...
Yo diría que el error viene por algún problema o bien en la versión de Access que estás utilizando o por algún problema en alguna de tus librerías de referencias.
Lo arreglaremos a la manera "tradicional". Haz lo siguiente:
1.- Abre tu BD
2.- Pulsa la combinación de teclas ALT+F11
3.- Se te abrirá el editor de VB. Te vas a menú->Herramientas->Referencias...
4.- Se te abrirá una ventana con todas las bibliotecas que tienes registradas (las que llevan el check marcado) y con todas las bibliotecas que tienes en tu PC. Busca una referencia que sea:
Microsoft DAO 3.6 Object Library
5.- Cuando la encuentres marca el check y acepta.
6.- Ahora cambias el código que te he pasado por este otro, ligeramente modificado:
...
Private Sub Comando0_Click()
'Definimos las variables
Dim vUno As Variant, vDos As Variant
Dim rst As DAO.Recordset
Dim dbs As DAO.Database
'Creamos el recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Tabla1")
'Si no hubiera registros sale del proceso
If rst.RecordCount = 0 Then Exit Sub
'Nos movemos al primer registro
rst.MoveFirst
'Iniciamos el proceso
Do Until rst.EOF
'Cogemos el valor de la 1ª evaluación
vUno = rst.Fields("fecha 1ª evaluacion").Value
'Calculamos el valor de la 2ª evaluación
vDos = vUno + 180
'Actualizamos los datos
With rst
.Edit
.Fields("fecha 2ª evaluacion").Value = vDos
.Update
End With
'Nos movemos al registro siguiente
rst.MoveNext
Loop
'Lanzamos un mensaje de que el proceso ha ido bien
MsgBox "Proceso realizado correctamente", vbInformation, "OK"
'Cerramos conexiones y liberamos memoria
...
Te devuelvo el archivo que me has enviado con este nuevo sistema, y con la Tabla1 sin los valores de la segunda evaluación, para que puedas comprobar si funciona.
http://www.filebig.net/files/K3qbcWKKGF
Ya me dirás qué tal te ha ido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas