powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Список и ADO
20 сообщений из 20, страница 1 из 1
Список и ADO
    #40076164
Valery23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите в чем проблема и как её обойти

Пытаюсь засунуть комбобокс список из 13845 наcеленных пунктов, но не получается, комбобокс отображает только 2013 строк.
Access 16, mdb

Заполнение комбобокса при открытии формы
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Call ListAddItems(Me.name, "Gorod", "SELECT Goroda.GorodCode, Goroda.Gorod, Goroda.Oblast, Goroda.District FROM Goroda " _
& "ORDER BY Goroda.Gorod;", cnToDataBase)

'Модуль
Function ListAddItems(strNameOfForm As String, ctlList As String, strSQL As String, cnToDataBase As ADODB.Connection)
Dim rs As ADODB.Recordset, strRow As String, NameColonsOfList() As String, i As Long
Set rs = New ADODB.Recordset
rs.Open strSQL, cnToDataBase, adOpenForwardOnly, adLockReadOnly
A = CountRowsInTable(strSQL, cnToDataBase)
If CountRowsInTable(strSQL, cnToDataBase) > 0 Then

    ReDim NameColonsOfList(rs.Fields.count)
    For i = 0 To rs.Fields.count - 1
        NameColonsOfList(i) = rs.Fields(i).name
    Next i

    With Forms(strNameOfForm).Controls(ctlList)
        .RowSourceType = "Value List"
        .ColumnCount = UBound(NameColonsOfList)
        
        Do Until rs.EOF
        strRow = ""
            For i = 0 To UBound(NameColonsOfList) - 1
                strRow = strRow & ";" & rs.Fields(NameColonsOfList(i)).Value
            Next i
            .AddItem Right(strRow, Len(strRow) - 1)
        rs.MoveNext
        Loop
    End With
End If
rs.Close
Set rs = Nothing

End Function
...
Рейтинг: 0 / 0
Список и ADO
    #40076181
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery23
Пытаюсь засунуть комбобокс список из 13845 наcеленных пунктов, но не получается
Даже если получится как с ним работать. А может данные структурировать и сделать зависимые списки (республика,край\область,город\нас.пункт или использовать ОКТМО-есть доступные готовые разработки)
...
Рейтинг: 0 / 0
Список и ADO
    #40076221
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery23
Пытаюсь засунуть комбобокс список из 13845 наcеленных пунктов, но не получается, комбобокс отображает только 2013 строк.
Access 16, mdb

я бы сразу применила не список , а подчиненную ленточную форму, т,к, населенные пункты довольно часто повторяются(особенно мелкие) или меняют хозяина(район, область)

поэтому надо иметь возможность поиска/фильтрации
- по новому/старому названию, по части названия
- по старому/новому хозяину
- по типу населенного пункта
....

многоуровневые списки вас не спасут - только ленточная форма для показа возможных значений
...
Рейтинг: 0 / 0
Список и ADO
    #40076226
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА
..многоуровневые списки вас не спасут ...
Это почему же???
При 3(или4) уровнях структурирования в последнем COMBO будет 10-15, а то и меньше строк
А при поиске..в стране много одноименных населенных пунктов...Ошибки более вероятны,чем при использовании списков
...
Рейтинг: 0 / 0
Список и ADO
    #40076399
Valery23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Ранее я использовал DAO и из прилинкованной таблицы данные легко загружались и использовались. Мне в форме нужен фактически только города, остальные данные, как область, район, код города, используются как справочные и для уточнения конкретного города (много одинаковых названий).
С переходом на ADO прилинковка (по крайней мере в моей исполнении) перестала работать. Убрал все прилинкованные таблицы и оказалось при заполнении комбобокса значениями ("Value List") тоже есть засада. Как я понял свою ошибку, то это ограничение на длину строки в источнике 32 750 формы и контрола в Access https://support.microsoft.com/ru-ru/office/%D1%81%D0%BF%D0%B5%D1%86%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8-access-0cf3c66f-9cf2-4e32-9568-98c1025bb47c]
Сделал по другому (данные слава богу отображаются все):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim cnToDataBase As ADODB.Connection, rs As ADODB.Recordset, strSQL As String

Set cnToDataBase = GetConnectToDataBase
Forms!Form1.Goroda.RowSource = vbNullString
strSQL = "SELECT Goroda.GorodCode, Goroda.Gorod, Goroda.Oblast, Goroda.District FROM Goroda WHERE (((Goroda.Node)<>'EMS')) ORDER BY Goroda.Gorod;"
Set rs = New ADODB.Recordset
rs.Open strSQL, cnToDataBase, adOpenStatic, adLockReadOnly
Forms!Form1.Goroda.RowSourceType = "Table/Query"
Set Forms!Form1.Goroda.Recordset = rs
rs.Close
Set rs = Nothing

cnToDataBase.Close
Set cnToDataBase = Nothing


Но и тут засада, откуда не ожидал. Не оглядываясь на порядок в запросе, комбобокс отображает в другом порядке: Район, Город, КодГорода, Область. Что делать с порядком столбцов?
...
Рейтинг: 0 / 0
Список и ADO
    #40076409
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то я где-то в описании встречал, что комбобокс ограничен 10 000 записями. Может я и неправ, но такие цифры у меня в памяти отложились.
...
Рейтинг: 0 / 0
Список и ADO
    #40076414
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery23
Как я понял свою ошибку, то это ограничение на длину строки в источнике 32 750 формы и контрола в Access См.здесь
...
Рейтинг: 0 / 0
Список и ADO
    #40076418
Valery23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Joss,
В случае присваивания рекордсета комбобоксу, отображаются все записи, т.е. все 13845 строк (Вот с отчетами и ADO так не получается, и мне пришлось использовать временные таблицы для размещения данных отчетов). Но вот такое произвольное расположение колонок комбобоксом я вижу впервые (причем изменение положения в запросе ничего не меняет) и пока не знаю решения этой проблемы.
...
Рейтинг: 0 / 0
Список и ADO
    #40076421
Valery23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMan,

Все правильно. У меня не получилось нормально вставить в текст ссылку на туже страницу ;)
...
Рейтинг: 0 / 0
Список и ADO
    #40076425
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery23
Все правильно. У меня не получилось нормально вставить в текст ссылку на туже страницу ;)

Просто между Здесь нужен текст , или символы . :))
...
Рейтинг: 0 / 0
Список и ADO
    #40076428
Valery23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMan,

Спасибо, учту на будущее:)
...
Рейтинг: 0 / 0
Список и ADO
    #40076448
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery23
....Что делать с порядком столбцов?...
Какой в источнике-такой и в combo
покажите\посмотрите источник combo
...
Рейтинг: 0 / 0
Список и ADO
    #40076481
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery23
С переходом на ADO
чем вызвано?
...
Рейтинг: 0 / 0
Список и ADO
    #40076806
Valery23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

Захотелось идти в ногу со временем:)
Тренируюсь перед переходом на SQL server
...
Рейтинг: 0 / 0
Список и ADO
    #40076808
Valery23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Поясните.
Последовательность в строке strSQL = "SELECT Goroda.GorodCode, Goroda.Gorod, Goroda.Oblast, Goroda.District FROM Goroda WHERE (((Goroda.Node)<>'EMS')) ORDER BY Goroda.Gorod;" не влияет на последовательность столбцов в комбобоксе.
...
Рейтинг: 0 / 0
Список и ADO
    #40076848
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery23
sdku,

Поясните.
Последовательность в строке strSQL = "SELECT Goroda.GorodCode, Goroda.Gorod, Goroda.Oblast, Goroda.District FROM Goroda WHERE (((Goroda.Node)<>'EMS')) ORDER BY Goroda.Gorod;" не влияет на последовательность столбцов в комбобоксе.
А это есть строка по которой создается RS формы и никак не список в COMBO,который выглядит как-то так:
Код: vbnet
1.
Me.Combo.ROWSOURCE="SELECT...FROM...WHERE поле=" & что-то 'синтаксис зависит от типа данных

(или в окне свойств поля>источник строк-без VBA и RS) смена порядка полей в этом запросе изменит его и в списке
Если Вам только заполнить список при открытии формы, то VBA вообще не нужен
...
Рейтинг: 0 / 0
Список и ADO
    #40076861
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу пардону-RS не формы а чего-то-не знамо чего(наверное выборка из таблицы),а главное ЗАЧЕМ
...
Рейтинг: 0 / 0
Список и ADO
    #40076879
Valery23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Данные, которые должны отображаться в комбобоксе находятся в таблице в другой базе.
Средство достижения данных - ADODB.
Наполнение комбобокса с помощью ADODB через AddItem не получается ввиду ограничения на длину строки данных, наполнение с помощью рекордсета приводит к странной (по крайней мере для меня) последовательности колонок комбобокса.
Вот кратко о проблеме.
...
Рейтинг: 0 / 0
Список и ADO
    #40076897
Valery23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery23,

Спасибо всем! Разобрался со странной сортировкой. Оказалось, что требовалось указать расположение курсора rs.CursorLocation = adUseClient.
Теперь комбобокс отображается все записи (13845 наcеленных пунктов) и в правильном порядке.
...
Рейтинг: 0 / 0
Список и ADO
    #40076969
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery23
.....
Тренируюсь перед переходом на SQL server
Никак не "вкурю":почему нельзя выполнить запрос к сторонней БД и не назначить его источником combo???
А если на сервере,мало ли почему, изменят порядок столбцов?+в Вашем коде где коннект к сторонней базе
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Список и ADO
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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