19.02.2003, 12:49 | #1 |
NavAx
|
Не работает update !!!!
Люди!!! Помогите, многое видел но такого в Аксапте - не ожидал....
Не работает следующий код: PHP код:
|
|
19.02.2003, 12:59 | #2 |
----------------
|
Интересно, а в чем суть данного кода?
Может быть, вместо find и if сделать просто inventTable.update() ? |
|
19.02.2003, 14:37 | #3 |
Участник
|
Цитата:
Что уже только не пробовали, как это можно реализовтаь по другому, или может кто-нить уже сталкивался с подобным?
2) Не понятно зачем Вы это делаете. И как Вы дошли до того что это не работает (и что собственно должно работать???). Ничего не изменяя делаете doUpdate - естественно ничего не произойдет. |
|
19.02.2003, 15:00 | #4 |
NavAx
|
Мде
загадочный кусок кода и что он интересно должен был по задумке делать?
__________________
С уважением, Игорь Ласийчук. |
|
19.02.2003, 15:09 | #5 |
NavAx
|
"Загадочный", а что вы хотели - жизнь, знаете ли сложная штука :-)....
Суть этого кода вот в чем - мы получили контейнер с InventTable из ДРУГОЙ компании (неважно как, и я не могу запихать в данном случае все в виртуальную компанию). Прочитали его в текущей (целевой) компании и теперь строку таблицы в целевой компании с таким же ItemId нам надо привести в соответсвие с тем что мы прочитали... Как это сделать? |
|
19.02.2003, 15:25 | #6 |
Участник
|
Знающие люди говорят, что при смене компании надо сначало обнулить табличную переменную, а затем заносить туда данные (в системных поля содержится информациия о компании - поэтому doUpdate происходит в "старой" компании)
|
|
19.02.2003, 15:34 | #7 |
NavAx
|
To KVax
ГДЕ в том коде что я написал changeCompany - все происходит в одной компании, контейнер из другой компании у нас уже есть - все переменные как Вы видете обнулены... |
|
19.02.2003, 15:44 | #8 |
----------------
|
Всё понятно
Так как UPDATE Аксапта делает по условию WHERE RecId=### AND DATAAREAID='XXX', предлагаю поступить так:
PHP код:
|
|
19.02.2003, 15:44 | #9 |
Участник
|
В InventTable попала вся информация из преведущей помпании (вместе с полем dataAreaId - где храниться информация о компании).
Затем вы эту информацию помещаете в I_Table - вместе с dataAreaId (и даже вместе с RecId) из преведущей компании - а Вам нужен RecId данной записи из текущейц компании и DataAreaId тоже. |
|
19.02.2003, 15:46 | #10 |
Участник
|
Re: Не работает update !!!!
Цитата:
Изначально опубликовано skof
PHP код:
ИХМО стоит попробовать PHP код:
|
|
19.02.2003, 15:47 | #11 |
Участник
|
To Warm
:-)) |
|
19.02.2003, 15:51 | #12 |
NavAx
|
Цитата:
Суть этого кода вот в чем - мы получили контейнер с InventTable из ДРУГОЙ компании (неважно как, и я не могу запихать в данном случае все в виртуальную компанию). Прочитали его в текущей (целевой) компании и теперь строку таблицы в целевой компании с таким же ItemId нам надо привести в соответсвие с тем что мы прочитали...
ИМХО тут всё дело в операторе data(). Попробуйте например сделать следующую вещь: PHP код:
Можно решить эту проблему например так: PHP код:
__________________
С уважением, Игорь Ласийчук. |
|
19.02.2003, 15:53 | #13 |
----------------
|
to Muzzy
второй параметр в find говорит о том надо блокировать выбранную запись в таблице для обновления или нет. То есть в запросе на сервер будет присутствовать (UPDLOCK) |
|
19.02.2003, 16:03 | #14 |
Участник
|
Цитата:
Изначально опубликовано Wamr
второй параметр в find... Скорее всего, я был неправ, поскольку загрузил старницу давно и не видел увлекательных историй о смене компаний. Буду читать этот сериал с огромным интересом. |
|
19.02.2003, 16:05 | #15 |
NavAx
|
Ну, народ вы даете!!!
1. метод DATA не переносит RecId и DataAreaId.... 2. DataAreaId нельзя писать - только читать... 3. в целевой базе нет исходной компании... 4. переменные как вы видете мы обнуляем 5. блокировку записи мы пробовали - не помогует Но, только что - мы решили проблему - угадайте как.... правда призов не обещаю - не в Америках живу - хотя какой нить приз придумать можно... А вообще хотелось бы задать этот вопрос МБС - какого черта не работает - ведь по логике должно? Что она внутри там теряет? В отладчике мы смотрели - после строчки i_table.data(inventTable.data()); - данные в i_table новые а пресловутые DataAreaId и RecId старые... |
|
19.02.2003, 16:16 | #16 |
Участник
|
а чего тянуть то?
говори, раз разобрались... |
|
19.02.2003, 16:22 | #17 |
Участник
|
Да действительно - народ хочет знать правду
|
|
19.02.2003, 16:36 | #18 |
NavAx
|
Цитата:
Ну, народ вы даете!!!
1. метод DATA не переносит RecId и DataAreaId.... 2. DataAreaId нельзя писать - только читать... 1-ый вариант не работает 2-ой вариант работает Я проверял перед тем как постить. Хотя может дело тут и не в этом.
__________________
С уважением, Игорь Ласийчук. |
|
19.02.2003, 16:53 | #19 |
----------------
|
Попробую угадать
i_Table.doDelete(); inventTable.doInsert(); Хотя, это вряд ли, слишком много deleteAction-ов на InventTable Кстати, у меня RecId через data всегда переносился. |
|
19.02.2003, 17:05 | #20 |
NavAx
|
То Warm очень близко - мы использовали doDelete, doInsert
|
|