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

я спрошу ещё раз, на всякий
вы вот это - 13682062 - точно сделали ?
может - непомните или "приснилось" ... - сделайте ещё раз ...
...
Рейтинг: 0 / 0
23.03.2013, 23:58
    #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
24.03.2013, 04:32
    #38196283
Изерлонер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отображаются данные в поле со списком.
qwerty112,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Чтобы сей механизм заработал, достаточно воткнуть в главную форму-контейра два пустых контрола-субформы и иметь все формы как таковые. Все остальное настраивается в конфигураторе прикладных форм, т.е. ни главная форма, ни субформы никакого кода не содержат, вся функциональность обеспечивается библиотекой классов.
...
Рейтинг: 0 / 0
24.03.2013, 18:36
    #38196571
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отображаются данные в поле со списком.
В конструкторе.
...
Рейтинг: 0 / 0
24.03.2013, 18:42
    #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
25.03.2013, 10:18
    #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
25.03.2013, 10:34
    #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
25.03.2013, 10:36
    #38196941
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отображаются данные в поле со списком.
авторкоторый неизменно завершается ошибкой: "Введенное выражение содержит недопустимую ссылку на свойство "Form/Report"
А форма-то к этому времени в SourceObject уже загружена ? Под отладчиком все проверяется за пять секунд.
...
Рейтинг: 0 / 0
25.03.2013, 11:00
    #38196986
Изерлонер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отображаются данные в поле со списком.
П-Л
Если имена правильные, должно работаь. Если не работает - ищите ошибки.

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

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


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