![]() |
|
Модераторы: Akina |
![]()
|
|
| AlexB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.2.2011 Репутация: нет Всего: нет |
Добрый день!
Вопрос заключается в следующем: можно ли при выполнении команды UPDATE передавать с параметром SET не константу, а ссылку на ячейку, её содержащую? Если "да", тогда что неправильно в команде UPDATE RS2009 SET [RS2009]![1] = [Importer]![1] WHERE [RS2009]![Time] = [Importer]![Time], которая по моей задумке должна обновить записи поля "1" таблицы RS2009 значениями из поля "1" таблицы Importer при совпадении связанного ключвого поля "Time" Если "нет", как реализовать задуманное? Заранее спасибо. Присоединённый файл ( Кол-во скачиваний: 6 )
test.rar 28,47 Kb |
|||
|
||||
| Akina |
|
||||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Что тут было названо "ячейкой"? Это не Эксель, в Аксессе такого термина НЕТ.
Всё. Абсолютно всё. Начиная от синтаксиса, и кончая ссылками. 1) Прочтите ВНИМАТЕЛЬНО справку по синтаксису многотабличного UPDATE и исправьте синтаксис запроса. 2) Разберитесь, чем разделитель "!" отличается от разделителя ".", и исправьте синтаксис ссылок. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||||
|
|||||||
| AlexB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.2.2011 Репутация: нет Всего: нет |
Спасибо за критику. Однако кроме критики я ожидал немного конструктива: При чтении Вашего сообщения, я понял, что вы поняли, что под термином "ячейка" я имел ввиду "поле записи". Не могли бы Вы всё-таки ответить на вопрос? Ожидалось как минимум "да" или "нет". Наличие примера сняло бы дальнейшие вопросы и сэкономило Вам (да и мне) время. Вы пишете "неправильный синтаксис". Хорошо, пусть так. Тем не менее, в приложении есть файл, в которм сохранён запрос построенный мастером в Access, который синтаксически правилен. Он тоже не работает. Соответственно ошибка носит принципиальный характер. Задачу я описал, и сам решить её не смог. Что-нибудь более конкретное чем RTFM посоветуете? Спасибо. |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Да нет, наверное, хотя... Более определённо сказать не могу.
У нас тут технический форум. И потому ожидается грамотное и правильное применение технических терминов. Иной раз неплохо и в справку залезть... как ты собираешься понимать ответы, не зная терминологии?
А у меня нет задачи экономить тут время. Моя задача - заставить человека самостоятельно работать и мыслить, лишь пытаясь указать ему направление для самообразования. Готовые решения "без понимания" просят в разделе "Помощь студентам". -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| AlexB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.2.2011 Репутация: нет Всего: нет |
Попробую ещё раз:
Пытался обновить записи поля "1" таблицы RS2009 значениями из поля "1" таблицы Importer при совпадении связанного ключвого поля "Time", для чего соорудил с помощью мастера Access следующее: UPDATE RB2009 SET RB2009.[1] = [Importer]![1], RB2009.[2] = [Impoter]![2] WHERE (((RB2009.Time)=[Impoter]![Time])). Однако, вместо ожидаемого обновления Access начинает запрашивать значения Importer!1, Importer!2 etc. Значит ли это, что при выполнении команды UPDATE нельзя передавать с параметром SET вместо константы, ссылку на поле записи, её содержащую? Что поправить, чтобы заработало? Спасибо. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Нет. Это значит, что Вы так и не прочитали справку по многотабличному UPDATE. Правильно. Из текста запроса (только !!! запроса, а не всей БД) совершенно неясно, что это за хрень такая - Importer. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| AlexB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.2.2011 Репутация: нет Всего: нет |
Спасибо.
Ваш высокий профессонализм поражает. Надеюсь, Вам никогда не придётся срочно искать информацию вне Вашей компетенции. Это сообщение отредактировал(а) AlexB - 16.2.2011, 14:29 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Сплошь и рядом. Я часто стараюсь отвечать на вопросы за пределами своей компетенции, перекапывая кучу вроде ненужной мне документации. И порой у меня это даже получается. Плюс остаются полученные знания. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| AlexB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.2.2011 Репутация: нет Всего: нет |
Большинство многотабличных запросов приводится в форме
где отсутствуют специфические для Access разделители. В чистом виде этот код не работает - и здесь точно ошибка синтаксиса. Если вы знаете, ПОЖАЛУЙСТА, напишите пример кода, или дайте ссылку на страницу, где такие придурки как я могут это узнать. |
|||
|
||||
| Akina |
|
||||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Вот хоть и был убеждён, что ты написАл хрень, но не поленился - создал 2 указанные таблицы с указанными полями, заполнил, скопипастил текст и запустил на выполнение. Обновление выполнено, причём ровно так, как должно быть выполнено. Они и не нужны. Совершенно правильная форма. В отличие от твоей, где в секции использованных таблиц перечислены не все таблицы, используемые в запросе, а только одна - обновляемая. Потому Аксесс и не может понять, что есть Importer. Удали из своего последнего запроса ссылку на необновляемую таблицу, как в запросе из первого поста:
и немедленно получишь то сообщение, которое огребаешь по исходному посту.
См. закреплённую тему форума. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||||
|
|||||||
| AlexB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.2.2011 Репутация: нет Всего: нет |
В моём случае код
приводит к ошибке: Недопустимое использование '.', '!' или '()'. В выражении запроса 'Importer'. '. А у Вас, как я понял, срабатывает. Исчерпывающе. Код (с присвоением цен), который был приведён выше я нагуглил после первого же совета про синтаксис многотабличного UPDATE... Это сообщение отредактировал(а) AlexB - 16.2.2011, 15:47 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
На сей раз Ваша ошибка - несоблюдение правил присвоения имён полям таблиц. Но уж коли использованы недопустимые имена - следует сообщить Аксессу, что это имена полей, а не что-то иное.
Добавлено через 2 минуты и 12 секунд Да. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| AlexB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.2.2011 Репутация: нет Всего: нет |
Спасибо, разобрались.
Последний вопрос: в обеих таблицах ключевое поле Time в формате "полный формат даты", однако запрос на выборку или обновление возвращает 0 совпадений. Здесь-то что не так? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Это ужасно. Это - формат ОТОБРАЖЕНИЯ, а не хранения. Хранится - с секундочками... потому сравнение и не срабатывает... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| AlexB |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.2.2011 Репутация: нет Всего: нет |
Как выглядит формат переменной типа "дата/время" в Access я не знаю. Кстати, я пытался заставить Access показывать в таблице "ноль часов, ноль минут", но не преуспел (отсюда сентенция про "полный формат"). Я понимаю, что формат отображения не сильно влияет на сравнение двух переменных. Но я пытался сравнивать именно записи, имеющие одинаковый тип: "дата/время". Одно из сравниваемых полей формата "дата-время" было получено импортом из Excel'a; значение другого поля того же типа - сгенерировано с помощью простенького цикла на VBA
Результат был визуально неотличим, однако выборка по совпадению поля возвращалась нулевая. Почему - не знаю. Будучи ограниченным во времени и имея короткую базу ~100 тыс. записей решил задачу "в лоб" - создал в обеих таблицах функцией CStr копию даты в текстовом формате и сравнивал по ней. Ещё раз спасибо. Постараюсь с идиотскими вопросами больше приставать. Это сообщение отредактировал(а) AlexB - 18.2.2011, 11:30 |
||||
|
|||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |