Pregunta

Tengo un conjunto de registros que contiene todos los datos necesarios para importar a un archivo de Excel. ¿Hay alguna manera de clonar mi conjunto de registros en vivo en el creado al abrir un archivo de Excel?

Esto es lo que estoy tratando ahora sin suerte.

Dim connection : Set connection = Server.CreateObject("ADODB.Connection")

connection.Open "Driver={Microsoft Excel Driver (*.xls)}; DriverId=790; 
                 Dbq=c:\MyExcel.xls;" & _
                "DefaultDir=c:\; ReadOnly=False;"
Dim excelRecordset : Set excelRecordset = Server.CreateObject("ADODB.Recordset")
excelRecordset.Open "[SHEET1$]", connection, 2, 3

excelRecordset.AddNew
Set excelRecordset = recordset.clone

excelRecordset.Update
excelRecordset.Close

Gracias.

¿Fue útil?

Solución

Al hacer esto: -

Set excelRecordset = recordset.clone

sustituir la referencia al conjunto de registros abierto en la hoja de cálculo Excel (y cierra) con una referencia al nuevo conjunto de registros. Este nuevo conjunto de registros no es de ninguna manera conectado a la hoja de cálculo Excel.

El uso de conjuntos de registros que en realidad no tiene más remedio que For Each a través del conjunto de registros de origen, AddNew en el destino, asignar a cada campo del origen al destino y Update.

Otros consejos

Los objetos Range Excel tienen un método CopyFromRecordset que debe hacer el trabajo. Si se puede crear un objeto Excel.Application y abra el libro que desea escribir, entonces debería ser capaz de utilizar este.

Así que si el conjunto de registros existentes se nombra rs y haya sido rellenada, el código en VBA sería:

Worksheets("SHEET1").Cells(2, 1).CopyFromRecordset rs

A continuación, puede iterar sobre rs.Fields para llenar los nombres de los campos

Dim fld As Field
Dim i As Integer
i = 1
With Worksheets("SHEET1")
    For Each fld in rs.Fields
        .Cells(1, i).Value = fld.Name
        i = i + 1
    Next fld
End With

No está seguro de lo fácil que sería para traducir a su escenario sin embargo.

Como alternativa, si está disponible con el controlador que está utilizando, es posible que desee ver en la sintaxis y SELECT INTO INSERT INTO se describe en este artículo de Knowledge Base

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top