| |
|
|
| | Заполняю таблицу из файла
Do While...
...
strSQL = "INSERT INTO tblMyTable1 …;"
Db.Execute strSQL
Loop
Если нарушены условия уникальности индекса, то запись не вставляет и сообщение об ошибке не выдает, а передает управление циклу. Тогда есть проблемы подсчета количества добавленных (пропущенных) строк.
Вопрос: как отловить пропуск вставки строки при нарушении уникальности индекса? | |
| |
| |
| |
|
|
| | Используйте
Db.Execute strSQL, dbFailOnError
|
| |
| |
| |
| |
|
|
| | Сработало!
Тогда еще вопрос! Если в таком цикле использовать 'AddNew Method & Update Method (ADO)', то при количестве записей >> 150.000 цикл заметно притормаживает. В тоже время 'INSERT INTO' продолжает работать без замедления(заметного). Почему? | |
| |
| |
| |
|
|
| | используются разные механизмы, в одном случае открывается рекодсет, в дрогум нет.
на SQL.ru тут как-то очень обширная дискуссия была по этому поводу. так там утверждалось что
AddNew значительно быстрее. причем в DAO быстрее чем в ADO.
тут мное зависит от того как отрывать рекордсет и как мерять
например если открывать рекордсет с Where что бы не попадало никаких записей, (select * from tabl where 1=2), то это будет быстрее. Опять же тип рекордсета имеет значение табличный вроде как быстрее всего на добавление.
Лично я предпочитаю execute "Insert.... | |
| |
| |