Tengo 5 tablas en una misma BD y con la misma estructura, quisiera que desde un botón de comando una de ellas se actualizase con los datos de las otras 4
1 respuesta
Respuesta de telemaco
1
1
telemaco, He trabajado 5 años desarrollando aplicaciones tanto en access...
Se podría hacer una consulta de actualización donde se relacionen las 4 tablas, y me actualice los campos que se necesitan en la tabla modificada... pero el problema seria la relación de las tablas... ya que tendría que ser uno a uno las relaciones para que no me votaran más de un registro... Entonces, cual seria la solución... me imagino que sabes utilizar recordset y consultas de sql, tendrías 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 así,... ******************** 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). Aquí 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 podría también por el ordinal del campo, es decir cuando se hace una consulta de sql, y se coloca campos separados por comas, cada una le corresponderá un numero empezando en cero y en orden entonces el primer campo de la consulta sql se podría invocar también RegDatos(0), pero esto se hace cuando con pocos los campos a trabajar y se conoce en que posición esta cada uno. OJO que aquí 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 aquí que es texto, entonces recuérdelo 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 ha 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 numérico 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 condición para especificar cual registro es (condición con where)... Ahora si son varias tablas repite este procediemto varias veces, según el numero de tablas... Eso es todo... Pues no se si te complique... pero me avisas como le va. Y no te preocupes te sigo ayudando. Att:TELEMACO