Автор | Сообщение |
|
| |
Пост N: 123
Зарегистрирован: 07.08.06
|
|
Отправлено: 23.04.13 15:32. Заголовок: ax_setServerAOF(cExpr): длина выражения cExpr чем-то ограничена ?
hi all subj. Мну почему-то показалось однажды, что после 250 будут траблы. Но то был АДС 6.11 Давно уже сижу на 7.0, проверил только что на выражении в 570 знаков - ax_EvalServerAOF() показывает результат >0, т.е. ошибки нету. Кто-нить исследовал эту тему ?
|
|
|
Ответов - 15
[только новые]
|
|
|
| |
Пост N: 3088
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.04.13 15:42. Заголовок: ага , ограничена. чи..
ага , ограничена. читай тут
|
|
|
|
| |
Пост N: 124
Зарегистрирован: 07.08.06
|
|
Отправлено: 23.04.13 16:19. Заголовок: --- quote --- Maximu..
--- quote --- Maximum traditional record filter expression text length 65,534 characters --- quote --- бгы... наглая бесстыдная ложь... на 570-символьном выражении (синтаксически корректном) установка "традиционного фильтра записей" выплёвывает "Operation too complex" :-) Фильтр имеет вид: !(CHR(255) $ NAME).AND.(NO="1234".OR.NO="2345".OR. <...> .OR.NO="9876")
|
|
|
|
| |
Пост N: 3091
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.04.13 16:21. Заголовок: p519446 пишет: бгы...
p519446 пишет: цитата: | бгы... наглая бесстыдная ложь... |
| Ну может для Clipper эта цифирь и поменьше будет и глядеть надо другой тутор
|
|
|
|
| |
Пост N: 125
Зарегистрирован: 07.08.06
|
|
Отправлено: 23.04.13 16:29. Заголовок: клипперное ограничен..
клипперное ограничение меня мало интересует: почти все фильтры идут через АДС. К счастью, я нигде жестко не кодировал магическое число типа "250", везде указана константа компиляции. Надо будет поэкспериментировать и увеличить её.
|
|
|
|
| |
Пост N: 3092
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.04.13 18:14. Заголовок: Крутятские у тебя фи..
Крутятские у тебя фильтра (в смысле длинные) Для чего нужны такие ? Для бровса , построения отчета ?
|
|
|
|
| |
Пост N: 126
Зарегистрирован: 07.08.06
|
|
Отправлено: 14.05.13 11:05. Заголовок: Для отчетов, вестимо..
Для отчетов, вестимо. Усер выбирает набор пунктов из некоторого множества, он может выбрать любое их число. Кол-во выбранных пунктов определяет длину условия вида '(some_id="091523".or.some_id="123407".or. ...)' Когда-то я напарывался на ограничение длины условия именно в АДСе, но не помню, при каких обст-вах и какой версии был тот АДС.
|
|
|
|
| |
Пост N: 127
Зарегистрирован: 07.08.06
|
|
Отправлено: 14.05.13 11:06. Заголовок: ЗЫ. Дим, пардон, что..
ЗЫ. Дим, пардон, что ответил с таким опозданием. В форум редко захожу. Если что-то интересно, мыль - всегда буду рад пообщаться.
|
|
|
|
| |
Пост N: 3145
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.05.13 11:38. Заголовок: p519446 пишет: Для ..
p519446 пишет: Ни когда не юзаю фильтра в отчетах. Хожу по индексу. Но это дело хозяйское конечно ;)
|
|
|
|
| |
Пост N: 128
Зарегистрирован: 07.08.06
|
|
Отправлено: 14.05.13 11:51. Заголовок: > Ни когда не юз..
> Ни когда не юзаю фильтра в отчетах. Хожу по индексу. Но это дело хозяйское конечно ;) Вот эта вот хрень: SELECT(cSomeALias) SET ORDER TO 0 // !!! AX_SETSERVERAOF("многабукаф", .T.) // !!! поставить обязательно второй аргумент = .T. !!! DBGOTOP() WHILE !EOF() ... ENDD - выполнится не просто быстро, а ОЧЕНЬ быстро. Даже при ax_EvalServerAOF() = 2, т.е. когда индексы не могут быть заюзаны в полный рост. Главное - set order to 0 перед тем, как поставить AOF-фильтр.
|
|
|
|
| |
Пост N: 129
Зарегистрирован: 07.08.06
|
|
Отправлено: 14.05.13 11:51. Заголовок: PS. Индексов ведь на..
PS. Индексов ведь на каждый чих не напасёшься....
|
|
|
|
| |
Пост N: 160
Зарегистрирован: 07.08.06
|
|
Отправлено: 07.06.13 16:10. Заголовок: Поднимаю тему. Напор..
Поднимаю тему. Напоролся я всё-таки на какое-то скрытое ограничение. Вот на таком фильтре ax_evalaofexpr() вернёт число 2 (т.е. типа ошибки НЕТ, хотя фильтр и не полностью оптимизированный), но ax_setserveraof() вернёт .F. и при этом ax_error() будет равен 6605 (Advantage Error Code 6605 Client Comm Layer Received More Data from the Advantage Database Server than it was Expecting) NDOC+YEMO="762EL3201304" .AND.(STOK="000055".OR.STOK="000067".OR.STOK="000068".OR.STOK="000056".OR.STOK=" 000057".OR.STOK="000063".OR.STOK="000064".OR.STOK="000058".OR.STOK="000059".OR.S TOK="000062".OR.STOK="000065".OR.STOK="000158".OR.STOK="000159".OR.STOK="000160" .OR.STOK="000080") .AND.(WRPOST+WRCODE="ST300104".OR.WRPOST+WRCODE="ST300109".OR.WRPOST+WRCODE="ST300110".OR. < ... дальше еще ~1500 байт аналогичного дерьма...> .OR.WRPOST+WRCODE="ST200255")
|
|
|
|
|
| |
Пост N: 3209
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.06.13 16:31. Заголовок: Не проще ли юзать ..
Не проще ли юзать API клиентского AOF ?
|
|
|
|
| |
Пост N: 161
Зарегистрирован: 07.08.06
|
|
Отправлено: 07.06.13 16:38. Заголовок: Оно у мну валит прог..
Оно у мну валит прогу по GPF, в самых разных местах причём. Причину установить не смог, некогда было :(
|
|
|
|
| |
Пост N: 3210
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.06.13 17:21. Заголовок: p519446 Ну тогда вм..
p519446 Ну тогда вместо них можно юзать RIO фильтра из SIX , просто переоткрыв базу в другой рабочей области с RDD SIX. Там есть подобный механизм и даже более гибкий. Проверено работает и не медленно.
|
|
|
|
| |
Пост N: 162
Зарегистрирован: 07.08.06
|
|
Отправлено: 08.06.13 09:05. Заголовок: Для составления отче..
Для составления отчетов, когда таблица только читается - да, это выход. За идею спс, попробую.
|
|
|
|