Оптимизация выполения импорта из Excel в Access.

Alexanderik
Дата: 31.05.2004 12:18:07
Скажите мой вариант кода, очень длителен при выполнении.
можно его как то оптимизировать. или нужен другой подход к делу.
Я использовал операцию чтения из xls файла последовательно.
Но на это уходит при базе 300 строк - 20 секунд. Мне кажется долго.

Dim MyRst As Recordset
Set dbDatabase = CurrentDb     'CreateDatabase(sNewDBPathAndName, dbLangGeneral, dbEncrypt)
Set MyRst = dbDatabase.OpenRecordset("select * from NewInvoice")
Dim x, y As Variant

y = 2   ' 1 - headers
While y < 240
'MsgBox y, vbApplicationModal
 MyRst.AddNew
 MyRst![Job] = WS.Cells(y, 2)
'.
'.
'.
'.
'.
'.
 MyRst![TotalCost] = WS.Cells(y, 14)
MyRst.Update
y = y + 1
Wend

MyRst.Close
Set dbDatabase = Nothing
Time2 = Timer()
MsgBox "New .MDB Created - '" & sNewDBPathAndName & "'=" & y & " records", vbInformation
MsgBox Time2 - Time
Alexanderik
Дата: 31.05.2004 12:23:20
вот еще вариант - но тут надо как то шапку менять.

Public Sub ImportXLS()
DoCmd.TransferSpreadsheet acImport, _
acSpreadsheetTypeExcel97, "NewInvoice2", "C:\EXPORT\INVOICE.xls", False, "A2:N230"
End Sub
kedzo
Дата: 31.05.2004 13:09:26
я не понял зачем тип у переменных - Variant. Поставь - целое - может ускорит?
Galustov
Дата: 31.05.2004 13:10:27
а что import не устраивает?
Alexanderik
Дата: 31.05.2004 13:16:47
import устраивает - только тут проблема с форматами возникает.
Если HasField = True , создаются поля, но тогда не происходит импорт из-за ошибки форматов. Ошибочные типы устанавливаются в таблицу.
И шапку менять как то проблематично.

2kedzo.
Нет работает также.
В любом случае быстрее чем For..Next
Hummer
Дата: 31.05.2004 13:31:05
Тут можно почитать о сравнении методов экспорта данных.