Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.07;
Скачать: CL | DM;

Вниз

Сортировка таблици   Найти похожие ветки 

 
devidart   (2009-04-22 16:26) [0]

Все привет!
Подскажите как лучше сделать:

Есть такстовый файл - результат экспорта из Excel, фактически - матрица.
На форме есть грид.
Нужно заполнить этот грид строками из файла, но в правильной сортировке: сначала цифры по возрастанию, потом буквы по алфавиту и т.д.
Так же, если значения в первом столбще совпадают, то строки должны быть отсортированы по второму столбцу и т.д.

Писать вручную сортировку - как-то не айс, может кто подскажет класс, с помощью которого можно это легко провернуть?

Пробовал стринглистом, но он неправильно сортирует по цифрам, например 10 у меня выше, чем 3.

Пробовал в дельфях запихать данные обратно в Excel и провести сортировку, но опять же непонятно, как сделать сортировку по второму, третьему и т.д. столбцам.

На VBA это выглядело так:

Range("A1:C18").Select
   ActiveWorkbook.Worksheets("Ëèñò1").Sort.SortFields.Clear
   ActiveWorkbook.Worksheets("Ëèñò1").Sort.SortFields.Add Key:=Range("A1:A18"), _
       SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   ActiveWorkbook.Worksheets("Ëèñò1").Sort.SortFields.Add Key:=Range("B1:B18"), _
       SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   ActiveWorkbook.Worksheets("Ëèñò1").Sort.SortFields.Add Key:=Range("C1:C18"), _
       SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   With ActiveWorkbook.Worksheets("Ëèñò1").Sort
       .SetRange Range("A1:C18")
       .Header = xlGuess
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
   End With


Но в дельфях не знаю, как добавлять уровни сортировки.

А вообще, хотелось бы это сделать без использования Excel - это очень крайний вариант.

Заранее спасибо!


 
sniknik ©   (2009-04-22 17:31) [1]

> класс, с помощью которого можно это легко провернуть?
TADODataSet


 
devidart   (2009-04-22 17:41) [2]

А можно поподробнее?


 
sniknik ©   (2009-04-22 18:59) [3]

подробнее, это как раз тот класс по обработке данных с которым  "это легко провернуть".
чего неясного?
фактически весь код сортировки по полю  будет ADODataSet1.sort:= "поле1";

есть и другие возможности, например подключение (через коннект) к разным провайдерам данных, например jet, с помощью которого можно загрузить данные прямо из Excel без предварительных экспортов. ну и грид (если это dbгрид) сам заполняется строками из него простым их соединением посредством датасоурса.

ну и т.д. и т.д. хватит подробностей, не стоит отбивать хлеб у писателей книг и хелпов.


 
devidart   (2009-04-22 19:27) [4]

Блин. Причем тут дата сет вообще?
Как в него данные запихать из файла??
У него ведь обязательные поля  DataSource И COnnection
К чему коннектиться?? Откуда сорситься???


 
sniknik ©   (2009-04-22 20:04) [5]

> Блин. Причем тут дата сет вообще?
при том, что он предназначен для принятия и обработки данных.

> Как в него данные запихать из файла??
учитесь и обрящете... не проблема прочитать из экселевского файла, или вообще разнотипных баз, думаешь с простым текстовиком не справится? жестоко ошибаешься.

> У него ведь обязательные поля  DataSource И COnnection
кто сказал? нет они не обязательны, они чисто для удобства получения данных из разных источников.

> К чему коннектиться?? Откуда сорситься???
а вот это оставим для изучения из книг. найди сам, для того чего ты там хочешь прочитать, для екселя можешь воспользоваться данной мной ранее "наколкой".


 
sniknik ©   (2009-04-22 20:12) [6]

и вообще вопрос про то как "запихать" второстепенный, первым был с помощью какого класса легко провернуть сортировку, ну так это самый простой.
и да я не дописал, не обратил внимания на
>  как сделать сортировку по второму, третьему и т.д.
расширю пример ->
ADODataSet1.sort:= "поле1, поле2, поле3, полетд";


 
devidart   (2009-04-22 21:56) [7]

да, лучше бы вообще не отвечал...
Если сложно написать, или раздражает, что сам не могу найти - обходи тему стороной и делов-то.


 
Сергей М. ©   (2009-04-22 22:25) [8]


> Есть такстовый файл - результат экспорта из Excel


А что, отсортировать данные средствами Excel и экспортировать из него в файл уже отсортированные должным образом данные некошерно ?

И за каким лешим вообще нужен этот файл, если существует возможнось непосредственной связи активного Excel-листа и дельфийского грида ?


 
Игорь Шевченко ©   (2009-04-22 22:28) [9]


> Нужно заполнить этот грид строками из файла, но в правильной
> сортировке: сначала цифры по возрастанию, потом буквы по
> алфавиту и т.д.
> Так же, если значения в первом столбще совпадают, то строки
> должны быть отсортированы по второму столбцу и т.д.


откуда в текстовом файле столбцы ?


 
devidart   (2009-04-22 22:32) [10]


> А что, отсортировать данные средствами Excel и экспортировать
> из него в файл уже отсортированные должным образом данные
> некошерно ?
>
> И за каким лешим вообще нужен этот файл, если существует
> возможнось непосредственной связи активного Excel-листа
> и дельфийского грида ?


Ну вот так надо сделать...


> откуда в текстовом файле столбцы ?

Столбцами называем колонки текста, разделенные символом табуляции


 
turbouser ©   (2009-04-22 23:43) [11]


> devidart   (22.04.09 22:32) [10]

clientdataset (dxmemdata, kbmmemtable, etc.) + csv парсер или готовый csvdataset какой-нибудь, таких навалом, в jedi например есть такой..


 
Германн ©   (2009-04-23 00:22) [12]


> devidart   (22.04.09 21:56) [7]
>
> да, лучше бы вообще не отвечал...

Дождёшься, что и вправду перестанет отвечать. А тогда, вполне вероятно, тебе же будет плохо.


 
Anatoly Podgoretsky ©   (2009-04-23 08:41) [13]

10 это не цифра, а число или строка.
Числа можно численно сортировать, но только это если это числа, а не изображение чисел.



Страницы: 1 вся ветка

Текущий архив: 2009.06.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
2-1240403175
devidart
2009-04-22 16:26
2009.06.07
Сортировка таблици


2-1240333672
Дмитрий
2009-04-21 21:07
2009.06.07
Не работает программа.


15-1238790611
Юрий
2009-04-04 00:30
2009.06.07
С днем рождения ! 4 апреля 2009 суббота


11-1176366189
Dmitry___
2007-04-12 12:23
2009.06.07
Курсорные клавиши в Memo на форме внутри dll


15-1238498323
Немо
2009-03-31 15:18
2009.06.07
что это может быть *.fbk ?