11.10.2006, 13:09 | #1 |
Участник
|
Объясните фильтрацию, CALCFIELDS, SETFILTER и др.
Когда и как их применять! Когда подходит один, когда другой! |
|
11.10.2006, 13:47 | #2 |
Участник
|
Цитата:
SETFILTER и SETRANGE используются для фильтрации. SETRANGE(Field,от значения [, до значения]) SETFILTER(Field,'сложный фильтр',значение1, значение2, ....) - Кстати по F1 очень подробно описано SETRANGE (Record) Use this function to set a simple filter, such as a single range or a single value, on a field. Record.SETRANGE(Field [,FromValue] [.ToValue]) Record Data type: record The record that contains the field you want to filter. Field Data type: field The field you want to filter. FromValue Data type: - The lower limit of the range. The type of FromValue must match Field. ToValue Data type: - The upper limit of the range. If you omit this parameter, the system uses the value you specified for FromValue. The type of ToValue must match Field. Comments SETRANGE provides a quick way to set a simple filter on a field. If you call this function with a field that already has a filter, the system removes that filter before it sets the new one. If you omit all of the optional parameters, the system removes any and all filters set for Field. The fieldref function fails if no field is selected. Example This example shows how to use the SETRANGE function to specify that you only want to see customers 100 through 200. Customer.SETRANGE("No.", '100', '200'); The above statement is a quick way to set the same filter as: Customer.SETFILTER("No.", '>=100&<=200'); SETFILTER (Record) Use this function to assign a filter to a field you specify. Record.SETFILTER(Field, String, [Value],...) Record Data type: record The record that contains the field you want to filter. Field Data type: field The field you want to filter. String Data type: text or code The filter expression. A valid expression consists of alphanumeric characters and one or more of the following operators: <, >, *, &, |, and =. You can use replacement fields (%1, %2, and so on) to insert values at run-time. Value Data type: any Replacement values to insert in replacement fields in the filter expression. The data type of Value must match the type of Field. Comments If the function is called with a field for which a filter already exists, the system will remove that filter before it sets the new one. You can construct filters using these operators: This operator... Means... .. Range & And | Or < Less than <= Less than or equal to > Greater than >= Greater than or equal to <> Different from * Forms a part of value Example This table shows examples of filters: This example... Means... A..Z A range from A to Z A | G A or G F.. & *A/S A range from F and A/S is included in the field. <>B All except B <>'' All not blank <=200 | >500 All less than or equal to 200 or greater than 500 Using a filter with replacement field: This filter selects all accounts in the range from 100 to 200 and No. 300 "G/L Account".SETFILTER("No.", '%1..%2|%3', '100', '200', '300'); Using a filter entered directly in a string: This filter, which is entered as a string, corresponds to the previous example. It too selects all accounts in the range from 100 to 200 and No. 300. "G/L Account".SETFILTER("No.", '100..200|300'); |
|
11.10.2006, 13:53 | #3 |
Участник
|
Ок. Можно получить ответы на эти и другие элементарные вопросы. Мало того, что СПРАВКА даст на них ответы быстрее и полнее есть еще куски кода, которые нужно понять и грамотно вписаться со своими изменениями. Что делать с этим?? Иногда нужно проанализировать работу не одного юнита, чтобы выбрать место, куда лучше впихнуть свои модификации... Я фигею.
|
|
03.08.2007, 13:38 | #4 |
Участник
|
А вот скажите мне, что будет с таблицей если применить такой фильтр?
Table.SETFILTER(Code, '<>%1&<>%2', '', '10*'); |
|
03.08.2007, 15:21 | #5 |
Участник
|
Могу сказать что в данном случае таблица не отфильтруется, может кто нибудь знает почему?
|
|
03.08.2007, 15:25 | #6 |
Участник
|
Это косяк SETFILTER
делайте так: Table.SETFILTER(Code, STRSUBSTNO('<>%1&<>%2', '''''', '10*')); |
|
03.08.2007, 15:35 | #7 |
Участник
|
Спасибо, надо попробовать
|
|
26.09.2007, 10:22 | #8 |
Участник
|
StrFilter:=1|2|3|4|5|6|7|8 и тд (заполняется на форме пользователем)
размер поля на фильтрацию - 5 Table.SETFILTER(Code, STRSUBSTNO(StrFilter)); снимает глюк со строкой фильтра больше размерности поля на Nav 3.77 Респект автору.
__________________
Ведрусса. Я не волшебник, а только учусь |
|
28.09.2007, 14:17 | #9 |
Участник
|
|
|
01.10.2007, 13:11 | #10 |
Участник
|
|
|