Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обновление некоторых полей таблицы / 25 сообщений из 26, страница 1 из 2
08.12.2004, 12:33:21
    #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
08.12.2004, 12:37:24
    #32818439
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление некоторых полей таблицы
Код: plaintext
WHERE ИмяКлиента = Клиент
Глаза р-р-режет
...
Рейтинг: 0 / 0
08.12.2004, 12:40:47
    #32818444
Dr. I M P
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление некоторых полей таблицы
Vsevolod V
Код: plaintext
WHERE ИмяКлиента = Клиент
Глаза р-р-режет

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

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

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

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

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


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

--
Regards
Alexander Artamonov

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

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

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

Рискну заметить, что LEFT JOIN или RIGHT JOIN точно не помогут, так как запрос окажется необновляемым, а INNER JOIN поможет только в том случае, если запрос, выбирающий данные из нескольких таблиц[/i обновляемый!
Ща посмотрю :)
...
Рейтинг: 0 / 0
08.12.2004, 13:23:28
    #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
08.12.2004, 13:28:24
    #32818622
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление некоторых полей таблицы
не нравится FROM
...
Рейтинг: 0 / 0
08.12.2004, 13:29:55
    #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
08.12.2004, 13:42:51
    #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
08.12.2004, 14:40:22
    #32818824
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление некоторых полей таблицы
Откуда я знаю, что __TEMP_ORDERS_LIST действительно не обновляем?
У меня запрос стопудов необновляемый
Но и с твоим примером не согласиться нельзя :)
...
Рейтинг: 0 / 0
08.12.2004, 15:07:06
    #32818905
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление некоторых полей таблицы
Vsevolod V Откуда я знаю, что __TEMP_ORDERS_LIST действительно не обновляем?
У меня запрос стопудов необновляемый
Но и с твоим примером не согласиться нельзя :)

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

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

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

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


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