Как заставить работать prop:SQLOrder?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Как заставить работать prop:SQLOrder?
C8.0.9759, ABC, Firebird 2.1. Есть стандартный броуз с несколькими вариантами сортировки, которые реализуются стандартно через SHEET и TABы. Одну сортировку мне надо задать через prop:SQLOrder. Как это правильно сделать? Попытка тупо присвоить вьюхе значение в методе ApplyOrder приводит к задвоению записей и прочей ерунде. С prop:Order проблем не вижу, всё чётко.
We are hard at work… for you. 

-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Re: Как заставить работать prop:SQLOrder?
Добрый день.
Попробуйте добавить в ключ этого шита -первичный ключ таблицы.
Алексей
Попробуйте добавить в ключ этого шита -первичный ключ таблицы.
Алексей
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Как заставить работать prop:SQLOrder?
Естественно, первичный ключ есть. И запрос на сервер уходит правильный. Может баг 8-ки?
We are hard at work… for you. 

-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Re: Как заставить работать prop:SQLOrder?
Добрый день!
Попробуйте добавить уникальное ключевое поле последним в список order.
Может вот это поможет:
http://computer-programming-forum.com/1 ... 73c982.htm
Алексей
Попробуйте добавить уникальное ключевое поле последним в список order.
Может вот это поможет:
http://computer-programming-forum.com/1 ... 73c982.htm
Алексей
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Как заставить работать prop:SQLOrder?
Судя по этому старому форуму, проблема застарелая.
Я сделал эксперимент. Если пишу вот так:
то всё нормально. А если так:
то всё плохо.
Запросы на сервер посылаются одинаковые. Может драйвер ODBC глючит? Ну раз такое дело, может кто подскажет, как перевести SQL синтаксис на кларионовский:
Я сделал эксперимент. Если пишу вот так:
Код: Выделить всё
BRW1::View:Browse{prop:Order} = '+SPR:KOD_SPR, +SPR:ID_SPR'
Код: Выделить всё
BRW1::View:Browse{prop:SQLOrder} = 'a.kod_spr, a.id_spr'
Запросы на сервер посылаются одинаковые. Может драйвер ODBC глючит? Ну раз такое дело, может кто подскажет, как перевести SQL синтаксис на кларионовский:
Код: Выделить всё
order by cast(a.kod_spr as char(10)), a.id_spr
We are hard at work… for you. 

- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Как заставить работать prop:SQLOrder?
Посмотри описание функции SORT в справке Кларион. Там можно в качестве параметра задавать функцию. В которой пары, можешь сравнивать как хочешь!kreator писал(а):Запросы на сервер посылаются одинаковые. Может драйвер ODBC глючит? Ну раз такое дело, может кто подскажет, как перевести SQL синтаксис на кларионовский:
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Re: Как заставить работать prop:SQLOrder?
Добрый день!
Я не пользовал sql order, но во всю использую sql filter.
Так вот все имена полей в prop пишу только большими буквами и без каких-либо префиксов.
Иначе запросы не работают.
В order я думаю так же
Алексей
Я не пользовал sql order, но во всю использую sql filter.
Так вот все имена полей в prop пишу только большими буквами и без каких-либо префиксов.
Иначе запросы не работают.
В order я думаю так же
Алексей
- Губин Игорь
- Шубуршун
- Сообщения: 2584
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 26 раз
Re: Как заставить работать prop:SQLOrder?
Код: Выделить всё
BRW1::View:Browse{prop:Order} = '+SPR:KOD_SPR, +SPR:ID_SPR'
Код: Выделить всё
BRW1::View:Browse{prop:SQLOrder} = 'a.kod_spr, a.id_spr'
Это я только кажусь дураком! На самом деле я полный идиот!
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Как заставить работать prop:SQLOrder?
SORT работает, например, если после формирования QUEUE в ResetQueue его выполнить, но при этом локатор не так работает (в принципе ерунда) и, что больше напрягает, сортировка у Clarion странная - "116-1" раньше "116" (Firebird сортирует наоборот, что правильно).Admin писал(а):Посмотри описание функции SORT в справке Кларион. Там можно в качестве параметра задавать функцию. В которой пары, можешь сравнивать как хочешь!
В prop:SQL (prop:SQLFilter, prop:SQLOrder) под префиксом я понимаю "a.", "b.". Без такого, в принципе, нельзя, можно только, если одна таблица.Алексей- Софт-Центр писал(а):Так вот все имена полей в prop пишу только большими буквами и без каких-либо префиксов.
Игорь, а можно поподробнее, что это значит. Ведь prop:SQLFilter работает как надо. У меня много броузов с динамическими SQL фильтрами, никакими bind я не пользуюсь, и ошибок не замечено. Может, конечно, для SQLOrder всё по-другому.Губин Игорь писал(а):А не в Evaluate тут засада? Ведь второй вариант явно идёт от файла, а при BIND получают обозначения с префиксом
We are hard at work… for you. 

- Губин Игорь
- Шубуршун
- Сообщения: 2584
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 26 раз
Re: Как заставить работать prop:SQLOrder?
Я предположил, что тут {prop:SQLOrder} как-то отрабатывает через Evaluate, который обрабатывает то, что ему выдаёт BIND. А Бинд не занет об а.поле, а знает об прф:поле.
Это я только кажусь дураком! На самом деле я полный идиот!
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Как заставить работать prop:SQLOrder?
Я сделал как в хелпе описано. И запрос посылается правильно. На самом деле при первом формировании броуза всё хорошо. Проблемы появляются при переключении закладок, при использовании того же локатора. Мои умозаключения такие. Я в методе ApplyOrder обнуляю заданный изначально prop:Order и он уже не восстанавливается. А другие методы (в, частности, локаторные) используют именно prop:Order. Похоже, кратковременная замена prop:Order на prop:SQLOrder работает на ура. А вот как подменить в самом классе это дело?
We are hard at work… for you. 
