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

Вниз

Access, импорт данных. Update.   Найти похожие ветки 

 
DDespot   (2003-11-09 04:27) [0]

Здравствуйте мастера. Вот такая вот проблема.
Есть две базы Access, необходимо из одной базы перекачать некоторые данные в другую базу. Делаю вот такой вот запрос
----
UPDATE Result IN "c:\1.mdb" SET Result.Vol_R =
(Select First(Vol_R) From Results
Where Results.Name=Result.Name AND Results.ShortNameR=Result.ShortNameR);
----
То есть в текущей базе есть таблица Results а во внешней базе таблица Result необходимо значения поля Vol_R из внешней базы скопировать в текущую установив соответвие по ключам Name и ShortNameR.
На мой запрос ругаеться грит должен использоваться обновляемый запрос.
Что делать не знаю. ПОМОГИТЕ!!!!


 
DDespot   (2003-11-09 04:34) [1]

Оговорился Vol_R из текущей базы нужно скопировать во внешнию.
Но это не важно... не могу понять как update"ить поле если ее значение берется из другой таблицы по какому-то условию.


 
sniknik   (2003-11-09 11:27) [2]

> На мой запрос ругаеться грит должен использоваться обновляемый запрос.
такое выдает когда хочет индекс а его нет.
у тебя связь Results.Name=Result.Name, по ней обьеденение делаться должно но не может без индексов.
а по логике запроса будет занесено одно значение (с трудом найденное) по всей таблице, что тебе явно не нужно судя по логике вопроса ;о)).


 
COOOL   (2003-11-09 11:29) [3]

отдели мух от котлет..
1. делаешь выборку в текущей базе.
2. начинаешь читать вырорку и проверять на соотвествие с внешней базой.
3. если есть соответсвие апдейтишь внешнюю если нет вставляешь.


 
sniknik   (2003-11-09 12:02) [4]

судя по логике нужно примерно следующее
UPDATE Result a INNER JOIN Results IN "c:\1.mdb" b ON a.Name = b.Name SET a.Vol_R = b.Vol_R
(попробуй возможно получится)


 
DDespot   (2003-11-09 13:54) [5]

2(COOOl) Блин не догоняю, как это в запросе написать... если не сложно кинь приблизительный пример.
2(sniknik) Неа не хочет, блин, INNER JOIN только после From используеться.


 
sniknik   (2003-11-09 14:14) [6]

ну извини, счас проверенный запрос
UPDATE BOX a INNER JOIN (SELECT ID, Cur FROM Box IN "D:\Base1.mdb") b ON a.ID = b.ID SET a.PREDID = b.Cur
у меня работает, подставь свои параметры

> INNER JOIN только после From используеться.
откуда деза?


 
DDespot   (2003-11-09 14:36) [7]

Деза вот от куда JETSQL40.chm
-----
Операция INNER JOIN
Синтаксис
FROM таблица_1 INNER JOIN таблица_2 ON таблица_1.поле_1 оператор таблица_2.поле_2
-----------
UPDATE Result IN "C:\1.mdb"
INNER JOIN (SELECT ShortNameE,Name FROM Results) ON Result.Name = Results.Name AND Result.ShortNameE=Results.ShortNameE SET Result.Vol_R = Results.Vol_R;
Делаю вот такой вот запрос, вроде по аналогии с твоим, говорит ошибка инструкции update, показывает на INNER.
--------------
UPDATE Result IN "C:\1.mdb" a
INNER JOIN (SELECT ShortNameE,Name FROM Results) b ON a.Name = b.Name AND a.ShortNameE=b.ShortNameE SET a.Vol_R = b.Vol_R;
--------
Такой запрос тоже не проходит "ошибка инструкции update", показывает на "a" после "C:\1.mdb".

Я ACCESS XP юзаю, запрос прям в нем написал.
Помоги плиз..... а то я уже два дня завис над этой проблемой.


 
DDespot   (2003-11-09 15:18) [8]

Решил пойти с другой стороны... запрос написал теперь во внешней базе.
Написал почти как ты показывал, ошибок не говорит. Но зато теперь спрашивает значение B.Vol_R для подстановки а не берет его из таблицы.
----------
UPDATE Results AS A INNER JOIN [SELECT ShortNameR,Name FROM Result IN "C:\2.mdb"]. AS B ON (A.Name =B.Name) AND (A.ShortNameR=B.ShortNameR) SET A.VOl_R = B.Vol_R;
---------
Что делать???


 
DDespot   (2003-11-09 15:30) [9]

ЭВРИКА!!!!!
Все получилось, затупил в предидущем запросе.
---------------
UPDATE Results AS A INNER JOIN [SELECT ShortNameR,Name,Vol_R FROM Result IN "С:\2.mdb "]. AS B ON (A.Name =B.Name) AND (A.ShortNameR=B.ShortNameR) SET A.VOl_R = B.Vol_R;
---------------
Спасибо тебе большое sniknik.
Но все равно не понятно почему вот этот запрос не работал...
---------------
UPDATE Result IN "C:\1.mdb"
INNER JOIN (SELECT ShortNameE,Name FROM Results) ON Result.Name = Results.Name AND Result.ShortNameE=Results.ShortNameE SET Result.Vol_R = Results.Vol_R;
-----------------
Но это уже потом для личного интереса рассматривать буду.


 
sniknik   (2003-11-09 16:38) [10]

> Но все равно не понятно почему вот этот запрос не работал...
> ---------------
> UPDATE Result IN "C:\1.mdb" ...
обьеденение во внешней базе, как ты себе это представляеш? он же строит декартово произведение таблиц, выделяет рабочее пространство ... во внешней никак нельзя. другое дело если бы туда просто значение писалось еденичное, тогда бы получилось .



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

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

Наверх




Память: 0.47 MB
Время: 0.01 c
3-89758
vov-
2003-11-07 21:36
2003.11.27
исключительные ситуации


3-89684
labanga
2003-11-06 13:36
2003.11.27
Отчет в QReport


3-89699
Vemer
2003-11-10 14:49
2003.11.27
Как правильно задать параметр запроса с датой.


1-89991
Эдуард
2003-11-17 11:37
2003.11.27
Редактор для Caption как для stringList а


3-89680
Petrovick
2003-11-06 14:48
2003.11.27
Где можно скачать статью или пример работы с АДО





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский