Цитата:
Сообщение от
blokva
Да это тупое последовательное открытие листов, пробегание по строкам, проверка на наличие такой строки в таблице Аксапты и в случае отсутствия, инсерт строки в таблицу.
Я думаю, что можно обойтись без "тупого перебора" пяти листов, а воспользоваться всей мощью нормального SQL по отношению к листам Excel и получить весь желаемый рекордсет перед загрузкой в Аксапту - сразу по всем листам и в уникально-сгруппированном виде. Правда, придется философски переосмыслить и видоизменить класс
gl00mie, потому что нужно иметь возможность задания произвольной строки SQL, а в данный момент класс пока ориентирован на пробег по одному листу, имя которого подставляется в зашитый SELECT:
Код:
rstExcel.Open(@"SELECT * FROM [" + strSheetName + @"$]",
cnnExcel, nCursorType)
а нам нужно иметь возможность придать этому оператору примерно следующий вид (для данного конкретного случая):
Код:
rstExcel.Open(@"SELECT * FROM [Лист1$] UNION " +
@"SELECT * FROM [Лист2$] UNION " +
@"SELECT * FROM [Лист3$] UNION " +
@"SELECT * FROM [Лист4$] UNION " +
@"SELECT * FROM [Лист5$] ",
cnnExcel, nCursorType)
В общем, стратегия такая. Воплотите и будет вам хорошее счастье, думаю, существенно более быстрое, чем 790 секунд