powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сортировка Value list
10 сообщений из 10, страница 1 из 1
Сортировка Value list
    #32768557
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется список значений для комбобокса - строка вида
"Один;Два;Три;Сто пятьдесят"
Каким образом будет проще отсортировать этот список - привести его к виду
"Два;Один;Сто пятьдесят;Три"?
...
Рейтинг: 0 / 0
Сортировка Value list
    #32768564
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Value list отсортировать наверно не получится.

Перенеси эти значения в таблицу и выбирай и сортируй оттуда :)
...
Рейтинг: 0 / 0
Сортировка Value list
    #32768617
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда получается довольно много таких таблиц, причем все небольшие - в районе 10 значений.

В общем, я собираюсь сделать функцию
Function GetList(listID As Double) As String
которая будет возвращать строку-список, отсортированную по значениям. Пока простых алгоритмов в голову не приходит, вот и хотелось в очередной раз убедиться, что все гениальное - просто...
...
Рейтинг: 0 / 0
Сортировка Value list
    #32768620
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если строка формируется
динамически, то есть ограничение
по длине строки. поэтому этот способ
не хорош.
предлагаю создать свободный
рекордсет. в него добавлять данные.
рекрдсет можно сортировать. а в конце подсунуть
рекродсет комбобокусу.

а если всего 4 значения, то проще
вручную вписать значения по возрастанию
...
Рейтинг: 0 / 0
Сортировка Value list
    #32768642
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Строки статичные, но самому следить за сортировкой ломает, поэтому и понадобилась функция...
...
Рейтинг: 0 / 0
Сортировка Value list
    #32768646
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
'открываем несвязанный набор записей
With rst
.Fields.Append "Name", adVarChar, 200
.Fields.Append "DateModified", adDate
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.Open

'здесь цикл по добавлению в рекрдсет
.AddNew
![Name] = aob.Name
!DateModified = aob.DateModified
.Update
'здесь цикл закрывается

'задаем сортировку в наборе записей
.Sort = [Name] & " ASC"
Set ПолеСоСписком.Recordset = rst
.Close
End With
...
Рейтинг: 0 / 0
Сортировка Value list
    #32768704
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YanisТогда получается довольно много таких таблиц, причем все небольшие - в районе 10 значений.


Таблицу можно использовать одну и на время, зачем их много.
Можно спихать сроковые значения в массив (Split), отсортировать и потом Join.
Есть и другие варианты
...
Рейтинг: 0 / 0
Сортировка Value list
    #32768737
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge GavrilovМожно спихать сроковые значения в массив (Split), отсортировать и потом Join.Спасибо, ты мне подсказал два ключевых слова :-)
Получилось вот что:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Function SortValueList(valueList As String) As String
    Dim Ar() As String
    Dim AnyChanges As Boolean
    Dim Swap As String
    Dim i
    
    Ar = Split(valueList, ";")

    Do
    AnyChanges = False
    For i =  0  To UBound(Ar()) -  1 
         If Ar(i) > Ar(i +  1 ) Then
              Swap = Ar(i)
              Ar(i) = Ar(i +  1 )
              Ar(i +  1 ) = Swap
              AnyChanges = True
         End If
    Next i
    Loop Until Not AnyChanges
     
    SortValueList = Join(Ar, ";")
End Function
Теперь буду счастлив услышать идеи по оптимизации.
Пузырьковую сортировку оптимизировать вроде не нужно, т.к., повторюсь, списки короткие
...
Рейтинг: 0 / 0
Сортировка Value list
    #32768868
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yanis...
Теперь буду счастлив услышать идеи по оптимизации.
Пузырьковую сортировку оптимизировать вроде не нужно, т.к., повторюсь, списки короткие
Это не оптимизация, а просто уменьшение кода

Код: plaintext
1.
2.
3.
4.
5.
6.
Function SortValueList(valueList As String) As String
    Dim Ar() As String
    Ar = Split(valueList, ";")
    WizHook.SortStringArray Ar
    SortValueList = Join(Ar, ";")
End Function
...
Рейтинг: 0 / 0
Сортировка Value list
    #32768895
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!

ЗЫ: А в Акцессе нет кнопки "сделать всё"? :-)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сортировка Value list
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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