Я думаю, это то, что вы ищете, введенные в виде формулы массива:
=INDEX('Data Points'!C:C,SMALL((IFERROR(SEARCH("Report 1",'Data Points'!$B$2:$B$4),0)>0)*ROW('Data Points'!$B$2:$B$4),COUNTIF('Data Points'!$B$2:$B$4,"*Report 1*")+ROW(A1)-1))
Это - вопрос, который я поставил на форуме silverlight.net и получил некоторый ответ от Jeff Wilcox. Я думаю, что эта проблема все еще открыта:
http://silverlight.net/forums/p/57811/166439.aspx
Последнее сообщение рекомендует обещание powershell решение
В этом случае не допускается использование нескольких ключей "ко многим".
Вместо этого можно выполнить следующее:
Изменения кода (шаг 3):
//NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY departments.employees.salary < %@", [NSNumber numberWithInt:23000]];
[self setDeptFilter:23000];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY depts.filter == YES"];
[companiesController setFilterPredicate:predicate];
И новый метод (шаг 2):
- (void)setDeptFilter:(NSUInteger)salary {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Department" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSError *error = nil;
// fetch all Department objects
NSArray *array = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];
if (error) {
NSLog(@"Error fetching Departments %@, %@", error, [error userInfo]);
abort();
}
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY emps.salary < %@",[NSNumber numberWithInteger:salary]];
NSArray *filterArray = [array filteredArrayUsingPredicate:predicate];
// set filter flag to YES for the departments that meet the criteria
for (Department *dep in filterArray) {
dep.filter = [NSNumber numberWithBool:YES];
}
NSMutableArray *diffArray = [array mutableCopy];
[diffArray removeObjectsInArray:filterArray];
// set filter flag to NO for the departments that do NOT meet the criteria
for (Department *dep in diffArray) {
dep.filter = [NSNumber numberWithBool:NO];
}
[diffArray release];
// save
if ([self.managedObjectContext hasChanges] && ![self.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
-121--3509366- Преобразуйте даты в временные метки unix, а затем подставляйте одну из них. Это даст вам разницу в секундах, которую вы делите на 86400 (количество секунд в день), чтобы дать вам приблизительное количество дней в этом диапазоне.
Если даты имеют формат 25,1,2010
, 01/25/2010
или 2010-01-25
, можно использовать функцию strtotime
:
$start = strtotime('2010-01-25');
$end = strtotime('2010-02-20');
$days_between = ceil(abs($end - $start) / 86400);
С помощью ceil
округляет количество дней до следующего полного дня. Вместо этого используйте floor
, если требуется получить количество полных дней между этими двумя датами.
Если ваши даты уже находятся в формате unix timestamp, вы можете пропустить преобразование и просто сделать $ days _ между
part. Для более экзотических форматов даты, возможно, придется сделать некоторые пользовательские разбор, чтобы получить его правильно.
У меня был успех в StatLight. http://statlight.codeplex.com /