Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вставка записи 2002
 
 автор: alecks_lp   (21.06.2007 в 09:23)   личное сообщение
 
 

Заполняю таблицу из файла
Do While...
...
strSQL = "INSERT INTO tblMyTable1 …;"
Db.Execute strSQL
Loop
Если нарушены условия уникальности индекса, то запись не вставляет и сообщение об ошибке не выдает, а передает управление циклу. Тогда есть проблемы подсчета количества добавленных (пропущенных) строк.
Вопрос: как отловить пропуск вставки строки при нарушении уникальности индекса?

  Ответить  
 
 автор: osmor   (21.06.2007 в 10:32)   личное сообщение
 
 

Используйте

Db.Execute strSQL, dbFailOnError

  Ответить  
 
 автор: alecks_lp   (21.06.2007 в 11:35)   личное сообщение
 
 

Сработало!
Тогда еще вопрос! Если в таком цикле использовать 'AddNew Method & Update Method (ADO)', то при количестве записей >> 150.000 цикл заметно притормаживает. В тоже время 'INSERT INTO' продолжает работать без замедления(заметного). Почему?

  Ответить  
 
 автор: osmor   (21.06.2007 в 12:48)   личное сообщение
 
 

используются разные механизмы, в одном случае открывается рекодсет, в дрогум нет.
на SQL.ru тут как-то очень обширная дискуссия была по этому поводу. так там утверждалось что
AddNew значительно быстрее. причем в DAO быстрее чем в ADO.
тут мное зависит от того как отрывать рекордсет и как мерять
например если открывать рекордсет с Where что бы не попадало никаких записей, (select * from tabl where 1=2), то это будет быстрее. Опять же тип рекордсета имеет значение табличный вроде как быстрее всего на добавление.
Лично я предпочитаю execute "Insert....

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList