Importación de tablas

Oscar mi pregunta es, tengo un formulario que me permite importar tablas que uso en otros formularios que ya existen, la idea es que al importar la tabla me reemplace la existente y no me la renombre, ¿se puede hacer esto en access?

1 respuesta

Respuesta
1
La verdad. Siéndote sincero, no entiendo muy bien en tu mensaje lo que quieres hacer, ni cómo lo estas haciendo...
Pero, independientemente, según la idea que he cogido de lo que preguntas se me ocurre lo siguiente: ¿Te serviría con controlar por código, antes de importar cada tabla, y eliminar la tabla que exista con el mismo nombre que la que vas a importar?
Si la respuesta es afirmativa es tan sencillo como usar algo así:
On Error Resume Next
DoCmd.RunSql "DROP TABLE [NombreDeLaTablaEnCuestion]"
... Importacion de la nueva...
De este modo, si existe la tabla la eliminará, y si no existiera el On Error controlaría el error sin mostrarte ningún mensaje, pasando automáticamente a la siguiente sentencia de código.
Espero que esto solucione tu problema. Si tienes alguna duda o consulta no dudes en hacérmela llegar.
Hola oscar, el tema es que tengo una tabla feriantes, sin datos, y otra que es casi toda igual pero con muchos datos ya cargados, desde mi aplicación quiero traer a mi tabla vacía todos los datos de la otra tabla, la única diferencia es que mi tabla vacía tengo otras relaciones y clave primaria que en la que esta llena, la idea seria traer solamente los datos de la otra tabla y que me respete la relaciones y claves de la que tengo en mi aplicación
los campos son los mismos en las 2 tablas, y que si algún registro no tiene null en la clave primaria no lo traiga
desde ya muchas gracias y espero tu respuesta ya que es un poco urgente.
Lo que quieres hacer, por lo que indicas, es una consulta de "Datos Anexados".
Tienes dos opciones de hacer lo que quieres:
1º Si es un volcado de datos puntual que vas a realizar tu manualmente, debes utilizar una CONSULTA de DATOS ANEXADOS. Crear una consulta de este tipo e indicar en criterios que non te vuelque los registros que no tengan Null en la clave primaria.
2º Por codigo, utilizando DoCmd. RunSql "SentenciaSql".
Si la que te interesa es la segunda, yo puedo hacerte la sentencia; es decir, la linea de código que deberías poner, pero para ello necesitaría que me indicaras concretamente: Nombres de Tabla Origen y Fin, nombres de los campos de las tablas, nombre del campo donde mirar si es o no Null para importarlo o no.
Espero tu respuesta respecto a la segunda opción, si es la que necesitas, para indicarte como hacerlo.
Tengo dos c:\datos\base1.mdb y c:\nueva\base2.mdb la tabla feriantes1 en la tabla1 y feriantes2 en la tabla2 ambas tablas tienen los mismos campos campo1, campo2, campo3, campo4, campo5 mi clave primaria es campo1+campo2, quiero anexar todos los datos de la tabla feriantes1 de la base1 a los datos que tengo en la tabla feriantes2 de la base2 solo quiero los datos, la estructura, porque, relaciones, son los presentes en la tabla feriantes2 de la base2(esta base2 es la de mi aplicación )
Las tuplas que tienen null en la porque no tendrían que anexarse
gracias por tus molestias y espero tu respuesta
Te voy a explicar como deberías hacerlo en tu casado concreto:
1º En la "Base2" vincula (ARCHIVO/OBTENER DATOS EXTERNOS/VINCULAR) la tabla "Feriantes1" de la "Base1". De esta forma ya podremos utilizarla en la "Base2" como si en esta base de datos estuviera.
2º Tienes dos opciones para hacer lo que necesitas:
a/ Crear una nueva consulta de tipo "Datos Anexados" en la que defines la tabla origen, la tabla destino, y las condiciones (lo de que los campos clave sean o no Null), de tal formar que al ejecutar esta consulta se realice la inserción de datois correspondiente. La sentencia SQL de esa consulta sería:
INSERT INTO Feriantes2 ( Campo1, Campo2, Campo3, Campo4, Campo5 )
SELECT Feriantes1.Campo1, Feriantes1.Campo2, Feriantes1.Campo3, Feriantes1.Campo4, Feriantes1.Campo5
FROM Feriantes1
WHERE ((Not (Feriantes1.Campo1) Is Null) AND (Not (Feriantes1.Campo2) Is Null));
b/ Utilizar código, implementado en el evento click de un botón o similar, que haga este proceso. Si esta es la opción que vas a utilizar, el código sería como este:
DoCmd.SetWarnings False
DoCmd. RunSQL "INSERT INTO Feriantes2 ( Campo1, Campo2, Campo3, Campo4, Campo5 ) SELECT Feriantes1.Campo1, Feriantes1.Campo2, Feriantes1.Campo3, Feriantes1.Campo4, Feriantes1.Campo5 FROM Feriantes1 WHERE ((Not (Feriantes1.Campo1) Is Null) AND (Not (Feriantes1.Campo2) Is Null));"
DoCmd.SetWarnings True
La unica observacion al respecto de ambos casos es que, si los registros que vas a importar desde Feriantes1 ya existen en Feriantes2 y quieres sobreescribirlos, lo que tendras que hacer es previamente a hacer la importacion (cualquiera de los dos casos que te propongo), deberás eliminar los registros de Feriantes2 que coincidan por los campos clave con los datos de Feriantes1. En el segundo ejemplo, el codigo completo seria algo asi como:
DoCmd.SetWarnings False
'Borramos los que queramos sobreescribir al coincidir sus campos clave
DoCmd.RunSQL "DELETE Feriantes2.*, Feriantes1.Campo1, Feriantes1.Campo2, Feriantes2.Campo1, Feriantes2.Campo2 FROM Feriantes2 RIGHT JOIN Feriantes1 ON (Feriantes2.Campo2 = Feriantes1.Campo2) AND (Feriantes2.Campo1 = Feriantes1.Campo1);"
'Insertamos los registros de Feriantes1
DoCmd. RunSQL "INSERT INTO Feriantes2 ( Campo1, Campo2, Campo3, Campo4, Campo5 ) SELECT Feriantes1.Campo1, Feriantes1.Campo2, Feriantes1.Campo3, Feriantes1.Campo4, Feriantes1.Campo5 FROM Feriantes1 WHERE ((Not (Feriantes1.Campo1) Is Null) AND (Not (Feriantes1.Campo2) Is Null));"
DoCmd.SetWarnings True
Con esto creo que se soluciona perfectamente tu problema, no ¿?...
Un saludo y ya sabes donde encontrarme para lo que necesites. Si tienes algún problema o duda, ya sabes... Cuidate!
Óscar L.M.V.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas