-
Доброго времени суток! Собственно сабж, никак не выходит.. (( Перелопатил кучу инфы в сети нашел, что народ решает эту задачу создавая глобальную переменную в которую и передает запрос, а потом при клике на колонке переоткрывает его меняя order by + Index колонки:
http://base.vingrad.ru/view/1180-Sortirovka-DBGrid-po-kliku-na-kolonke Но у меня в запросе куча параметров и уже есть сортировка. Как решить?
Была идея извлекать и SQL.Text и менять order by а потом повторно присвоить и открыть запрос, но не уверен что прокатит без передачи параметров.. ((
-
D2010, FB2.5, ibquery
-
> Но у меня в запросе куча параметров и уже есть сортировка.
> Как решить?
Очевидно, изменить запрос в части Order by, повторно присвоить параметрам значения и выполнить. Другого пути попросту нет.
-
А что будет с ранее переданными параметрами в запрос? Они вытянутся с SQL.Text? Выполниться запрос просто с измененным order by? Повторная передача параметров будет довольно затруднительной.. Разве что постоянно где-то в глобалках их хранить тоже придется, чего бы не оч.хотелось..
-
Проблема в том что меняются не только запросы но и количество параметров в них, так-как в DbGrid выводятся разные поисковые данные. Если еще с подменой order by более-менее понятно, то как выполнить парсинг SQL.Text чтобы узнать количество переданных параметров даже не представляю.. ((
-
у тебя соседский дядя что ли sql текст формирует
что ты без понятия сколько там параметров в твоем запросе?
-
)) пользователь можт че угодно искать в базе и параметры соответственно меняются.. и их количество также.. Все-таки параметры нужно хранить и снова передавать. С датасетом никак не получится пересортировать?
-
другого способа пересортировки в обычном DbGrid нет? чтобы не юзать EhLibы всякие..
-
пользователь можт че угодно искать в базе
кто конкретно меняет текст sql?
пользователь или программист?
-
пользователь можт че угодно искать в базе и параметры соответственно меняются.. и их количество также..
ой бедааа......
возьмем например TQuery из D2.
писали его в середине девяностых прошлого века.
сегодня я беру его, записываю произвольный sql text с произвольным количеством параметров.
и о чудо! оно работает даже в 17 году следующего столетия.
это что же получается?
получается они в 94 году уже знали какой я запрос напишу в 17 году и сколько в нем будет параметров?
крута.....
-
пользователь задает параметрі поиска в программе, а она формирует запрос в базу, но количество параметров действительно может меняться. if then else короче.. ((
-
и што?
действия пользователя каким-то магическим способом уничтожает коллекцию парамз у датасета что ты ее перестаешь видеть?
-
пользователь задает параметрі поиска в программе, а она формирует запрос в базу
а ну понятно.
есть пользователь и есть "она".
программист здесь не предусмартивался изначально.
чо тогда паришься?
если "она" формирует запрос, то пусть "она" и с параметрами разбирается.
а ты отмечай новый год.
-
)) она - программа, просто незнаю как параметры у датасета вытащить? подскажете? а с подменой order by запроса уже разберусь...
-
некогда праздновать, заказчик напрягает.. ((
-
конечно подскажу.
про параметры датасета твоего
надо читать доку датасета твоего.
там же можно прочитать есть ли у него клиентский сорт и работает ли он.
заказчик его напрягает ....
как все серьезно ио там
-
FB 2.5 действительно серьезно.. стал бы я спрашивать если бы сам знал.. ((
-
ты бы лучше заказчиков заводил не до прочтения доки а после.
ага.
"серьезная фирма возьмет дырокол в аренду"...
-
> А что будет с ранее переданными параметрами в запрос?
Их надо запомнить перед тем, как менять текст SQL-запроса. В твоем случае ничего не меняется кроме части order by, следовательно, количество параметров тоже не изменится.
-
Количество параметров варьируется в зависимости от условий поиска. Хранить их в глобалках или их можно вытащить из датасета и повторно присвоить перед выполнением измененного запроса?