Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обновление БД Access [D7, Access]


DimonS ©   (2007-02-14 09:36:00) 

Доброго дня всем, и с праздником тоже :)

Такой вопрос возник при обновлении таблиц Access, находящихся в разных mdb-файлах.

Пишу такой запрос.

INSERT INTO Autos (Code, Number1, Number2, StateNo, BoxNo, Model ) IN 'D:\Dispatcher.mdb'
SELECT Code, Number1, Number2, StateNo, BoxNo, Model
FROM Autos AS AA IN 'D:\BD\Dispatcher.mdb';


Запрос выполняется, нормально. Но здесь поле Code ключевое, и изменять его нельзя, т.е. если в первой таблице есть такой номер записи, то ее нужно пропустить, не вставлять. Если дописать в конце запроса:

WHERE Code<>AA.Code,

то не вставляется вообще ни одна запись, даже если такой и нет в таблице.
Как обойти такой трабл? Перебором записей в выборке не особо хочется делать, одним запросом в любом случае намного быстрее выполняется.


Sergey13   (2007-02-14 10:59:00) [1]

> [3] DimonS ©   (14.02.07 10:50)

INSERT INTO Autos (Code, Number1, Number2, StateNo, BoxNo, Model ) IN 'D:\Dispatcher.mdb'
SELECT Code, Number1, Number2, StateNo, BoxNo, Model
FROM Autos AS AA IN 'D:\BD\Dispatcher.mdb';
WHERE not exists (select 1 from Autos IN 'D:\Dispatcher.mdb' A1 where A1.Code<>AA.Code)

Как то так.
С синтаксисом аксеса не дружу. 8-)


DimonS   (2007-02-14 10:50:00) [2]


> Sergey13 ©   (14.02.07 09:42) [1]


> Надо отсеивать ненужные в самом селективном запросе отдельно,
>  например с помощью exists.


А как можно отсеить их? Или перед вставкой нужно сравнить обе таблицы друг с другом и выбрать нужные для вставки записи? Тогда как это сделать? Вряд ли, наверное, одним запросом можно сделать и сравнение и вставку?


Sergey13   (2007-02-14 09:44:00) [3]

> не видит вставляемую таблицу.

в смысле ту в которую идет вставка


Sergey13   (2007-02-14 09:42:00) [4]

Селективный запрос не видит вставляемую таблицу. Надо отсеивать ненужные в самом селективном запросе отдельно, например с помощью exists.


Наверх

Титульная страница Поиск, карта сайта Написать письмо