![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите в чем ошибка в запросе на вставку [D6, XP]
DimonS © (2006-10-09 08:38:00)Нужно из файла mc502.dbf вставить поля TabN и FIO в таблицу FIO (поля Tn,FIO). Пишу так (в самом Access-е):
insert into FIO in [Tn,FIO] select [TabN,FIO] from ''D:\mc502.dbf''
При выполнении пишет: Неполное предложение запроса.
Что-то не пойму, где копать, подскажите, в чем апшипка.
Пример брал отсюда:
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/office97/html/output/F1/D2/S5A32B.asp
Multiple-record append query:
INSERT INTO target [IN externaldatabase] [(field1[, field2[, ...]])]
SELECT [source.]field1[, field2[, ...]
FROM tableexpression
DimonS (2006-10-10 01:55:00) [1]
> Сомнительно, что бы not exist подзапрос выдавал такую ошибку.
Но, как ни странно, выдает...
Sergey13 (2006-10-09 11:04:00) [2]> [18] DimonS © (09.10.06 10:56)
Сомнительно, что бы not exist подзапрос выдавал такую ошибку.
DimonS (2006-10-09 10:56:00) [3]В смысле дал название таблицы, только не N, а B :)
Пробовал и твой вариант скопировать - то же самое.
Sergey13 (2006-10-09 10:52:00) [4]> [16] DimonS © (09.10.06 10:48)
А как ты конкретно "так примерно и сделал" ?
DimonS (2006-10-09 10:48:00) [5]А если таблица заполнена - то ошибка: Данный подзапрос должен возвращать не больше одной записи!
DimonS (2006-10-09 10:37:00) [6]Да, я так примерно и сделал.
Но что-то не то - ничего не вставляет в пустую таблицу...
Sergey13 (2006-10-09 10:29:00) [7]> [13] DimonS © (09.10.06 10:26)
Я вроде перепутал. Как то так.
FROM mc502.dbf NIN 'D:\'[dBase IV;] where not exist (select 1 from FIO f1 where f1.TN=N.TabN)
DimonS (2006-10-09 10:26:00) [8]
> where not exist (select 1 from FIO f1 where f1.TN=FIO.TN)
Тогда ругается на FIO.TN - не имеет значения по умолчанию :)
Sergey13 (2006-10-09 10:16:00) [9]> where Tn<>(select Tn from FIO)
where not exist (select 1 from FIO f1 where f1.TN=FIO.TN)
DimonS (2006-10-09 10:13:00) [10]Вопрос в догонку.
Что нужно дописать, чтобы дописывались только новые записи? Т.е. обновлять базу.
Пишу так:
INSERT INTO FIO ( Tn, FIO ) IN 'C\Bonus.mdb'
SELECT TabN, FIO
FROM mc502.dbf IN 'D:\'[dBase IV;] where Tn<>TabN
естественно, ошибка: Поле Tn не имеет значения по умолчанию.
А если так:
INSERT INTO FIO ( Tn, FIO ) IN 'C\Bonus.mdb'
SELECT TabN, FIO
FROM mc502.dbf IN 'D:\'[dBase IV;] where Tn<>(select Tn from FIO)
то ничего не вставляется. Как будет правильно?
DimonS (2006-10-09 09:37:00) [11]Все, вопрос снят!
INSERT INTO FIO ( Tn, FIO ) IN 'C\Bonus.mdb'
SELECT TabN, FIO
FROM mc502.dbf IN 'D:\'[dBase IV;];
Работает на ура :)
DimonS (2006-10-09 09:24:00) [12]Вот, вроде бы тоже самое:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=40317
Но вот не прокатывает...
DimonS (2006-10-09 09:22:00) [13]
> Sergey13 © (09.10.06 09:18) [6]
Да, разнотипные.
Вроде бы можно, читал, что должно прокатить. Компоненты - ADO.
DimonS (2006-10-09 09:21:00) [14]Кстати, если запустить запрос из дельфей:
ADOCom.CommandText:=insert into FIO(Tn,FIO) select TabN,FIO from ''D:\mc502.dbf'''';
ADOCom.Execute;
выскакивает ошибка: Неправильно определен объект Parametr. Недопустимые или неполные сведения.
Это одно и тоже, вроде бы?
Sergey13 (2006-10-09 09:18:00) [15]> Нужно из файла mc502.dbf вставить поля TabN и FIO в таблицу
> FIO (поля Tn,FIO). Пишу так (в самом Access-е):
Так у тебя разнотипные БД? Не заметил сначала.
Тогда такое вряд прокатит. Компоненты доступа какие? В BDE возможны гетерогенные запросы.
DimonS (2006-10-09 09:10:00) [16]
> Sergey13 © (09.10.06 09:08) [4]
Пробовал так - Неполное предложение запроса. Не получается.
Sergey13 (2006-10-09 09:08:00) [17]> [3] DimonS © (09.10.06 08:48)
insert into FIO(Tn,FIO) select TabN,FIO from ''D:\mc502.dbf''
DimonS (2006-10-09 08:48:00) [18]Если смотреть пример, то надо, наверное, так:
insert into FIO in Tn[,FIO] select TabN,FIO from ''D:\mc502.dbf''
Но тоже - Неполное предложение запроса.
DimonS (2006-10-09 08:44:00) [19]Если их не ставить - ругается на запятую. Как правильно?
Ketmar (2006-10-09 08:41:00) [20]и что ты хотел сказать квадратными скобками в запросе?