powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сортировка TDxMemData
23 сообщений из 23, страница 1 из 1
Сортировка TDxMemData
    #39664018
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, возник возможно нубский, но мне непонятный. Использую связку MemData+cxGrid+FastReport. При сортировке грида и вывода его через FR, теряется сортировка. Как это можно победить?
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664019
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грид не датасет, он в себе сортирует (судя по всему все записи грузит в себя).
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664028
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, ну я ужо так и подумал. А вот интересно, можно это дело как то обойти, например переоткрыть датасет или отфильтровать его. Или получается надо непосредственно к строкам грида обращаться?
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664036
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я еще помню, что у грида есть функция экпорта, но мне например хотелось бы вписать туда свои заголовки, без стилей с определенным шрифтом и полями...
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664045
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обнаружил, что memdate можно указать поле для сортировки. Получается если передать это поле в коде при сортировке грида в мемку, думаю это может сработать. Пока только не знаю как, надо подумать
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664068
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Печатайте грид, а не датасет
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664069
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dartveider13,

А, откуда беруться данные в MemData ?
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664080
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из внешенго дат-файла или алгоритмом программы. Не связано с субд
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664090
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как выдернуть имя поля привязанное к колонке через AColumn: TcxGridColumn? Там помоему как то через индекс...
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664092
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dartveider13,

У FastRepa есть UserDataset, соответственно можно передавать данные с любой сортировкой/фильтрацией - хоть из грида, хоть из любого другого места
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664097
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpub, Это не подойдет, так как уже на этапе передачи MemData не сортирована. Я уже практически нашел решение. Не могу вспомнить как через AColumn получить привязанный к нему FieldName
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664111
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13Не могу вспомнить как через AColumn получить привязанный к нему FieldName
Привести колонку к нужному типу
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664116
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да да. Я уже нашел. Спасибо.

Код: pascal
1.
MemData.SortedField := (GVMain.Items[Acolumn.Index] as TcxGridDBColumn).DataBinding. FieldName



Сейчас еще возрастание и убывание учту и будет збс
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664126
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если пользователь наложит фильтр ?
И отсортирует по 2 колонкам ?
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664132
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, почему нельзя передавать в FR из GridView.DataController.Values... (не помню точно, как пишется) ?
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664137
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpubА, почему нельзя передавать в FR из GridView.DataController.Values... (не помню точно, как пишется) ?
Можно и нужно, но ТС хочет повозиться с MemData. Пусть повозится, всё равно придёт к тому что нужно брать данные с Грида
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664291
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13,

такие мысли:

я посмотрел у себя в dxMemData, там есть метод TdxMemData.MakeRecordSort, который собственно и производит сортировку датасета.

Не знаю как там в cxMemData, но если они, к примеру, предусмотрели какое-нибудь OnCompare событие, то можно было бы отсортировать датасет так же как в гриде.
Или вообще, написать свою процедуру на базе MakeRecordSort, пользуясь public свойством датасета TdxMemData.Values: TList
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664296
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, .Data.Values
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664303
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.P.S.

Или вообще


кардинальное решение #1:
1.1) заводим второй датасет, копию которого заполняем на основе грида и подаем в FastReport


кардинальное решение #2:
2.1) меняем cxMemData датасет на SQLMemTable: http://www.aidaim.com/in-memory_sql_database_delphi.htm
2.2) в FastReport подаем не датасет, а SQLMemQuery с ORDER BY по некоторому полю
2.3) которое можно было бы проапдейтить на основе грида
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664321
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое простое - UserDataset.
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39664332
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну или если охота извращаться...

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
procedure TForm1.btn1Click(Sender: TObject);
begin
    if tbl2.Active then tbl2.Close;
    tbl2.Active:= True;

    cxGrid1DBTableView1.DataController.ForEachRow(False, FillToNew);
end;



procedure TForm1.FillToNew(ARowIndex: Integer; ARowInfo: TcxRowInfo);
var
  f1: Integer;
  f2: string;
begin
  f1:= cxGrid1DBTableView1.DataController.GetRowValue(ARowInfo, 1);
  f2:= cxGrid1DBTableView1.DataController.GetRowValue(ARowInfo, 2);

  tbl2.AppendRecord([nil, f1, f2 ]);
end;
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39665044
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ух ты сколько интересных решений. Спасибо большое. Возможно в дальнейшем, если у меня будет грид с мультисортировкой то да, перепишу. Но пока сортировка включена по одному полю.
С SQLMemTable не пробовал работать, посмотрю на досуге што зазверь такой.
В любом случае спасибо Вам за дельные советы
...
Рейтинг: 0 / 0
Сортировка TDxMemData
    #39665134
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13Возможно в дальнейшем, если у меня будет грид с мультисортировкой
Ну так включи, сделай и забудь. Чем потом переделывать. Пусть пользователь сортирует как ему кгодно
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сортировка TDxMemData
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]