Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сортировка в DBGridEh [D6, MSSQL]


freeman82 ©   (2004-06-17 12:15:00) 

Можно ли в DBGridEh организовать сортировку(не локальную),если НД получаем при помощи ADOStoredProcedure?


freeman82   (2004-06-17 13:56:00) [1]

>sniknik
На сколько я понял DBGRidEh просто добавляет в конец SQL запроса
ORDER BY.Еще у него есть свойтво SortLocal:boolean,если true то сортировка происходит в сетке DBGRidEh без повторного запроса к серверу, но в этом случае не происходит перемещения по НД.т.е. нет связи TStoredProcedure->TDataSourse->TDBGrid


sniknik   (2004-06-17 13:44:00) [2]

а DBGRidEh, ну это не по моей части, могу только попытатся догадатся.
> сортировку(не локальную)
т.е. курсор у тебя серверный. а на это скорее всего ограничение есть. попробуй к примеру с "другого конца" ADOQuery1.Sort:= '[Field Name]'; посмотри что скажет, наверняка будет более полная инфа чем посто "ошибка". кстати, куда она вылетает? и каким рейсом?
DBGRidEh должен пользоватся похожим механизмом сортировки, т.е. иметь данные для нее на локале. что будет если fetchall сделать?


freeman82   (2004-06-17 13:28:00) [3]

>sniknik
Запрос отрабатывает на OK,но при нажатии на заголовке столбца DBGRidEh,чтобы отсортировать вылетает ошибка.


sniknik   (2004-06-17 13:00:00) [4]

VARCHAR(4)?  
уверен что такое маленькое поле после задаеш?

тогда уж для гарантии
В программе
dm1.ADOQuery1.SQL.Text :='EXEC proc1 @param='+Copy(edit1.Text,1,1);

а вообще желательно озвучивать кто и куда не идет, а то может не там ловиш.


freeman82   (2004-06-17 12:49:00) [5]

>Artem03
Так тоже не идет.
Вот пример SP
CREATE PROCEDURE proc1
@param VARCHAR(4)
AS
SELECT     *
FROM table  
WHERE table.field=@param

В программе
dm1.ADOQuery1.SQL.Text :='EXEC proc1 @param='+edit1.Text;


Artem03   (2004-06-17 12:26:00) [6]

Можно, но при этом я использую не ADOStoredProcedure, а обычный TADOQuery, где пишу ADOQuery.SQL.Text:='EXEC <SP name>';. Необходимое условие - КАЖДОЕ поле в твоей SP должно иметь имя, (например SUM(...) AS <fieldname>), в противном случае при попытке сортировке при помощи DBGridEh последний ругнется.


Наверх

Титульная страница Поиск, карта сайта Написать письмо