| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Возникла такая проблемка - при очистке временной таблицы путем 
		
		
		
		
		
		
		
	TmpTable_DS.first(); TmpTable.clear(); и последующем ее заполнении, при сортировке значений нажатием на шапку столбца в гриде предыдущие значения всплывают откуда-то... то есть пока значения не отсортированы, вид нормальный, но после сортировки в гриде оказываются значения от текущего заполнения временной таблицы + значения, бывшие в ней до очистки. Проблему обошел следующим способом: TmpTable_DS.first(); select forupdate TmpTable; delete_from TmpTable; однако возник вопрос - возможно, существует более цивилизованный метод очистки временной таблицы? И еще вопрос - может, кто-нибудь знает, за счет чего подобные вещи могут происходить?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вполне нормальный способ очистки - delete_from. Clear() - это только очистка курсора. 
		
		
		
		
		
		
		
	Вы видимо заполняли временную таблицу несколько раз, потому и видели несколько предыдущих наборов записей.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Вот как делаю: Код: TmpTable tmpTableBlank; ; tmpTable.setTmpData(tmpTableBlank); //Ну, и если это очищается датасорс на форме, то еще и tmpTable_ds.research();  
		 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: oip (2). | |
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			классно, спасибо. 
		
		
		
		
		
		
		
	производительность не заценил еще, но код вроде несколько более читабельный.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Интересно. Такое впечатление, что данные в t и t1 меняются местами. 
		
		
		
		
		
		
			PS Нет. При втором вызове t.setTmpData(t1); к данным в курсоре t добавляются данные из курсора t1. Можно удалить с помощью delete_from t1 из этого курсора все данные, тогда будет происходить замена 
				__________________ 
		
		
		
		
		
			Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 12.09.2006 в 10:57.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 PHP код: 
	
			
	 
		Последний раз редактировалось oip; 12.09.2006 в 10:53.  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Нет, не меняются. Просто t1 не очищается. 
		
		
		
		
		
		
		
		
			PS belugin, спасибо за подсказку.  
		Последний раз редактировалось oip; 12.09.2006 в 11:00.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Действительно, получается, что метод setTmpData работает немного иначе, чем представлялось - похоже на присваивание курсора курсору. 
		
		
		
		
		
		
			
		
		
		
		
		
			Так что, вооружившись этим новым знанием, использовать придется с учетом такого его ограничения. Спасибо oip за замечание. P.S. Кстати, почитав хелп в Axapta действительно можно было увидеть это, вчитавшись в слово point (указывать): Код: Example
 TmpTbl  t1
 TmpTbl t2
 t2.setTmpData(t1);  /*both buffers now point to same
         /*dataПоследний раз редактировалось kashperuk; 12.09.2006 в 11:06. Причина: Дополнение  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, я понял, смотри выше
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В общем, способ c setTmpData работает, и работает гораздо быстрее, чем с delete_from: 
		
		
		
		
		
		
		
		
			для 20000 строк setTmpData очищает за 200мс, а delete_from - за 20000мс!   Я уже увидел, после того, как написал.  
		Последний раз редактировалось oip; 12.09.2006 в 11:08.  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Developer 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я использую tmpTable = null. Никаких побочных эффектов не обнаружил. Если кто знает о таковых - просьба поделиться  
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: leshy (1), kashperuk (2). | |
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Наткнулся сегодня на занимательный фрагмент: (в аттаче) 
		
		
		
			Так что, должны были уже это знать мы все, господа.  
		 | 
| 
	
 | 
| Теги | 
| временная таблица, как правильно, очистка | 
| 
	
	 | 
	
		
  |