Не рапботает выборка аналогов из архивов (СРОЧНО !!!!!!!!!!)

Общие вопросы по оборудованию и программному обеспечению Компании ДЭП
Faster
Сообщения: 653
Зарегистрирован: 11 июл 2007, 09:38

Сообщение Faster » 24 июн 2008, 04:22

И так предположим что есть
TdepArcPeriodicAnalogViewRead* view_values

заданы параметры дата начала и конца и выборка произведена
мы получаем в неё 250 записей , всё вроде хорошо , дальней ший код просто отвильтровывает удалённые записи и обрабатывает рабочие, не удалённые

Код: Выделить всё

	for (int i = 0; i<view_values->Count; i++)
	{
		
		TdepArcPeriodicAnalogDataRow* data_row = view_values->Items[i];
		bool ToAdd=false;
		for (int j=0; j<view_values->ListViewGroupRefParRead->Count; j++)
		{
			TdepArcViewGroupRefParRead* ref_par =view_values->ListViewGroupRefParRead->Items[j];
			if (ref_par->IndexDataColumn != -1)
			{
				TdepArcPeriodicAnalogDataRecord* data_record = &data_row->DataRecord[ref_par->IndexDataColumn];
				if (data_record->HasData)
				{
					WORD tmp=ARC->ListPar->Items[ref_par->IndexDataColumn]->DeleteRecord;
					if(!ARC->ListPar->Items[ref_par->IndexDataColumn]->DeleteRecord)
// Вот  до сюда всё работает , но конструкция которая должна проверять удалина ли запись не работает !!!! tmp всегда =1
РАНЬШЕ всё работало на старых компонентах !!!!!!

					{
						
						ToAdd=true;
					}
				}
			}
		}
Последний раз редактировалось Faster 25 июн 2008, 01:48, всего редактировалось 1 раз.

Faster
Сообщения: 653
Зарегистрирован: 11 июл 2007, 09:38

Сообщение Faster » 25 июн 2008, 01:46

Вот о чём можно рассуждать когда ответилина не важные посты , а на этот забили ?

Dino
Сообщения: 163
Зарегистрирован: 21 фев 2005, 13:18
Откуда: Компания ДЭП

Сообщение Dino » 25 июн 2008, 10:52

В объекте типа _di_IdepArcListPar нельзя обращаться по индексу ref_par->IndexDataColumn.
long IndexDataColumn - индекс структуры в массиве из TdepArcPeriodicAnalogDataRecord или TdepArcPeriodicCounterDataRecord (если в выборке для данного параметра нет данных, то значение данного поля равно -1), т.е. IndexDataColumn указывает на столбец с данными в пользовательском представлении. Если Вы хотите для данного столбца получить указатель на структуру, описывающую архивный параметр, то должны написать следующее

Код: Выделить всё

          if (data_record->HasData) 
          { 
               TdepArcPar* par;
               ARC->ListPar->FindById(ref_par->IdPar, par);
               if(par && !par->DeleteRecord) 
               { 
                   
                  ToAdd=true; 
               } 
            }

VARIANT_BOOL DeleteRecord - пометка на удаление параметра при очистке хранилища, т.е. когда данный параметр не требуется архивировать и хотят его удалить из справочника параметров при очистке хранилища когда не останется связанных с ним данных, то данному полю присваивается TRUE.
С уважением Климов Александр
Компания ДЭП
г. Москва
(495) 995-00-12 доб. 150

Faster
Сообщения: 653
Зарегистрирован: 11 июл 2007, 09:38

Сообщение Faster » 25 июн 2008, 14:08

В шоке , какаято странная замута ???
Ладано попробуем, так завтра , я проектне взял домой сегодня ...

Но вообще както еночень.... методы ...

Faster
Сообщения: 653
Зарегистрирован: 11 июл 2007, 09:38

Сообщение Faster » 26 июн 2008, 01:14

СПС , заработало ... я счастлиф безмерно !