ACCESSoTOTAL / Dudas

En este repositorio resolvemos tus dudas sobre los proyectos que estás realizando en Access y VBA
1 stars 1 forks source link

Uso de DoCmd.TransferSpreadsheet acImport #26

Closed DavidSpain23 closed 1 year ago

DavidSpain23 commented 1 year ago

Descripción del problema: Buenos días. He podido comprobar que cuando uso el comando TrasnferSpreadsheet en un modulo, por ejemplo al pulsar un botón, si lo hago varias veces consecutivas, pulsando el botón varias veces, sobre la misma tabla y la tabla está abierta o está usada por alguna consulta presente en el formulario, se duplican los datos de la tabla. ¿Hay alguna forma de evitar eso?

Código:

        Ruta = "C:\GPC_DIV\"

        'IMPORTO Los datos de Materiales
        Extracción = "ConsultaMATERIALES.xls"
        On Error Resume Next
        DoCmd.DeleteObject acTable, "TOTAL_PETICION_MATERIALES"
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "TOTAL_PETICION_MATERIALES", Ruta & Extracción, True, "A:M" 'A:M es el rango que importo


**Captura de pantalla:**
En la tabla se duplican los datos porque hay una consulta en el formulario que filtra sobre la tabla

**Archivos:**
No es necesario
DavidSpain23 commented 1 year ago

Buenas a todos. Lo he resuelto de esta forma:

        'Borro los registros de la tabla
        sql = "delete * from [1_COMPROMETIDO ODM ALTAMIRA]"
        CurrentDb.Execute sql
        'Cargo la tabla
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "1_COMPROMETIDO ODM ALTAMIRA", Ruta & Extracción, True, "A:AC"

De esta forma no duplica los registros cuando las tablas tienen relaciones activas y consultas que las leen en el mismo formulario.

Gracias de todas formas.