|  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
		 | 
|  |