Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Список и ADO / 20 сообщений из 20, страница 1 из 1
07.06.2021, 16:26
    #40076164
Valery23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список и ADO
Подскажите в чем проблема и как её обойти

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

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

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

многоуровневые списки вас не спасут - только ленточная форма для показа возможных значений
...
Рейтинг: 0 / 0
07.06.2021, 20:12
    #40076226
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список и ADO
ПЕНСИОНЕРКА
..многоуровневые списки вас не спасут ...
Это почему же???
При 3(или4) уровнях структурирования в последнем COMBO будет 10-15, а то и меньше строк
А при поиске..в стране много одноименных населенных пунктов...Ошибки более вероятны,чем при использовании списков
...
Рейтинг: 0 / 0
08.06.2021, 14:00
    #40076399
Valery23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список и ADO
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
08.06.2021, 14:35
    #40076409
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список и ADO
Вообще-то я где-то в описании встречал, что комбобокс ограничен 10 000 записями. Может я и неправ, но такие цифры у меня в памяти отложились.
...
Рейтинг: 0 / 0
08.06.2021, 14:50
    #40076414
DarkMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список и ADO
Valery23
Как я понял свою ошибку, то это ограничение на длину строки в источнике 32 750 формы и контрола в Access См.здесь
...
Рейтинг: 0 / 0
08.06.2021, 14:53
    #40076418
Valery23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список и ADO
Joss,
В случае присваивания рекордсета комбобоксу, отображаются все записи, т.е. все 13845 строк (Вот с отчетами и ADO так не получается, и мне пришлось использовать временные таблицы для размещения данных отчетов). Но вот такое произвольное расположение колонок комбобоксом я вижу впервые (причем изменение положения в запросе ничего не меняет) и пока не знаю решения этой проблемы.
...
Рейтинг: 0 / 0
08.06.2021, 14:54
    #40076421
Valery23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список и ADO
DarkMan,

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

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

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

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

Поясните.
Последовательность в строке strSQL = "SELECT Goroda.GorodCode, Goroda.Gorod, Goroda.Oblast, Goroda.District FROM Goroda WHERE (((Goroda.Node)<>'EMS')) ORDER BY Goroda.Gorod;" не влияет на последовательность столбцов в комбобоксе.
...
Рейтинг: 0 / 0
10.06.2021, 12:42
    #40076848
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список и ADO
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
10.06.2021, 12:59
    #40076861
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список и ADO
Прошу пардону-RS не формы а чего-то-не знамо чего(наверное выборка из таблицы),а главное ЗАЧЕМ
...
Рейтинг: 0 / 0
10.06.2021, 13:30
    #40076879
Valery23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список и ADO
sdku,

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

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


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