Pasar Valores de una base de datos a otra

Hola.....
Soy nuevo en access, tengo el siguiente problema.
Tengo dos bases de datos una llamada Productos y otra llamada NuevosPrecios en ambas tengo un campo llamado PrecioPublico, mi pregunta es ¿hay algún modo de actualizar el campo PrecioPublico de la base de datos Productos por los valores de la base de datos NuevosPrecios? Y ¿si se puede hacer comparando el producto?
ejemplo:
si el producto VL10 existe en ambas base de datos actualize el campo PrecioPublico.
Espero haberme explicado.
Agradeciendo de antemano cualquier ayuda brindada.
Atentamente.
Francisco Mora.

1 respuesta

Respuesta
1
Voy a suponer un par de cosas:
.- Cuando tu dices "bases de datos" entiendo que estás hablando de tablas
.- Al campo donde tienes el producto lo llamaré simplemente [Producto], y supondré que es un valor de tipo texto
.- El campo que tú llamas [PrecioPublico] supondré que es de tipo Moneda
.- Supondré que en la tabla productos el campo que yo he llamado [Producto] no está repetido. Es decir, que esa tabla contiene sólo productos únicos.
Como se van a modificar valores te recomiendo que antes hagas la prueba en una copia de tu BD, por si saliera algún "churro" ;)
Tras estas suposiciones lo que puedes hacer es lo siguiente
1.- En un formulario (el que quieras) añades un botón de comando. Sacas las propiedades de ese botón y te vas a la pestaña Eventos -> Al hacer click. Verás que a su derecha hay un pequeño botón de puntos suspensivos. Si haces click sobre él se te abrirá una nueva ventana. Ahí le dices que quieres generar código
2.- Se te abrirá el editor de VB, con dos líneas por defecto (Private Sub... y End Sub). No debes tocar esas líneas. En medio de ellas escribes el siguiente código:
...
Private Sub ...
'Declaramos las variables
Dim vProd as String
Dim vNewPrec as currency
Dim rst as DAO.recordset
Dim dbs as DAO.Database
'Creamos el recordset
Set dbs = currentdb
Set rst = dbs.openrecordset("Productos")
'Nos movemos al primer registro
rst.MoveFirst
'Iniciamos el recorrido de registros
Do until rst.EOF
'Cogemos el producto
vProd = rst.Fields("Producto").value
'Comprobamos si el producto existe en la tabla NuevosPrecios y, si existe, cogemos
'el precio que tiene
vNewPrec = Nz(DLookup("[PrecioPublico]","NuevosPrecios","[Producto]='" & vProd & "'"),-1)
If vNewPrec <> -1 Then
'Actualizamos el precio en la tabla Productos
With rst
.Edit
.Fields("PrecioPublico").Value = vNewPrec
.Update
End With
End If
'Nos movemos al siguiente registro
rst.MoveNext
Loop
'Lanzamos un mensaje de aviso de que todo ha ido correcto
Msgbox "Los precios se han actualizado correctamente", vbInformation, "CORRECTO"
'Cerramos conexiones y liberamos memoria
rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing
End Sub
...
3. Si utilizas Access 2003 debes registrar la librería "Microsoft DAO 3.6 Object Library". Por si no lo sabes, en el editor de VB, te vas a menú Herramientas -> Referencias... -> Buscas esa librería -> Marcas su check -> Aceptas
Recuerda que en el código debes cambiar el nombre del campo [Producto], que yo he supuesto, por el nombre que tú tengas en tu BD
Finalmente, te he escrito el código de cabeza. Si te da algún error te agradecería que me indicaras qué número de error te da y, al darle a depurar, qué línea te marca en amarillo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas