|
|
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
Голова запарилась мысли не прут... поможите!!!!! общее описание проблемы: есть две таблички надо сложить поле для всех записей совпадающих по определённым признакам и проапдейтить одну из таблиц. сделано: Вот этот запрос Код: plaintext 1. 2. 3. всё выбирает и складывает, НО на апдейте я выдохся... неразрешённая проблема: как заменить ChargeOfThread.Quanty для соответствующих ChargeOfThread.ID (однозначно определяет строку) на Len из данного запроса? Было бы шикарно если б это можно было бы объеденить с предыдущим запросом, если не получиться эт тож ни чего, лишь бы проапдейтить. P.S. удалять строки существующие строки незя. С уважением Sfagnum ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2003, 14:29 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
А так не катит?!?!? Код: plaintext 1. 2. 3. Можно еще IsNull'нуть второй параметр суммы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2003, 14:42 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
To MixaCh: Похоже Вы пропустили SELECT. А также не производится сумирование :( И ещё что мне... ну не ндравиться... это то что обрабатываються все записи - а хотелось бы тока конкретные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2003, 14:53 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
Да вроде как не пропустил - какой-же Select в Update?!?!?!? Хотя может в Access синтаксисе и есть - как правило строю Access запросы через грид - а синтаксис и него какой-то корявый, не привычный... 2. Если надо суммирование (не помню, можно ли в одном - по-моему нет), то можно как - оставить первый запрос без изменения (только добавить суммирование) - на его основе написать второй - в котором уже и Update, соединяя с отобранным запросом на суммирование... 3. А обновляет он только те записи, какие у Вас по Where проходят - я же ничего не добавлял и не удалял из написанных Вами условий - не понятно Ваше "фи"?!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2003, 15:07 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
Дело в том что AccEss матюгается на предложенный Вами запрос ему в нём чего то не хватает, я предположил что он не принимает FROM без SELECT, после его добавления получилась выше описанная ерунда. так что ни каких таких 'фи':) Если Вас не затруднит, не могли бы Вы привести 2 вариант, из Вами выше перечисленных, в коде. Буду очень Вам благодарен, т.к. не хватает составить запрос при котором согласовались бы ID запроса и таблички. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2003, 15:20 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
Что-то типа... Запрос 1: Код: plaintext 1. 2. Запрос 2, на основании 1: Код: plaintext 1. Ну и в первый запрос - все нужные ограничения (чтобы не обновлял все записи....) Прошу прошения, что на своих табличках, но думаю будет понятно... И вообще - пользуйтесь построителем - он все нормально строит, а писать эти InerJoin'ы ..... ужас.... Лучше уж where.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2003, 15:54 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
В том то вся и проблема что запрос составленный в конструкторе не пашет кричит типа: Operation must use an updatable query я использовал в качестве 1го запроса - запрос приведённый в первом посте и обозвал его UpdateVal по аналогии построил 2ой получилось: Код: plaintext В принципе AccEss генерит такой же запрос в конструкторе. Насчёт Where полностью согласен, но в данном случае это не приемлемо, т.к. для каждого ID значения разные, по крайней мере я так это понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2003, 16:12 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
Вообще всё это безобразие легко реализовать через recordset, но очень уж не хочеться делать это... не люблю я их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2003, 16:17 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, что увел по неверному пути - давно не сталкивался с этими г.. запросами на обновление в Access'е - стараюсь через сервер... Почему так работает - одному богу известно - настольная БД, видимо... Здесь откопал в хелпе..... надеюсь что поможет.... Возвращается сообщение о необходимости использовать запрос, допускающий обновление Такая ошибка возникает, если ячейка строки Обновление включает поле из перекрестного запроса или из запроса на выборку, в котором для этого поля выполняется расчет статистических (итоговых) значений (такие расчеты задаются либо в строке Групповая операция, либо с помощью статистической функции по подмножеству, введенной в строку Поле). Для того чтобы выполнить обновление для поля, участвующего в групповой операции, следует выполнить статистические расчеты в запросе на обновление, а не в другом запросе. В текущем запросе в режиме конструктора удалите поле, добавленное из перекрестного запроса или из запроса на выборку (в котором для этого поля определен расчет статистической функции). Введите в ячейку строки Обновление нужного поля статистическую функцию по подмножеству, выполняющую ту же операцию, которая выполнялась для этого поля в запросе на выборку или в перекрестном запросе. Например, если в таблице «Товары» имеется вычисляемое поле «Сумма продаж», можно обновить его до произведения полей «Количество» и «Цена» из таблицы «Заказано», для чего следует ввести в бланке запроса на обновление следующее выражение в ячейку строки Обновление в столбце этого поля: DSum("[Количество]*[Цена]","Заказано","[КодТовара]=" & [КодТовара]) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2003, 16:33 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
Насколько я понял данную цитату - то я должон обьедянить эти два запроса в один - фантазии не хватает => хелп!!!! второй вариант записывать результа в таблицу и оттуда апдейтить - реализовал. Но хочеться шоб красиво былО в один запросик хелп!!! как объеденить привдённые ниже два запроса UpdateVal : Код: plaintext 1. 2. и Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2003, 16:51 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
Не знаю как помочь.... вобщем пас.... Если получилось через RecordSet - пусть лучше будет так... Access как упрямый осел - если уж что не захочет делать, то уж не захочет.... Че ему не обновляется - логикой вешей я объяснить не могу - ну просто не хочет он, в лом...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2003, 19:39 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
Всё равно спасибо. Я сделаю через скидывание в таблицу. Не люблю я recordset'ы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2003, 19:09 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
проверено: UPDATE ChargeOfThread LEFT JOIN SumLen ON ChargeOfThread.Thread_ID = SumLen.Thread_ID SET ChargeOfThread.Quanty = ([SumLen].[Len]+[ChargeOfThread].[Quanty]) WHERE ((ChargeOfThread.Variant=2) AND (ChargeOfThread.Model="A004-1") AND (ChargeOfThread.M_Calc=True)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2003, 14:23 |
|
||
|
Update запрос
|
|||
|---|---|---|---|
|
#18+
так же как и (простите, перепутал RIGHT JOIN с LEFT JOIN) UPDATE ChargeOfThread RIGHT JOIN SumLen ON ChargeOfThread.Thread_ID = SumLen.Thread_ID SET ChargeOfThread.Quanty = ([SumLen].[Len]+[ChargeOfThread].[Quanty]) WHERE ((ChargeOfThread.Variant=2) AND (ChargeOfThread.Model="A004-1") AND (ChargeOfThread.M_Calc=True)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2003, 14:26 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32104620&tid=1682252]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 386ms |

| 0 / 0 |
