Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.29;
Скачать: CL | DM;

Вниз

Подскажите в чем ошибка в запросе на вставку   Найти похожие ветки 

 
DimonS ©   (2006-10-09 08:38) [0]

Нужно из файла 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


 
Ketmar ©   (2006-10-09 08:41) [1]

и что ты хотел сказать квадратными скобками в запросе?


 
DimonS ©   (2006-10-09 08:44) [2]

Если их не ставить - ругается на запятую. Как правильно?


 
DimonS ©   (2006-10-09 08:48) [3]

Если смотреть пример, то надо, наверное, так:

insert into FIO in Tn[,FIO] select TabN,FIO from ""D:\mc502.dbf""

Но тоже - Неполное предложение запроса.


 
Sergey13 ©   (2006-10-09 09:08) [4]

> [3] DimonS ©   (09.10.06 08:48)

insert into FIO(Tn,FIO) select TabN,FIO from ""D:\mc502.dbf""


 
DimonS ©   (2006-10-09 09:10) [5]


> Sergey13 ©   (09.10.06 09:08) [4]


Пробовал так - Неполное предложение запроса. Не получается.


 
Sergey13 ©   (2006-10-09 09:18) [6]

> Нужно из файла mc502.dbf вставить поля TabN и FIO в таблицу
> FIO (поля Tn,FIO). Пишу так (в самом Access-е):

Так у тебя разнотипные БД? Не заметил сначала.
Тогда такое вряд прокатит. Компоненты доступа какие? В BDE возможны гетерогенные запросы.


 
DimonS ©   (2006-10-09 09:21) [7]

Кстати, если запустить запрос из дельфей:

ADOCom.CommandText:=insert into FIO(Tn,FIO) select TabN,FIO from ""D:\mc502.dbf"""";
ADOCom.Execute;


выскакивает ошибка: Неправильно определен объект Parametr. Недопустимые или неполные сведения.

Это одно и тоже, вроде бы?


 
DimonS ©   (2006-10-09 09:22) [8]


> Sergey13 ©   (09.10.06 09:18) [6]


Да, разнотипные.
Вроде бы можно, читал, что должно прокатить. Компоненты - ADO.


 
DimonS ©   (2006-10-09 09:24) [9]

Вот, вроде бы тоже самое:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=40317

Но вот не прокатывает...


 
DimonS ©   (2006-10-09 09:37) [10]

Все, вопрос снят!

INSERT INTO FIO ( Tn, FIO ) IN "C\Bonus.mdb"
SELECT TabN, FIO
FROM mc502.dbf IN "D:\"[dBase IV;];


Работает на ура :)


 
DimonS ©   (2006-10-09 10:13) [11]

Вопрос в догонку.

Что нужно дописать, чтобы дописывались только новые записи? Т.е. обновлять базу.
Пишу так:

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)


то ничего не вставляется. Как будет правильно?


 
Sergey13 ©   (2006-10-09 10:16) [12]

> where Tn<>(select Tn from FIO)

where not exist (select 1 from FIO f1 where f1.TN=FIO.TN)


 
DimonS ©   (2006-10-09 10:26) [13]


> where not exist (select 1 from FIO f1 where f1.TN=FIO.TN)


Тогда ругается на FIO.TN - не имеет значения по умолчанию :)


 
Sergey13 ©   (2006-10-09 10:29) [14]

> [13] DimonS ©   (09.10.06 10:26)

Я вроде перепутал. Как то так.
FROM mc502.dbf N IN "D:\"[dBase IV;] where not exist (select 1 from FIO f1 where f1.TN=N.TabN)


 
DimonS ©   (2006-10-09 10:37) [15]

Да, я так примерно и сделал.
Но что-то не то - ничего не вставляет в пустую таблицу...


 
DimonS ©   (2006-10-09 10:48) [16]

А если таблица заполнена - то ошибка: Данный подзапрос должен возвращать не больше одной записи!


 
Sergey13 ©   (2006-10-09 10:52) [17]

> [16] DimonS ©   (09.10.06 10:48)

А как ты конкретно "так примерно и сделал" ?


 
DimonS ©   (2006-10-09 10:56) [18]

В смысле дал название таблицы, только не N, а B :)

Пробовал и твой вариант скопировать - то же самое.


 
Sergey13 ©   (2006-10-09 11:04) [19]

> [18] DimonS ©   (09.10.06 10:56)

Сомнительно, что бы not exist подзапрос выдавал такую ошибку.


 
DimonS ©   (2006-10-10 01:55) [20]


> Сомнительно, что бы not exist подзапрос выдавал такую ошибку.


Но, как ни странно, выдает...



Страницы: 1 вся ветка

Текущий архив: 2006.10.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.053 c
2-1160969868
Tab
2006-10-16 07:37
2006.10.29
как перейти в следующую ячейку в StringGrid


15-1160486530
БорецСоСпамом
2006-10-10 17:22
2006.10.29
Спам - Зло


15-1159821795
Real
2006-10-03 00:43
2006.10.29
Хон-Гиль-Дон


3-1157096069
Neo Trinitron
2006-09-01 11:34
2006.10.29
Сжатие БД MS Access


15-1160219233
MikePetrichenko
2006-10-07 15:07
2006.10.29
Наша медецина