powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обновление некоторых полей таблицы
25 сообщений из 26, страница 1 из 2
Обновление некоторых полей таблицы
    #32818419
Dr. I M P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется SQL и Access.
Есть форма, источником записей которой является запрос, выбирающий данные из нескольких таблиц. Выводится все это в виде:
Клиент Приход Расход Остаток ТекущийОстаток
------------------------------------------------------------
Вася 10 5 5 50
Маша 40 30 10 20
Петя 20 30 -10 10
Лена 30 0 30 -40

Имеется таблица "Клиент", в которой есть поля ИмяКлиента (имя - Вася, Петя и т.д.), Остаток (данные "ТекущийОстаток" из приведенной выше схемы ), Дата.
Необходимо при нажатии кнопочки обновить таблицу "Клиент", записав в поле Остаток данные возвращаемые вышеприведенным запросом отраженные в поле Остаток. И проставить дату расчета. Т.е. таблица "Клиент" из вида

ИмяКлиента Остаток Дата
-----------------------------
Вася 50 01.01.04
Маша 20 01.01.04
Петя 10 01.01.04
Лена -40 01.01.04

Должна превоатиться в:


ИмяКлиента Остаток Дата
-----------------------------
Вася 5 21.03.04
Маша 10 21.03.04
Петя -10 21.03.04
Лена 30 21.03.04

Написал событие на нажатие кнопки:

UPDATE Клиент set Остаток= ПолеОстаток, Дата = ПолеДатаСегодня FROM Клиент WHERE ИмяКлиента = Клиент
Все нормально - работает. Но.... Обновляет только ту запись, на которой в данное время стоит курсор. А мне надо, чтобы пробежавшись по всем клиентам, которые выведены запросом в форму он занес данные о них в таблицу, обновил бы всех, а не одного.
Как это сделать?????????

(поиск ничего не дал - обычно просят подсказать про обновление одной записи, так что не пинайте ногами. Поисковиками тоже искал:( )
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818439
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
WHERE ИмяКлиента = Клиент
Глаза р-р-режет
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818444
Dr. I M P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vsevolod V
Код: plaintext
WHERE ИмяКлиента = Клиент
Глаза р-р-режет

А нельзя ли поконкретней?:)

Пробовал и без этого условия - на всех клиентов тогда проставляется та сумма, которая указана в клиенте на котором курсор стоит.
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818452
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
А мне надо, чтобы пробежавшись по всем клиентам, которые выведены запросом в форму он занес данные о них в таблицу, обновил бы всех

следовательно вместо
Код: plaintext
1.
ИмяКлиента = Клиент
должно стоять ИмяКлиента = чему-то общему для всех клиентов
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818464
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr. I M P Vsevolod V
Код: plaintext
WHERE ИмяКлиента = Клиент
Глаза р-р-режет

А нельзя ли поконкретней?:)

Пробовал и без этого условия - на всех клиентов тогда проставляется та сумма, которая указана в клиенте на котором курсор стоит.
В твоем варианте условие WHERE означает, что ты обнавляешь запись конретного клиента. То есть для того, чтобы обновить записи всех клиентов нужно либо убрать условие WHERE вообще, либо сделать его таким:
Код: plaintext
WHERE ИмяКлиента Like '*'
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818506
Dr. I M P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vsevolod V
В твоем варианте условие WHERE означает, что ты обнавляешь запись конретного клиента. То есть для того, чтобы обновить записи всех клиентов нужно либо убрать условие WHERE вообще, либо сделать его таким:
Код: plaintext
WHERE ИмяКлиента Like '*'


не работает :(
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818512
Dr. I M P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если убираем WHERE, то, как я и писал - на всех клиентов пробивается одна и та же сумма.
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818518
Iskander68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно увидеть запрос, на котором форма построена?

--
Regards
Alexander Artamonov

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818547
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала давайте нажмем f1 и посмотрим синтаксис инструкции UPDATE
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818568
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А общая идея заклучается в том, что ты обновляешь данные таблицы используя ТОЛЬКО два значения из формы: ПолеОстаток, ПолеДатаСегодня, которые отображаются на данный момент времени.
Нужно же использовать источник данных формы (т.е. именно тот запрос, в котором ты выбираешь необходимых клиентов). Реализуется это посредством использования в инструкции UPDATE инструкций INNER JOIN, LEFT JOIN или RIGHT JOIN
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818572
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоп, как это вообще может работать?:
UPDATE Клиент set Остаток= ПолеОстаток, Дата = ПолеДатаСегодня FROM Клиент WHERE ИмяКлиента = Клиент

На сколько я понимаю, полей ПолеОстаток и ПолеДатаСегодня в таблице Клиент вообще не существует, значит, текст ошибочный! Должно быть
...Execute "UPDATE Клиент set Остаток= " & MyForm("ПолеОстаток") & ", Дата = CDate('" & MyForm.ПолеДатаСегодня & "') FROM Клиент WHERE ИмяКлиента = '" & MyForm.Клиент & "'"
Но это возможно только для одной единственной записси!
Для того, чтобы проапдейтить все записи, придется писать цикл, последовательно перебирая клиентов. (В Аксе невозможно написать запрос на UPDATE с данными из другого запроса, который не является изменяемым) или сбросив расчетные данные во временную таблицу, проапдейтить таблицу клиентов из этой временной таблы. (Ищи по форуму)
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818576
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала давайте нажмем f1 и посмотрим синтаксис инструкции UPDATE
Rivkin Dmitry
тебе туда же :)
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818591
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vsevolod VА общая идея заклучается в том, что ты обновляешь данные таблицы используя ТОЛЬКО два значения из формы: ПолеОстаток, ПолеДатаСегодня, которые отображаются на данный момент времени.
Нужно же использовать источник данных формы (т.е. именно тот запрос, в котором ты выбираешь необходимых клиентов). Реализуется это посредством использования в инструкции UPDATE инструкций INNER JOIN, LEFT JOIN или RIGHT JOIN

Рискну заметить, что LEFT JOIN или RIGHT JOIN точно не помогут, так как запрос окажется необновляемым, а INNER JOIN поможет только в том случае, если запрос, выбирающий данные из нескольких таблиц[/i обновляемый!
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818597
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivkin Dmitry Vsevolod VА общая идея заклучается в том, что ты обновляешь данные таблицы используя ТОЛЬКО два значения из формы: ПолеОстаток, ПолеДатаСегодня, которые отображаются на данный момент времени.
Нужно же использовать источник данных формы (т.е. именно тот запрос, в котором ты выбираешь необходимых клиентов). Реализуется это посредством использования в инструкции UPDATE инструкций INNER JOIN, LEFT JOIN или RIGHT JOIN

Рискну заметить, что LEFT JOIN или RIGHT JOIN точно не помогут, так как запрос окажется необновляемым, а INNER JOIN поможет только в том случае, если запрос, выбирающий данные из нескольких таблиц[/i обновляемый!
Ща посмотрю :)
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818601
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vsevolod V Для начала давайте нажмем f1 и посмотрим синтаксис инструкции UPDATE
Rivkin Dmitry
тебе туда же :)

И что не нравится?
UPDATE Statement
Creates an update query that changes values in fields in a specified table based on specified criteria.

Syntax

UPDATE table
SET newvalue
WHERE criteria;

The UPDATE statement has these parts:

Part Description
table The name of the table containing the data you want to modify.
newvalue An expression that determines the value to be inserted into a particular field in the updated records.
criteria An expression that determines which records will be updated. Only records that satisfy the expression are updated.
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818622
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не нравится FROM
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818626
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
UPDATE __TEMP_ORDERS_LIST INNER JOIN Orders ON 
[__TEMP_ORDERS_LIST].[Реф №] = Orders.[Реф №] 
SET Orders.Дата = [__temp_orders_list]![Дата]
WHERE (((Orders.OperID)= 1 ) AND (([__TEMP_ORDERS_LIST].OperID)= 1 ));
[__TEMP_ORDERS_LIST] - необновляемый запрос.
Все работает нормально
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818662
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vsevolod V
Код: plaintext
1.
2.
3.
UPDATE __TEMP_ORDERS_LIST INNER JOIN Orders ON 
[__TEMP_ORDERS_LIST].[Реф №] = Orders.[Реф №] 
SET Orders.Дата = [__temp_orders_list]![Дата]
WHERE (((Orders.OperID)= 1 ) AND (([__TEMP_ORDERS_LIST].OperID)= 1 ));
[__TEMP_ORDERS_LIST] - необновляемый запрос.
Все работает нормально

Да? Тогда попробуй запустить Main query из отсюда!
(Откуда я знаю, что __TEMP_ORDERS_LIST действительно не обновляем?)
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818824
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откуда я знаю, что __TEMP_ORDERS_LIST действительно не обновляем?
У меня запрос стопудов необновляемый
Но и с твоим примером не согласиться нельзя :)
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818905
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vsevolod V Откуда я знаю, что __TEMP_ORDERS_LIST действительно не обновляем?
У меня запрос стопудов необновляемый
Но и с твоим примером не согласиться нельзя :)

Может быть твой пример работает в SQL Sever? Там - нет проблем с UPDATE
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818925
Dr. I M P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребзя, про меня не забываем :)
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818932
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivkin Dmitry Vsevolod V Откуда я знаю, что __TEMP_ORDERS_LIST действительно не обновляем?
У меня запрос стопудов необновляемый
Но и с твоим примером не согласиться нельзя :)

Может быть твой пример работает в SQL Sever? Там - нет проблем с UPDATE
mdb обычный

Ребзя, про меня не забываем :)
это ты о нас забыл
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818955
Dr. I M P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну а че мне говорить? :) :) :)
Может я не совсем грамотно объяснил....
Если что-то непонятно - спросите у меня, я повторю:)
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32818983
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr. I M PНу а че мне говорить? :) :) :)
Может я не совсем грамотно объяснил....
Если что-то непонятно - спросите у меня, я повторю:)

Так вообще-то все только для тебя и говорим! А для кого еще?
Ты где находишься? Ты все читаешь, что написено? Внемлешь?
Что сделал, что не получилось? Что не понял? Чем помочь?
...
Рейтинг: 0 / 0
Обновление некоторых полей таблицы
    #32819063
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivkin Dmitry
Вот посмотри мой вариант. Набросал по быстрому. Там ошибка при выполнении запроса, но она не влияет на суть вопроса :)
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обновление некоторых полей таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]