powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не отображаются данные в поле со списком.
25 сообщений из 62, страница 1 из 3
Не отображаются данные в поле со списком.
    #38196067
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. На форме (в табличном виде) имеется комбобокс. В источнике строк ссылка на запрос. Присоединенный столбец 1. Число столбцов 2 (в первом столбце ID, во втором текстовые данные). Ширина столбцов 0см;3см.
Когда открываю форму в большей части строк (практически во всех) не отображается значение (хотя в некоторых строках таки в наличии), просто пусто. Хотя я точно знаю что значение есть, да и при нажатии комбобокса выходит куча этих значений.
Меняю ширину столбцов ставлю 0,01см;3см. Теперь во всех строках отображается только первый столбец - ID, текстовой части нет. А при нажатии на комбобокс наоборот видно текстовую часть но нет ID.
Что за глюки? Может я что не так делаю?
Проект ADP Access 2003 + MS SQL 2008 R2
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196077
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иллюстрация к первому случаю:
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196079
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иллюстрация ко второму:
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196187
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изерлонер,

я спрошу ещё раз, на всякий
вы вот это - 13682062 - точно сделали ?
может - непомните или "приснилось" ... - сделайте ещё раз ...
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196189
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предположу, что в показанной таблице tblRequestContent_Buh содержатся коды, отсутствующие в таблице-источнике комбо. И записи с этими кодами в поле iKOD будут видеться пустыми в комбо, так как не имеют аналогов в таблице. Можно проверить запросом есть ли такие коды
Код: sql
1.
2.
3.
select t.iKOD 
from tblRequestContent_Buh t left join Таблица_Источник_Комбо q on t.iKOD=q.iKOD
where q.iKOD is null
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196283
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112,

я этого (установка фикса на сп3) точно не делал. После того как намучался с этими сервиспаками, фиксами, не получая удовлетворительного результата – скачал сборку со «всё включено» достаточно стабильную, в которой всех тех проблем не было.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196284
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

как и ожидал в результатах запроса пусто.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196292
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112Изерлонер,

я спрошу ещё раз, на всякий
вы вот это - 13682062 - точно сделали ?
может - непомните или "приснилось" ... - сделайте ещё раз ...
на всякий случай установил фикс еще раз. Без изменений.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196294
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дополнение. Определил что не показываются данные с определенного ID. :( т.е. все данные из текстового столбца с номером ID до 16746 в наличии. А вот дальше все пусто. Хотя в исходной таблице все в порядке.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196298
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196299
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в общем ... причину нашел. Причина в ограничении выводимых записей - 10000. Начиная с записи 10000 данные таблицы подстановки не отображаются. Решил установкой ограничения в настройках акса на 100000. ... Но как-то это... Вдруг количество записей там достигнет свыше 100000? Что теперь каждый раз ограничение менять?
И второе, если хочу что бы в таблице в комбобоксе отображались текстовые значения, а при выборе комбо можно было увидеть так же и коды, то как тогда быть? Установка ширины первого столбца (с ID) на 0,001 приводит к тому что отображается таки только первый столбец с ID, вместо текста.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196302
ЫLL HEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изерлонер,

зачем в форме держать 10000+ записей? они все нужны в один момент (при каждом открытии)?
когда записей много форму опирают на запрос с критериями или используют фильтр
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196326
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При таком количестве записей вместо комбобокса надо дать пользователю более удобный диалог выбора. С фильтрами, опциями выбора. Кроме того такого размера плоский однородный справочник - тоже не дело. Надо делать его иерархическим, переходить от плоского справочника а классификатору. А там если даже 1 000 000 разбить на три уровня - по 1000 на одном уровне останется.

Вопщем, похоже на ошибку проектирования.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196338
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЫLL HEAD,

это подчиненная форма. В форме контейнере видно только часть данных этой формы (весьма не большую не более 50 записей) отобранную по определённым критериям (вторая форма со связанной таблицей). Однако после отбора по этим критериям всё равно части текстовых данных не хватало. Пока не увеличил ограничение акса.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196341
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-Любитель,

это просто справочник материалов. Там иерархии то особо и не нужно.
Вообще не однократно убеждался в вашей правоте по тем или иным вопросам, но как правило только после того как сам массу шишек набью, потом вдруг вспоминаю ... а вот П–Л что то такое писал. :)
иначе как то не получается.
Ирония ещё в том что как раз сейчас пытаюсь несколько переделать свой первоначальный интерфейс на основе вашего замечания, набив несколько шишек :)
видимо не достаточно набил раз опять всё не так.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196348
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более чем уверен, что материалы можно классифицировать по куче признаков.

Сразу честно предупредю, что решения, когда в рамках табличной субформы можно разрулить мега комбобокс на туеву хучу позиций, я не знаю. Могу предложить некий паттерн для удовлетворительного на мой взгляд решения проблемы, как бы сделал я.

В вашей самой детальной таблице в дополнение КодуМатериала (это который щас комбобокс на 100000+ записей можно сделать временные поля Код1 и Код2.

Источником табличной формы делаем запрос, соединяющий таблицу данных со справочником материалов, с 2 уровнем, затем с 2 уровнем.
Отображать в форме поля (обычные, не комбо):
НазваниеКода1 из таблицы Классификация Уровень1,
НазваниеКода2 из таблицы Классификация Уровень2,
НазваниеМатериала из Справочника материалов

В нижней части формы сделать еще одноу субформу типа карточку, в которой выводить данные текущей записи детальной таблицы. Поскольку это форма-карточка, там можно динамически формировать источники строк комбо, забирая в источник только ограниченной число позиций. Последовательно выбирается Код1 - Фильтруется Код2, Код2 - Фильтруется КодМатериала.
Для работы этой формы-карточки использовать дополнительные временные поля Код1 и Код2 (денормализованные поля), которые специально сделать в таблице материалов.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196386
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте так. Конкретно вот эта задача, в этом топике не касается выбора каких то элементов списка из поля со списком. Только отображение. Возможность использования комбобокс блокирована. Может быть можно делать постановку с другими контролами, но мне проще показалось так, так как комбобокс уже использовал.
Там где комбо используется для выбора, там тоже выбора как такового (крутить через многие сотни позиций) не происходит, там просто начинаем водить первые символы, остальное уже автоматом поставляется.
Однако обратил внимание на одно весьма существенное, как мне показалось, замечание. У меня на самом деле часто встречается такой подход когда в форму загружается вся таблица, и уже затем отфильтровываются нужные данные. А как можно сделать иначе?
Ну вот конкретно по задаче в этом топике:
имеется две связанные таблицы, в форме представлены в виде подчиненных форм связанных через поле в форме– контейнере. Одна таблица документы («требования») вторая содержимое документа. При выборе документа в первой субформе по ключу, через поле в форме контейнере, выводится его содержимое (перечень материалов, запчастей) во второй. Однако изначально во вторую субформу загружена вся таблица (около ста тыс. записей). Такой же подход и в других подобных задачах. А как можно по другому?
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196392
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учитывая что проект АДП
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196570
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я об этом уже писал на этом форуме много-много раз.

Мне таки пришлось полностью взять на себя все механизмы загрузки данных в формы и субформы. Как следует из вашего ТЗ, у вас главная форма-окно контейнер без данных и две вложенных табличных формы - мастер и детельная. Как это сделано у меня.

1. Загружается главная форма. Она сразу же проявляется на экране.

2. На месте мастер грида выводится (строго такого же размера) бледно-желтая панель - данные загружаются, подождите, пожалуйста... Когда данные загрузились в мастер грид, желтая панель убирается, видны сами данные.

3. На месте детального грида выводится (строго такого же размера) бледно-желтая панель - данные загружаются, подождите, пожалуйста... В детальный грид загружаются только те данные, которые соответствуют текущей записи мастер-грида. Когда данные загрузились в детальный грид, желтая панель убирается, видны сами данные.

Как это устроено внутри.

В главной форме источники субформ очищены. Поэтому открывается пустая форма, мгновенно.

Присваивается саурс обжект мастер-гриду. В мастер-субформе источник строк тоже очищен. Он формируется, присваивается. Начинается загрузка данных. Пока она не закончится, видна желтая заставка. Когда данные загрузились (событие каррент) желтая панель убирается.

Присваивается саурс обджект детальному гриду. От тоже хранится с очищенным рекордсаурс. Источник строк формируется с отбором WHERE ID = <Значение из мастер грида>. Присваивается в роусаурс детального грида. Начинается загрузка отобранных детальных данных. Пока она не закончится, видна желтая заставка. Когда данные загрузились (событие каррент) желтая панель убирается.

Занимеются этим универсальные классы, обслуживающие все прикладные формы. На одном окне контейнере можно иметь много субформ, связванных иерархическими отношениями. Мастер-чаилд пришлось полностью переписать.

Чтобы сей механизм заработал, достаточно воткнуть в главную форму-контейра два пустых контрола-субформы и иметь все формы как таковые. Все остальное настраивается в конфигураторе прикладных форм, т.е. ни главная форма, ни субформы никакого кода не содержат, вся функциональность обеспечивается библиотекой классов.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196571
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В конструкторе.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196576
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот ее код.

Код: 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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
Option Compare Database
Option Explicit

Public WithEvents FormCard As FormCard

Private Sub Form_Open(Cancel As Integer)

Set FormCard = LIBRARY.modClassFactory.CreateFormCard()
    FormCard.BindLoad "", Me
    '   Ффсе... после этого аксес умывает руки. Дальше будут работать мои классы.
End Sub

Private Sub FormCard_AfterResizeFormTop(iTop As Integer, iLeft As Integer)

    '   Вопщем весь код - красивый ресайзинг. У меня в проекте нет нерезиновых форм (кроме модальных диалогов).
    Me.Painting = False
    
    With Me.lblPeriodYear
        .Top = iTop + 100
        .Left = 15
        .Width = Me.InsideWidth - .Left + 10
    End With
    
    With Me.grmPeriodYear
        .Top = 0: .Left = 0: .Height = 0: .Width = 0
    End With
    
    With Me!grmPeriodYear
        .Height = 0
        .Top = Me!lblPeriodYear.Top + Me!lblPeriodYear.Height
        .Left = Me!lblPeriodYear.Left
        Dim h: h = (Me.InsideHeight - .Top - Me.lblPeriodQuarter.Height) / 2
        If h < 1000 Then
            h = 1000
        End If
        .Height = h
        .Width = Me.InsideWidth - .Left + 10
    End With
    
    With Me.lblPeriodQuarter
        .Top = Me.grmPeriodYear.Top + Me.grmPeriodYear.Height
        .Left = Me.grmPeriodYear.Left
        .Width = Me.grmPeriodYear.Width
    End With
    
    With Me.grcPeriodQuarter
        .Height = 0
        .Top = Me.lblPeriodQuarter.Top + Me.lblPeriodQuarter.Height
        .Left = Me.lblPeriodQuarter.Left
        .Width = Me.lblPeriodQuarter.Width
        h = Me.InsideHeight - .Top + 10
        If h < 1000 Then h = 1000
        .Height = h
    End With
        
    Me.Painting = True
End Sub

Private Sub FormCard_AfterSetGrid(sTabPageName As String)
On Error Resume Next
    Call modForm.FindObjectByArgs(Me.grmPeriodYear.Form, "iPeriodYearNomer", Me.OpenArgs)
    Call modForm.FindObjectByArgs(Me.grcPeriodQuarter.Form, "iPeriodQuarterNomer", Me.OpenArgs)
End Sub



Кстати, я случайно взял у себя пример, где такая связка двух гридов сделана в форме-карточке, а не через форму-таблицу. Там внутри примерно то же самое. У меня даже форма-карточка оказалась достаточно смышленной - справилась.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196912
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А возможно ли установить рекордсорс одной подчиненной формы находясь в другой подчиненной форме?
Уже несколько раз перечитал FAQ по обращению к полям (и т.д.) подчиненных форм, все равно ничего не получается :(
По переходу на какую-либо запись в подчиненной форме являющейся ведущей выполняется следующий код:
Код: vbnet
1.
2.
3.
4.
Private Sub Form_Current()
   Forms![frmRequest]![ID_TAB] = Me![iRequest]
   Forms![frmRequest]![podchRequestContent_Buh].Form.Recordsource = "SELECT * FROM tblRequestContent_Buh Where iRequest = " & Forms![frmRequest]![ID_TAB]
End Sub



который неизменно завершается ошибкой: "Введенное выражение содержит недопустимую ссылку на свойство "Form/Report"
Первой строкой задается значение поля в форме контейнере.
Второй строкой по идее должен задаваться рекордсорс для второй подчиненной формы из таблицы отфильтрованной по значению поля в контейнере.

frmRequest - форма контейнер
podchRequestContent_Buh - контрол c подчиненной формой
cldRequestContent_Buh - подчиненная форма с детализацией.
ID_TAB - поле на форме контейнере.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196935
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы плохо читали ФАК .

Если правильно указывать имена контролов, то успех неизбежен. Совет: используйте Me. находясь в контексте формы. Не тащите цепочку имен от Forms!

Я бы написал примерно так:

Код: vbnet
1.
2.
3.
4.
5.
Me.Parent!ID_TAB = Me!iRequest
Me.Parent!podchRequestContent_Buh.Form.Recordsource = 
   "SELECT * " _
   "FROM tblRequestContent_Buh " & _
   "Where iRequest = " & Me.Parent!ID_TAB



Если имена правильные, должно работаь. Если не работает - ищите ошибки.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196941
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкоторый неизменно завершается ошибкой: "Введенное выражение содержит недопустимую ссылку на свойство "Form/Report"
А форма-то к этому времени в SourceObject уже загружена ? Под отладчиком все проверяется за пять секунд.
...
Рейтинг: 0 / 0
Не отображаются данные в поле со списком.
    #38196986
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П-Л
Если имена правильные, должно работаь. Если не работает - ищите ошибки.

При первом использовании выдает ту же самую ошибку. Однако если в выданном сообщении нажать End вместо Debug, дальше все работает как надо.
... Похоже действительно в начале форма не успевает загрузиться.

Спасибо за Me.Parent! . Самого ломает полностью путь прописывать, не знал что можно к родительской форме так обратится.
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 1 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не отображаются данные в поле со списком.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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