|
|
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Имеется 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 ИмяКлиента = Клиент Все нормально - работает. Но.... Обновляет только ту запись, на которой в данное время стоит курсор. А мне надо, чтобы пробежавшись по всем клиентам, которые выведены запросом в форму он занес данные о них в таблицу, обновил бы всех, а не одного. Как это сделать????????? (поиск ничего не дал - обычно просят подсказать про обновление одной записи, так что не пинайте ногами. Поисковиками тоже искал:( ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 12:33:21 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 12:37:24 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Vsevolod V Код: plaintext А нельзя ли поконкретней?:) Пробовал и без этого условия - на всех клиентов тогда проставляется та сумма, которая указана в клиенте на котором курсор стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 12:40:47 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
автор А мне надо, чтобы пробежавшись по всем клиентам, которые выведены запросом в форму он занес данные о них в таблицу, обновил бы всех следовательно вместо Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 12:42:56 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Dr. I M P Vsevolod V Код: plaintext А нельзя ли поконкретней?:) Пробовал и без этого условия - на всех клиентов тогда проставляется та сумма, которая указана в клиенте на котором курсор стоит. В твоем варианте условие WHERE означает, что ты обнавляешь запись конретного клиента. То есть для того, чтобы обновить записи всех клиентов нужно либо убрать условие WHERE вообще, либо сделать его таким: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 12:46:13 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Vsevolod V В твоем варианте условие WHERE означает, что ты обнавляешь запись конретного клиента. То есть для того, чтобы обновить записи всех клиентов нужно либо убрать условие WHERE вообще, либо сделать его таким: Код: plaintext не работает :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 12:57:14 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
А если убираем WHERE, то, как я и писал - на всех клиентов пробивается одна и та же сумма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 12:58:36 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Можно увидеть запрос, на котором форма построена? -- Regards Alexander Artamonov Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:00:54 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Для начала давайте нажмем f1 и посмотрим синтаксис инструкции UPDATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:09:04 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
А общая идея заклучается в том, что ты обновляешь данные таблицы используя ТОЛЬКО два значения из формы: ПолеОстаток, ПолеДатаСегодня, которые отображаются на данный момент времени. Нужно же использовать источник данных формы (т.е. именно тот запрос, в котором ты выбираешь необходимых клиентов). Реализуется это посредством использования в инструкции UPDATE инструкций INNER JOIN, LEFT JOIN или RIGHT JOIN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:15:42 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Стоп, как это вообще может работать?: UPDATE Клиент set Остаток= ПолеОстаток, Дата = ПолеДатаСегодня FROM Клиент WHERE ИмяКлиента = Клиент На сколько я понимаю, полей ПолеОстаток и ПолеДатаСегодня в таблице Клиент вообще не существует, значит, текст ошибочный! Должно быть ...Execute "UPDATE Клиент set Остаток= " & MyForm("ПолеОстаток") & ", Дата = CDate('" & MyForm.ПолеДатаСегодня & "') FROM Клиент WHERE ИмяКлиента = '" & MyForm.Клиент & "'" Но это возможно только для одной единственной записси! Для того, чтобы проапдейтить все записи, придется писать цикл, последовательно перебирая клиентов. (В Аксе невозможно написать запрос на UPDATE с данными из другого запроса, который не является изменяемым) или сбросив расчетные данные во временную таблицу, проапдейтить таблицу клиентов из этой временной таблы. (Ищи по форуму) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:16:25 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Для начала давайте нажмем f1 и посмотрим синтаксис инструкции UPDATE Rivkin Dmitry тебе туда же :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:17:35 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Vsevolod VА общая идея заклучается в том, что ты обновляешь данные таблицы используя ТОЛЬКО два значения из формы: ПолеОстаток, ПолеДатаСегодня, которые отображаются на данный момент времени. Нужно же использовать источник данных формы (т.е. именно тот запрос, в котором ты выбираешь необходимых клиентов). Реализуется это посредством использования в инструкции UPDATE инструкций INNER JOIN, LEFT JOIN или RIGHT JOIN Рискну заметить, что LEFT JOIN или RIGHT JOIN точно не помогут, так как запрос окажется необновляемым, а INNER JOIN поможет только в том случае, если запрос, выбирающий данные из нескольких таблиц[/i обновляемый! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:20:34 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Rivkin Dmitry Vsevolod VА общая идея заклучается в том, что ты обновляешь данные таблицы используя ТОЛЬКО два значения из формы: ПолеОстаток, ПолеДатаСегодня, которые отображаются на данный момент времени. Нужно же использовать источник данных формы (т.е. именно тот запрос, в котором ты выбираешь необходимых клиентов). Реализуется это посредством использования в инструкции UPDATE инструкций INNER JOIN, LEFT JOIN или RIGHT JOIN Рискну заметить, что LEFT JOIN или RIGHT JOIN точно не помогут, так как запрос окажется необновляемым, а INNER JOIN поможет только в том случае, если запрос, выбирающий данные из нескольких таблиц[/i обновляемый! Ща посмотрю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:22:42 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:23:28 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
не нравится FROM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:28:24 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. Все работает нормально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:29:55 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Vsevolod V Код: plaintext 1. 2. 3. Все работает нормально Да? Тогда попробуй запустить Main query из отсюда! (Откуда я знаю, что __TEMP_ORDERS_LIST действительно не обновляем?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:42:51 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Откуда я знаю, что __TEMP_ORDERS_LIST действительно не обновляем? У меня запрос стопудов необновляемый Но и с твоим примером не согласиться нельзя :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:40:22 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Vsevolod V Откуда я знаю, что __TEMP_ORDERS_LIST действительно не обновляем? У меня запрос стопудов необновляемый Но и с твоим примером не согласиться нельзя :) Может быть твой пример работает в SQL Sever? Там - нет проблем с UPDATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:07:06 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Ребзя, про меня не забываем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:12:30 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Rivkin Dmitry Vsevolod V Откуда я знаю, что __TEMP_ORDERS_LIST действительно не обновляем? У меня запрос стопудов необновляемый Но и с твоим примером не согласиться нельзя :) Может быть твой пример работает в SQL Sever? Там - нет проблем с UPDATE mdb обычный Ребзя, про меня не забываем :) это ты о нас забыл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:14:38 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Ну а че мне говорить? :) :) :) Может я не совсем грамотно объяснил.... Если что-то непонятно - спросите у меня, я повторю:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:22:15 |
|
||
|
Обновление некоторых полей таблицы
|
|||
|---|---|---|---|
|
#18+
Dr. I M PНу а че мне говорить? :) :) :) Может я не совсем грамотно объяснил.... Если что-то непонятно - спросите у меня, я повторю:) Так вообще-то все только для тебя и говорим! А для кого еще? Ты где находишься? Ты все читаешь, что написено? Внемлешь? Что сделал, что не получилось? Что не понял? Чем помочь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:30:59 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32818576&tid=1669875]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 369ms |

| 0 / 0 |
