powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перекрестный запрос в подчиненной форме
12 сообщений из 12, страница 1 из 1
Перекрестный запрос в подчиненной форме
    #39307043
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, уважаемые знатоки Access!

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

Суть проблемы.
У меня есть таблица Хранилище_значений_св-в. Там хранятся значения свойств всех инструментов, причем каждому типу инструментов соответствует свой набор свойств. В форме, которую я пытаюсь сделать (Просмотр_инструмента) нужно выводить данные из таблицы Хранилище_значений_св-в, отобранные по выбранному типу инструмента и в форме перекрестного запроса. Причем нужно, чтобы можно было к полученной таблице применять фильтры. И желательно выводить столбцы этой таблицы в определенном порядке, чтобы не было в заголовках столбцов хаоса: св-во3 св-во1 св-во4 св-во2, а было все в нужном порядке.

Сразу прикрепляю пример своей базы, потому как сложно на словах все объяснить.
Я уже довольно много форумов облазил и нигде решения своей проблемы не нашел. Пожалуйста, поправьте мой пример или приведите примеры решения этой проблемы свои и желательно поподробнее, потому как я в этом деле новичок.
Да, и желательно решить задачу в пределах аксеса, не экспортировать в эксель и там все делать.
...
Рейтинг: 0 / 0
Перекрестный запрос в подчиненной форме
    #39307069
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey8969,
Не особо понятна задумка, да и пример не моего формата, так что на вскидку
У таких запросов условие отбора для фильтра поля формы нужно прописывать еще и в начале запроса.
Примерный пример

PARAMETERS [Forms]![Заказы]![ВыборЗаказа] Text ( 255 );
TRANSFORM Sum(Цеха_Заказы.ГМЦЗ_Часов) AS [Sum-ГМЦЗ_Часов]
SELECT Цеха_Заказы.ГМ
FROM Цеха INNER JOIN (Заказы INNER JOIN Цеха_Заказы ON Заказы.З_Код = Цеха_Заказы.З_Код) ON Цеха.Ц_Код = Цеха_Заказы.Ц_Код
WHERE (((Заказы.Заказ)=[Forms]![Заказы]![ВыборЗаказа]))
GROUP BY Цеха_Заказы.ГМ
PIVOT Цеха.Цех;


Возможно разберетесь.
...
Рейтинг: 0 / 0
Перекрестный запрос в подчиненной форме
    #39307099
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey8969,
Я бы особо не заморачивался и создал бы таблицу как-то так. Плюс справочники:тип инструмента,наименований(зависимый от типа инструмента,сплав,тип резца для резцов-короче какие захотите:
...
Рейтинг: 0 / 0
Перекрестный запрос в подчиненной форме
    #39307122
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛапухSergey8969,
пример не моего формата

Прикрепил пример в другом формате. Надеюсь, откроете.

ЛапухSergey8969,
У таких запросов условие отбора для фильтра поля формы нужно прописывать еще и в начале запроса.


PARAMETERS [Формы]![Просмотр_инструмента]![Тип_инструмента_список] Text ( 255 );
TRANSFORM First([Хранилище_значений_св-в].Значение) AS [First-Значение]
SELECT Инструмент.тип_инструмента, Инструмент.[Маркировка_инстр-та]
FROM Инструмент INNER JOIN [Хранилище_значений_св-в] ON Инструмент.[Маркировка_инстр-та] = [Хранилище_значений_св-в].[Маркировка_инстр-та]
WHERE (((Инструмент.тип_инструмента)=[Формы]![Просмотр_инструмента]![Тип_инструмента_список]))
GROUP BY Инструмент.тип_инструмента, Инструмент.[Маркировка_инстр-та]
PIVOT [Хранилище_значений_св-в].Свойство;

Вот, попробовал сделать как вы говорите. Сам-то запрос запускается, а вот когда запускаешь форму с подчиненной формой, аксес ругается сначала:
"[Формы]![Просмотр_инструмента]![Тип_инструмента_список] не распознается ядром СУБД Microsoft Access как допустимое имя поля или выражения"

А если форму сохранить и открыть заново ругается уже на другое:
"Невозможно использование запроса к серверу или перекрестного запроса (без фиксированных столбцов) в качестве источника записей подчиненной формы или отчета. Перед установлением связи подчиненной формы или отчета с перекрестным запросом необходимо определить свойство запроса "Заголовки столбцов" (ColumnHeadings)."

Хотя там заголовки столбцов определены. Я так понимаю, ему не нравится прикрепленный к форме запрос без фиксированных столбцов (когда фильтр применяется, столбцы в перекрестном запросе меняются, т.к. для каждого типа инструмента свой набор свойств. Название свойств идут в заголовки столбцов. Меняешь тип инструмента - меняются и заголовки столбцов. Должно быть так) )
...
Рейтинг: 0 / 0
Перекрестный запрос в подчиненной форме
    #39307125
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuSergey8969,
Я бы особо не заморачивался и создал бы таблицу как-то так. Плюс справочники:тип инструмента,наименований(зависимый от типа инструмента,сплав,тип резца для резцов-короче какие захотите:

Если я правильно понял, вы предлагаете для каждого свойства сделать свой столбец в таблице? Типов инструмента у меня уже набралось около 30, причем для каждого типа несколько свойств идет (в примере я записал 4 типа, просто чтобы логика понятна была). По вашей схеме у меня получится огромная таблица под 50-100 столбцов, причем в основном она будет заполнена пустотой. Думаю, это не очень рационально
...
Рейтинг: 0 / 0
Перекрестный запрос в подчиненной форме
    #39307138
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извращенцы.
:)
...
Рейтинг: 0 / 0
Перекрестный запрос в подчиненной форме
    #39307180
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared,

Огромное спасибо! Наконец-то заработало как я хотел :)

Есть только небольшой вопрос по коду:
If Len(Me.cmbFind & vbNullString) > 0 Then
Зачем тут & vbNullString ? К значению поля прибавляется строка нулевой длины. Непонятно )


Кстати, вывод столбцов в нужном мне порядке тоже реализовал, добавив в таблицу "Соответствие_св-в_типу" столбец "Очередность_вывода". Потом по этому столбцу сортирую запрос и дело в шляпе.
Прикрепляю окончательный вариант.
...
Рейтинг: 0 / 0
Перекрестный запрос в подчиненной форме
    #39308712
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1
...
Рейтинг: 0 / 0
Перекрестный запрос в подчиненной форме
    #39308713
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эм.. я думал тут как-то можно удалять свои сообщения.. прошлое мое сообщение можно удалить. Я его случайно опубликовал
...
Рейтинг: 0 / 0
Перекрестный запрос в подчиненной форме
    #39310977
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один вопрос по перекрестному запросу..

TRANSFORM First([Хранилище_значений_св-в].Значение) AS [First-Значение]
SELECT Инструмент.[Маркировка_инстр-та], Склад.[Кол-во_склад]
FROM Склад INNER JOIN (Инструмент INNER JOIN [Хранилище_значений_св-в] ON Инструмент.[Маркировка_инстр-та] = [Хранилище_значений_св-в].[Маркировка_инстр-та]) ON Склад.[Маркировка_инстр-та] = Инструмент.[Маркировка_инстр-та]
WHERE (((Инструмент.[Тип_инструмента])='Фреза'))
GROUP BY Инструмент.[Маркировка_инстр-та], Склад.[Кол-во_склад]
PIVOT [Хранилище_значений_св-в].Свойство In ('Диаметр','Длина_реж_части','Черновая/чистовая','Сплав');

Как тут сделать, чтобы в запросе сначала шел столбец Инструмент.[Маркировка_инстр-та], затем столбцы из PIVOT [Хранилище_значений_св-в].Свойство In ('Диаметр','Длина_реж_части','Черновая/чистовая','Сплав'), а затем в самом конце шел столбец Склад.[Кол-во_склад] ? Возможно так сделать?
Запрос этот будет программно перестраиваться, так что статичные варианты не пойдут.

Прикладываю пример.
...
Рейтинг: 0 / 0
Перекрестный запрос в подчиненной форме
    #39310992
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно менять рантайм значение ColumnOrder Property.
Типа такого:
Код: vbnet
1.
2.
3.
        With Me.subForm.Form
            .Controls("Кол-во_склад").ColumnOrder = .Recordset.Fields.Count
        End With
...
Рейтинг: 0 / 0
Перекрестный запрос в подчиненной форме
    #39310997
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PredeclaredМожно менять рантайм значение ColumnOrder Property.
Типа такого:
Код: vbnet
1.
2.
3.
        With Me.subForm.Form
            .Controls("Кол-во_склад").ColumnOrder = .Recordset.Fields.Count
        End With



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


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