|
Выполнить запрос из внешнего приложения
|
|||
---|---|---|---|
#18+
Привет всем! Пишу приложение на Vb, из него надо выполнить сохраненный запрос вида Insert into ... Select Запрос обновляет таблицу со сложным ключом и вставляет только несовпадающие записи. Если выполнять его из интерфеса Access - он ругается на то, что ошибка вставки, дескать, не все данные будут вставлены и прочая, но тем не менее в итоге данные вставляет. Если же пытаться выполнитье го из внешнего приложения (через adodb.connection.execute, получаю просто номер ошибки, данные не добавляются). Подскажите, пожалуйста, где копать, чтобы все-таки вставить данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2015, 14:57 |
|
Выполнить запрос из внешнего приложения
|
|||
---|---|---|---|
#18+
fundddЗапрос обновляет таблицу со сложным ключом и вставляет только несовпадающие записи. Ну так откорректируйте запрос так, чтобы записи, вызывающие ошибку дублирования ключа, отсеивались секцией отбора. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2015, 15:12 |
|
Выполнить запрос из внешнего приложения
|
|||
---|---|---|---|
#18+
Э нет :) В этом как раз таки и есть фишка этого запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 06:05 |
|
Выполнить запрос из внешнего приложения
|
|||
---|---|---|---|
#18+
fundddЭ нет :) В этом как раз таки и есть фишка этого запроса. Фишка в вашем не правильном запросе? Жесть. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 06:36 |
|
Выполнить запрос из внешнего приложения
|
|||
---|---|---|---|
#18+
А с чего вы взяли, что он неправильный? Обычное дело - запрос на обновление (записать в таблицу A записи из таблицы B, в таблице A отсутствующие). NOT IN слишком ресурсоемкий метод. Впрочем, я не настаиваю. Подскажите, какой запрос будет более праивльный? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 06:43 |
|
Выполнить запрос из внешнего приложения
|
|||
---|---|---|---|
#18+
fundddА с чего вы взяли, что он неправильный? Обычное дело - запрос на обновление (записать в таблицу A записи из таблицы B, в таблице A отсутствующие). NOT IN слишком ресурсоемкий метод. Впрочем, я не настаиваю. Подскажите, какой запрос будет более праивльный? Вы придумали сложный ключ. Мы о нем ничего не знаем. Мы даже не знаем схему вашей судя по всему псевдобазы. >>Обычное дело - запрос на обновление (записать в таблицу A записи из таблицы B, в таблице A отсутствующие) Впечетлило. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 07:22 |
|
Выполнить запрос из внешнего приложения
|
|||
---|---|---|---|
#18+
fundddОбычное дело - запрос на обновление (записать в таблицу A записи из таблицы B, в таблице A отсутствующие). Обычное дело-житейское. Чё в форум писать. Оно же "обычное". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 07:30 |
|
Выполнить запрос из внешнего приложения
|
|||
---|---|---|---|
#18+
fundddЕсли выполнять его из интерфеса Access - он ругается на то, что ошибка вставки, дескать, не все данные будут вставлены и прочая, но тем не менее в итоге данные вставляет. Если же пытаться выполнитье го из внешнего приложения (через adodb.connection.execute, получаю просто номер ошибки, данные не добавляются). Угу. Аксесс - не только БД, но и интерфейс. И может себе позволить вставку по одной записи. ADODB - нет. fundddгде копать, чтобы все-таки вставить данные? Вариантов несколько. Первый вариант - это сохранение данных во временную таблицу, и затем вставка из неё только уников. Вряд ли выиграете по времени, но точно выиграете по ресурсам. Второй - отказаться от ADO и порулить Access.Application. Третий (и самый имхо правильный) - всё-таки переделать запрос. А чтобы WHERE NOT IN не создавало избыточной нагрузки - убрать по возможности отсев дублей в основной селект частными условиями. Можно понапридумывать и ещё вариантов - только лень дурь генерить. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 09:12 |
|
Выполнить запрос из внешнего приложения
|
|||
---|---|---|---|
#18+
Давайте с начала. У вас приложение на Vb, использующее MDB/AccDB в качестве хранилища? Таблица-источник и таблица-получатель находятся в одном файле? Как выглядит сложный ключ? Это одно поле или несколько? Классическое решение ("Записи без подчиненных") для Jet: Код: plsql 1.
Другой вариант (если NOT IN слишком ресурсоемкий) использовать Not EXISTS. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 11:41 |
|
Выполнить запрос из внешнего приложения
|
|||
---|---|---|---|
#18+
Анатолий, Акина, спасибо! Вариант Анатолия очень изящный, его и возьму на вооружение, спасибо еще раз! Рой, нам грубиянов не надо. Мы и сами грубияны. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2015, 16:05 |
|
Выполнить запрос из внешнего приложения
|
|||
---|---|---|---|
#18+
fundddЗапрос обновляет таблицу со сложным ключом и вставляет только несовпадающие записи. Зло скорее всего тут : со сложным ключом Если этот ключ так дорог (без подагры уже никак, привычка) - можно его и оставить... 1. На стороне, которая генерирует записи добавляем поле счетчик. 2. На стороне, которая принимает записи добавляем поле длинное целое (для хранения зн. счетчика из п.1). Каждый раз импортируем только те записи, значения счетчика которых в генераторе больше максимального длинного целого в приемнике на момент импорта. Есть конечно нюансы: - ничего не известно по генератор (возможно для него сделать счетчик не судьба и нужны надстройки на том же vb) - если генератор не один, нужно добавлять еще и в приемник и в генераторы поле признака генератора... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2015, 09:47 |
|
Выполнить запрос из внешнего приложения
|
|||
---|---|---|---|
#18+
fundddОбычное дело - запрос на обновление (записать в таблицу A записи из таблицы B, в таблице A отсутствующие). Согласен, за исключением - того, что запрос на добавление... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2015, 10:38 |
|
|
start [/forum/topic.php?fid=45&msg=39078224&tid=1614412]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 326ms |
total: | 462ms |
0 / 0 |