Inicio > Microsoft Access > telemaco > Actualizar una tabla con datos de varias

Actualizar una tabla con datos de varias

Experto:
Usuario:
Fecha: 11/01/2006
Valoración: (4,00 sobre 5) Categoría: Microsoft Access
19/10/2005
charrogar, usuario preguntando en Microsoft Access
Usuario
tengo 5 tablas en una misma BD y con la misma estructura, quisiera que desde un boton de comando una de ellas se actualizase con los datos de las otras 4
gracias
20/10/2005
charrogar, experto respondiendo en Microsoft Access
Experto
Hola charrogar:

Bueno.....se podria hacer una consulta de actualizacion donde se relacionen las 4 tablas, y me actualice los campos que se necesitan en la tabla modificada.....pero el problema seria la relacion de las tablas...ya que tendria que ser uno a uno las relaciones para que no me votaran mas de un registro......

Entonces, cual seria la solucion.......me imagino que sabes utilizar recordset y consultas de sql, tendrias que realizar consultas para las 4 tablas de tal manera que se capturen los campos necesarios en cada una de ellas filtrando, para luego actualizar mi tablas....es decir algo asi,........

********************
Dim RegDatos as Ado.Recordset 'Capturara los datos para cada una de las tablas
Dim Sql as string 'VAriable que capturara la consulta SQL

Sql = "Select [Campo 1],[Campo 2],[Campo n] from [Nombre de la Tabla] where [Campo Condicion] = 'Valor';"

set RegDatos = Currentdb.OpenRecordset(sql)

if RegDatos.Recordcount > 0 then
Sql = "Update [Nombre de Tabla a Actualizar Campos] set Campo1 = '" & RegDatos("Campo 1") & "',Campo2 = " & RegDatos("Campo 2") & ",Campo3 = #" & RegDatos("Campo n") "#" where NombreCampo = 'Valor'"
Currentdb.Execute sql

********************

La variable RegDatos, es obligatoria por que sirve para manejar los datos devueltos de una consulta o variable.

La consulta por Select, necesita: los nombre de campos (En el ejemplo son [Campo 1],[Campo 2],[Campo n]) si el nombre tiene espacios en blanco debe ir entre corchetes sino no son necesarios los corchetes. [Nombre de la Tabla], pues es el nombre de la tabla. where [Campo Condicion] = 'Valor';" es la condicion para buscar un registro especifico. OJO Se coloco el ejemplo entre comillas sencillas suponiendo que es texto, si es numerico no llevas comillas sencillas, en el caso de fechas deben estar con el formato MM/dd/aaaa (Ojo con esto que esimportante) ademas en las fecha en vez de las comillas sencillas se colocara #10/30/05# (30 de Octubre del 2005).

Para actualizar:(Update)
1.[Nombre de Tabla a Actualizar Campos] : Pues es el nombre de la tabla donde se actualizaran los campos.

2.Debe llevar la palabra reservada "set", que indicaran SOLAMENTE los campos que se actualizaran.

3.Campo1 = '" & RegDatos("Campo 1") & "':
Se actualizara el Campo1 con un dato de la consulta de la otra tabla (En este caso con el Campo 1,de la primera tabla que se utilizo el select).

Aqui hay dos cosas importantes:
A.Como se invoca un dato almacenado en un recordset: como se dio cuenta invocando el nombre del campo (RegDatos("Campo 1")), o se podria tambien por el ordinal del campo, es decir cuando se hace una consulta de sql, y se coloca campos separados por comas, cada una le correspondera un numero empezando en cero y en orden entonces el primer campo de la consulta sql se podria invocar tambien RegDatos(0), pero esto se hace cuando con pocos los campos a trabajar y se conoce en que posicion esta cada uno. OJO que aqui el numero va sin comillas, como no ocurre al invoicar el nombre del campo debe ir entre comillas.

B.en este ejemplo se iguala el campo a:
'" & RegDatos("Campo 1") & "'.
Se supone aqui que es texto, entonces recuerdelo que le dije de los campos texto, va entre comillas sencillas.Pero como se debe igualar a un dato de una variable, y no se a dado cuenta va entre una variable tipo cadena, entonces se debe colocar entre los signos & " VariableAUtilizar " &, no se le olvide de como se tratan los datos de tipo numerico y fecha, por eso les coloque estos ejemplos.

IMPORTANTE: Al actualizar una tabla por Update y si no se especifica que registro es, osea sino se filtra, entonces ACTUALIZARA TODOS LOS REGISTROS, por eso se debe colocar una condicion para especificar cual registro es (condicion con where)....

Ahora si son varias tablas repite este procediemto varias veces, segun el numero de tablas...

ESO ES TODO........
Pues no se si te complique............pero me avisas como le va.y no te preucupes te sigo ayudando.

Att:TELEMACO
03/11/2005
charrogar, experto respondiendo en Microsoft Access
Experto
Hola:

No se te olvide finalizar la pregunta.

Gracias
11/01/2006
charrogar, experto respondiendo en Microsoft Access
Experto
hola:

No se te olvide finalizar la pregunta.

Gracias
11/01/2006
charrogar, usuario preguntando en Microsoft Access
Usuario
Muy Bien. Me ha sido de gran utilidad
Enlaces patrocinados