Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.057 c
4-1150363747
jiny
2006-06-15 13:29
2006.10.29
Как запустить EXE находящийся в виде потока TMemorySTream


9-1138010551
Provodnick
2006-01-23 13:02
2006.10.29
Прямоугольник с разноцветными сторонами


2-1160635715
Megabyte
2006-10-12 10:48
2006.10.29
Ругается на GRANT в теле хранимой процедуры


15-1159374275
SergP.
2006-09-27 20:24
2006.10.29
Ура!!! Наконец-то у меня будет нормальный инет!!!


2-1160906180
C@N
2006-10-15 13:56
2006.10.29
ScroolBars в Memo





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский