Найти значение в датасете

Здравствуйте. Имеем датасет, в котором хранятся даты(день, месяц, год) + комментарий.
Имеется поле для установки даты, значение которого назовем var1(не из вышеуказанного датасета).

Как проверить, имеется ли в датасете запись со значением из поля var1?

Грубо говоря проверить примерно такое условие var1 == Dataset('Dates'). Но по логике то что написано это сравнение значения переменной с целым массивом данных, как пробежаться грубо говоря по каждой записи и сравнить нет ли с одной из них совпадения? Учитывается только дата, без комментария.

Нравится

2 комментария

Если и там и там именно дата, без времени (то есть возможно строгое совпадение), то можно в SelectQuery датасета создать фильтр по полю с датой. Потом в скрипте налагать на датасет этот фильтр с помощью функции ApplyDatasetFilter, открывать датасет и смотреть, не пуст ли он.

Правильный способ описал Александр выше.
Ну если вдруг понадобится неправильный способ, как пробежаться грубо говоря по каждой записи и сравнить нет ли с одной из них совпадения, то грубо кодируя, это так

    var Dataset = Services.getNewItemByUSI('ds_Какой-то датасет');
	RefreshDataset(Dataset);
	//Тут я получил сегодняшнее число без времени
	var var1 = new Date();
	var1.setHours(0,0,0,0);
	var1 = var1.getVarDate();
 
	var result = false;
	Dataset.GoToFirst();
	while(!Dataset.IsEOF) {
		if (DateToStr(Dataset('Dates')) == DateToStr(var1)) {
			result = true;
			break;
		}
		Dataset.GoToNext();
	}
	if (result) Log.Write(1, 'Есть совпадение');
	else Log.Write(1, 'Нет совпадений');

P.S. Еще раз, правильный способ в первом комментарии, мой только для ознакомления альтернатив, может узнаете из него что-то новое.

Показать все комментарии