Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Не работает Sort!


Автор: Litta 5.8.2008, 17:42
Приветствую!

Проблема в следующем: нужно отсортировать данные в файле. Файл формируется из Delphi,7 состоит из шапки и двух столбцов A - id товара, B - его название, изначально данные записываются по порядку id, соответственно в файле требуется отображение по алфавиту!
Сортировку прописываю так:

EWs.Range['A4','B'+IntToStr(n)].Sort(EWs.Range['B4','B'+IntToStr(n)],xlAscending, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, xlGuess, 1, False, xlTopToBottom, EmptyParam, xlSortNormal, EmptyParam, EmptyParam);

В результате выполнения получаю ошибку типа "Could not convert variant of type (Error) into type (Boolaen)" !

В uses модуля прописан и Excel2000 и ExcelXP, если Excel2000 убрать - ничего не меняется (на машине, кстати 2003 стоит). В качестве первого параметра указано "EWs.Range['B4','B'+IntToStr(n)]", хотя в примерах пишут EWs.Range['B5'] - но у меня в этом случае при компиляции сразу возникает ошибка о нехватке параметров!

В чём проблема???

Автор: Albinos_x 5.8.2008, 19:53
Цитата(Litta @  5.8.2008,  17:42 Найти цитируемый пост)
В uses модуля прописан и Excel2000 и ExcelXP, если Excel2000 убрать - ничего не меняется (на машине, кстати 2003 стоит)

и не должно... будет по умолчанию использовать тот модуль, который было предложено выбрать при установке...

Цитата(Litta @  5.8.2008,  17:42 Найти цитируемый пост)
EWs.Range['A4','B'+IntToStr(n)].Sort(EWs.Range['B4','B'+IntToStr(n)],xlAscending, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, xlGuess, 1, False, xlTopToBottom, EmptyParam, xlSortNormal, EmptyParam, EmptyParam);

имхо, косяк в расстановке параметров...:
Код

ExcelWorksheet1.Range['B4','B10'].Sort(Key1, Order1, key2, type_, Order2, Key3,
                                                               Order3, Header, OrderCustom, MatchCase,
                                                               Orientation, SortMetod, DataOption1,
                                                               DataOption2, DataOption3);


Автор: Litta 6.8.2008, 10:22
Ну не знаю, всё вроде уже пересмотрел, расставил...

Key1 - EWs.Range['B4','B'+IntToStr(n)]
Order1 - xlAscending
Key2 - у меня его по-идее ведь нету, поэтому EmptyParam
Type - ставил и xlSortValues и EmptyParam
Order2 - тоже нету (EmptyParam)
Key3 - EmptyParam
Order3 - EmptyParam
Header - было и xlGuess и xlNo (это потом когда прочитал что оно значит)
OrderCustom - 1
MatchCase - ставил и False и True
Orientation - так же было и xlTopToBottom и xlSortColumns
SortMethod - EmptyParam
DataOption1 - xlSortNormal
DataOption2 - EmptyParam
DataOption3 - EmptyParam

А всё равно не работает  smile 

Автор: Albinos_x 6.8.2008, 13:05
Цитата(Litta @  6.8.2008,  10:22 Найти цитируемый пост)
MatchCase - ставил и False и True

EmptyParam пробовал ставить?

Автор: Litta 6.8.2008, 15:16
Попробовал! Но ничего нового!

В итоге написал даже так:

EWs.Range['A4','B'+IntToStr(n)].Select; //эта строка полагаю не обязательна, но на всякий случай добавил


EWs.Range['A4','B'+IntToStr(n)].Sort
(EWs.Range['B4','B'+IntToStr(n)],EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,                                         EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

Но ошибка всё таже :(

Автор: Veroonya 24.7.2009, 05:24
Тоже занимаюсь проблемой упорядочивания, подскажите, откуда брать EmptyParam - он говорит Undeclared identifier: 'EmptyParam'

Упорядочивает по возрастанию у меня так:
Код

Excel.Selection.Sort(Sheet.Range['C1:C'+inttostr (Excel.ActiveSheet.UsedRange.Rows.Count)]);

Но это через переменные типа variant, а не через ExcelWorksheet1, ExcelApplication 1 и тд

Мне нужно упорядочить по убыванию, но я не знаю как  smile 

Автор: Albinos_x 30.7.2009, 23:16
EmptyParam в модуле Variants

Добавлено через 2 минуты и 38 секунд
Цитата(Veroonya @  24.7.2009,  05:24 Найти цитируемый пост)
Мне нужно упорядочить по убыванию, но я не знаю как

запиши макрос и посмотри как тм написано, деалй по аналогии не ошибёшся)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)