Главная страница
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.029 c
8-1143218448
mobila
2006-03-24 19:40
2006.10.29
ограничить перемещения квадрата


3-1156964792
RagapuK
2006-08-30 23:06
2006.10.29
ошибка при сохранени "Table1: DataSet not in edit or insert mode"


2-1160679155
Incognito
2006-10-12 22:52
2006.10.29
Память, сжираемая приложением.


15-1159957324
Layner
2006-10-04 14:22
2006.10.29
Господа москвичи! Подскажите самый крупный IT универсам в столице


15-1160027222
ZeroDivide
2006-10-05 09:47
2006.10.29
Великий заговор Ex-USSR