Actualizar todos los registros de una B.DE Access

Hola, he creado una base de datos para mi trabajo en Access, dicha base de datos almacena un fondo editorial de libros (somos una empresa distribuidora de libros), la base de datos funciona a la perfección pero tengo una pregunta sobre como actualizar un campo nuevo de la base de datos, me explico:
- Mi base de datos, tiene un objeto ole incrustado, que carga la imagen de la portada del registro activo (en este caso cada registro almacena datos de un libro), teniendo en cuenta que el titulo del libro y el directorio donde se encuentra son campos del registro activo, La instrucción que ejecuto para cargar la imagen está introducida en el evento current del formulario en cuestión y es la siguiente:
Imagen91.Picture = "C:\Documents and Settings\Mis documentos\Mis imágenes\PORTADAS\" & IDIOMA & "\" & TÍTULO & ".JPG"
Hasta aquí todo funciona correctamente, pero he decidido colocar esta información en una intranet en mi trabajo y mi problema es que para crear una página dinámica necesita tener un campo con la ruta completa de la imagen de cada registro, así que cree un campo nuevo llamado ruta_imagen, el texto de la cual es la ruta de la imagen en mi disco duro, esta instrucción también la pues en el evento current, pero claro debo recorrer los más de 27000 registros de mi base de datos para actualizar todos los enlaces de imágenes correctamente ya que estaban todos en blanco en un principio (al crear el campo nuevo), mi pregunta:
Se puede programar una rutina o modulo con un bucle que recorra todos los registros de la tabla y actualice las rutas de las imágenes para cada registro de mi base de datos.
No se si he sido lo suficientemente claro en mi explicación, espero que puedas ayudarme. Gracias...
2
Respuesta
1
Y perdona mi retraso...
Te paso un ejemplo a ver si te sirve..
'Inicio del código
Dim dbs as database
Dim rst as recordset
set dbs=codeDb
set rst=dbs.OpenRecordset("NombreTabla")
Do until rst.eof
rst.edit
rst("NombreCampo")="Lo que tu quieras"
rst.update
rst.movenext
loop
on error resume next
rst.close: set rst=nothing
dbs.close: set dbs=nothing
'Fin del código
Esto lo que hace es abrir la tabla que tú quieras...
Recorrer todos los registros existentes... y en el campo indicado, ponerle el valor que tú quieras..
Saludos.
Jordi Madern i Pérez
Mataró (Barcelona)

1 respuesta más de otro experto

Respuesta
1
Si que se puede. Te cuento:
En un botón de comando de un formulario le pones...
Private Sub Comando30_Click()
Dim base As Database
Dim sCadena As String
sCadena = "update libros set rutaFoto='\\server\datos\imagenes'"
Set base = CurrentDb
base.Execute (sCadena)
base.Close
sedt base = Nothing
End Sub
Y esto te lo actualiza de un 'viaje'
En primer lugar gracias, pero lo siento porque mi nivel no es tan avanzado y necesito unas aclaraciones. La instucción update, que supongo que es SQL, no me funciona, me imagino que "libros" es mi tabla donde están guardados los datos y que rutafoto es el campo donde quiero almacenar la ruta de la foto, luego en \\server\datos\.. debo cambiar esta ruta por la mía, pero mi ruta tiene que incorporar los campor IDIOMA y titulo porque nunca son iguales y Visual basic no me permite poner campos en la ruta del archivo. Por lo demás me parece que lo entiendo todo, gracias de nuevo y disculpa las molestias
Joder perdí la respuesta, y después de todo lo que escribí.. jodías cookies!
TE vuelvo a poner el código..
Dim base As Database
Dim rst As Recordset
Dim sCadena As String
Set base = CurrentDb
Set rst = base.OpenRecordset("select idioma from libros group by idioma")
rst.MoveFirst
While Not rst.EOF
sCadena = "update libros set rutaFoto='\\server\datos\imagenes\" & rst.Fields("idioma") & "\' where idioma='" & rst.Fields("idioma") & "'"
Base. Execute sCadena
Rst. MoveNext
Wend

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas