Текущий архив: 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.48 MB
Время: 0.005 c