|
|
|
Грамотно организовать транзакции... (Волшебная сила dbFailOnError)
|
|||
|---|---|---|---|
|
#18+
Господа, простите за назойловость, нет раз уже была затронута эта тема, но так и никто толком непояснил. Проблема такова: 1. DoCmd.RunSQL и DoCmd.OpenQuery - эти запросы опасные, поясняю: допустим если я запускаю запрос на добавление, и он ловит ошибку в таких случаях когда он неможет добавить все записи (по различным причинам), он запрашивает в диалоговом окне типа Игнорировать или нет - а это не есть хорошо. Если отключить вывод подобного сообщения то он вообще и неспросить и сделает свое игнорировав при этом те записи которые по какаим либо причинам не могут добавиться в Table. 2. CurrentDB.Execute - вообще не задает никаких вопросов, выполняя запрос игнорируе те записи которые не могут добавиться в Table. 3. Применять CurrentProject.Connection.Execute (то бишь через объекты ADO) - я этим только и пользуюсь, но он не любит заготовленные запросы. Сам я решаю проблемы так, создаю Table временный туда закачиваю данные через обычный DoCmd.RunSQL, только потом объявив транзакцию через CurrentProject.Connection.Execute запускаю групповую операцию. Неустраивает то, что данных может быть много, и базу приходиться всё время сжимать после подобных операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 12:18:49 |
|
||
|
Грамотно организовать транзакции... (Волшебная сила dbFailOnError)
|
|||
|---|---|---|---|
|
#18+
Мне кажется что ты не туда роешь. Зачем запускать запрос, который не может (по различным причинам) добавить записи из-за ошибки данных? А когда у тебя данные оказались во временной таблице, откуда уверенность, что там все записи (или они правильные)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 12:31:05 |
|
||
|
Грамотно организовать транзакции... (Волшебная сила dbFailOnError)
|
|||
|---|---|---|---|
|
#18+
Мудрый клён2. CurrentDB.Execute - вообще не задает никаких вопросов, выполняя запрос игнорируе те записи которые не могут добавиться в Table. Слухай, дерево, ты справку умеешь читать? CurrentDB.Execute "трампампам" , dbFailOnError интересно, сколько сот раз я уже это сказал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 12:36:51 |
|
||
|
Грамотно организовать транзакции... (Волшебная сила dbFailOnError)
|
|||
|---|---|---|---|
|
#18+
при этом вообще непонятно - с какой радости транзакции в названии темы. как переименовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 12:37:54 |
|
||
|
Грамотно организовать транзакции... (Волшебная сила dbFailOnError)
|
|||
|---|---|---|---|
|
#18+
Лох Позорныйпри этом вообще непонятно - с какой радости транзакции в названии темы. как переименовать? переименуй в <<Волшебная сила dbFailOnError>> сделано ЛП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 12:48:30 |
|
||
|
Грамотно организовать транзакции... (Волшебная сила dbFailOnError)
|
|||
|---|---|---|---|
|
#18+
DafМне кажется что ты не туда роешь. Зачем запускать запрос, который не может (по различным причинам) добавить записи из-за ошибки данных? Дело в том что я произвожу импорт данных с Excelя в базу, я неуверен что всегда данные будут удовлетворять условиям. Daf А когда у тебя данные оказались во временной таблице, откуда уверенность, что там все записи (или они правильные)? предварительно произвожу анализ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 14:48:35 |
|
||
|
Грамотно организовать транзакции... (Волшебная сила dbFailOnError)
|
|||
|---|---|---|---|
|
#18+
Мудрый клёнДело в том что я произвожу импорт данных с Excelя в базу, я неуверен что всегда данные будут удовлетворять условиям. А как ты импортируешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 14:55:25 |
|
||
|
Грамотно организовать транзакции... (Волшебная сила dbFailOnError)
|
|||
|---|---|---|---|
|
#18+
Daf Мудрый клёнДело в том что я произвожу импорт данных с Excelя в базу, я неуверен что всегда данные будут удовлетворять условиям. А как ты импортируешь? 1. связываю лист excel. 2. создаю временную таблицу (так как в дальнейшем удобно производить групповую операцию, объявив транзакцию). 3. закачиваю с помощью DoCmd.OpenQuery "запрос1". 4. спокойной душой объявив транзакцию начинаю закачивать в осн. Table и таблицы справочники, если какой нибудь зихер, то транзакция не завершается и культурным образом ADО мне дает сообщение об ошибке. Попытки: на 2 этапе пробовал уже в временной таблице создавать уникальные индексы, затем пробовать закачивать туда данные, чтобы лишний раз не производить анализ данных. Но ДЫРА как и DoCmd.RunSQL так и DoCmd.OpenQuery при зихере выводит сообщение с возможностью игнорировать ошибочные записи. Получается что если глупый юзер нажимает на кнопку Да, то добавятся только часть данных (не зихерные). Поэтому господа я запрашивал у Вас как избежать таких проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 15:34:20 |
|
||
|
Грамотно организовать транзакции... (Волшебная сила dbFailOnError)
|
|||
|---|---|---|---|
|
#18+
использовать CurrentDB.Execute, то коннекшн получается не текущий а к Excelю. Конечно буду следовать вашим советам, проэксперементирую на CurrentDB.Execute, только не CurrentDB, а Connect на Excel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 15:38:13 |
|
||
|
Грамотно организовать транзакции... (Волшебная сила dbFailOnError)
|
|||
|---|---|---|---|
|
#18+
Я добавил вопрос 33: http://www.sql.ru/faq/faq_topic.aspx?fid=213 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 15:43:05 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=45&tid=1670164]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 371ms |

| 0 / 0 |
