Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.06.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.004 c
2-1240291958
девушка
2009-04-21 09:32
2009.06.07
Массовая печать


15-1238574558
Правильный$Вася
2009-04-01 12:29
2009.06.07
начали выпускать автосамолет


15-1238840732
ZeroDivide
2009-04-04 14:25
2009.06.07
Кто-то тут по поводу труб сокрушался...


15-1238873143
oxffff
2009-04-04 23:25
2009.06.07
Чем захватить Direct3d9?


15-1238166159
Azazello
2009-03-27 18:02
2009.06.07
Иконка приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский