Что я делаю для этих типов фильтров, так это для создания оператора SQL всякий раз, когда изменяется один из элементов управления фильтра. Все они ссылаются на одну и ту же подпрограмму, чтобы сэкономить на дублировании кода.
Что вы делаете с этим оператором SQL, зависит от того, что вы пытаетесь сделать. Доступ довольно универсален; используйте его в качестве RecordSource, выполните его напрямую и используйте результаты для чего-то другого, даже просто распечатав его на этикетке.
Чтобы попытаться модулировать процесс, вот пример того, как я это делаю:
Dim str As String
str = "SELECT * FROM " & Me.cListBoxRowSource
Me.Field1.SetFocus
If Me.Field1.Text <> "" Then
str = AppendNextFilter(str)
str = str & " SQLField1 LIKE '*" & Me.Field1.Text & "*'"
End If
Me.Field2.SetFocus
If Me.Field2.Text <> "" Then
str = AppendNextFilter(str)
str = str & " SQLField2 LIKE '*" & Me.Field2.Text & "*'"
End If
Me.Field3.SetFocus
If Me.Field3.Text <> "" Then
str = AppendNextFilter(str)
str = str & " SQLField3 LIKE '*" & Me.Field3.Text & "*'"
End If
Me.cListBox.RowSource = str
Переменные, отредактированные для защиты виновных.
Мой метод AppendNextFilter просто проверяет, существует ли уже WHERE
в операторе SQL. Если это так, добавьте AND
. В противном случае добавьте WHERE
.
For the record, this turns out to be fairly straightforward - everything you need to know is somewhere in the example below:
+ (UIImage*) addStarToThumb:(UIImage*)thumb
{
CGSize size = CGSizeMake(50, 50);
UIGraphicsBeginImageContext(size);
CGPoint thumbPoint = CGPointMake(0, 25 - thumb.size.height / 2);
[thumb drawAtPoint:thumbPoint];
UIImage* starred = [UIImage imageNamed:@"starred.png"];
CGPoint starredPoint = CGPointMake(0, 0);
[starred drawAtPoint:starredPoint];
UIImage* result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return result;
}