powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вывод в сабформе всех значений
9 сообщений из 9, страница 1 из 1
Вывод в сабформе всех значений
    #32093792
DarkMadMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дано


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
tbl_products:               
 -------------- 
 
pk: product_id 
fk: category_id not null


tbl_ categories
 -------------
 
pk: category_id
  category_name



Все продукты имеют категорию . Хочу иметь в одной форме возможность выводить не только с разбивкой по категориям , но и все товары.
Через форма категории + субформа товары не получается выводить все категории разом .

Source формы такая ХП:

ALTER PROCEDURE dbo.stp_ChoiceProductsCategories
AS SELECT 0 ProductCategory_ID, 'All Product Categories' AS Product_Category_Name
UNION ALL
SELECT ProductCategory_ID, ProductCategory_name AS [Category Name]
FROM dbo.tbl_ProductCategories

Сорс сабформы tbl_products

Я уже ,млин ,чего только не пробовал .Когда сабформа сама по себе - все прекрасно выводится (все категории) ,когда же через подчиненную форму ну никак её заставить выводить товары со всеми существующими значениями в category_id нельзя - только какую -то. одну категорию.
...
Рейтинг: 0 / 0
Вывод в сабформе всех значений
    #32093883
Seryoga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если я правильно понял - желательно иметь нечто типа того:

---------------------------------------------------------
все категории товар-2.1
категория-1 товар2.2
-> категория-2
категория-3
---------------------------------------------------------

то есть для выделенной категории (в том числе - и "все категории") рядом показывать соответствующие товары?
тогда это не мастер-детэйл, а две сабформы рядом, события по переходам с записи на запись одной вызывают события изменения условия другой (можно и не сабформы, а списки, например), то есть событие на позиционирование на записи формы1 вызывает либо изменение фильтра формы2 либо изменение ее запроса-источника записей. Остается включить в форму1 несуществующюю позицию "все категории" и всё вроде получается. Если только я правильно осознал чё нужно %))
...
Рейтинг: 0 / 0
Вывод в сабформе всех значений
    #32094344
DarkMadMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нифига не понял тогда принципиального различия между мастер-дитейл , и просто двумя сабформами...

Ну да ладно не в этом суть :

есть Кат1 , Кат2...KatN , сейчас ( с мастер и сабформой) при выборе в главной форме какой-то категории в комбоксе в сабформе автоматически выбираются товары с такой категорией .Всё зашибись - именно так мне и надо (правда не знаю как уж access "знает" что надо выбрать именно по категории,а не по ещё куче аттрибутов) . Всё вроде ничего кроме нескольких моментов :

1) При изменении в сабформе у товара категории он так и остётся на том же месте пока не кликнешь ещё раз на выборе категории

2) Очень хочу чтобы была возможность выбрать в главной форме пунктик " Все"
И тогда в сабформе показались бы все товары (сейчас там ни одного товара не показывается ,поскольку ни у одного товара Category_Id<>0)

3)Комбобокс в главной форме малость приглюченный- я немогу выбрать через pull down ничего- говорит" Product_Category Name is based on an expression and can't be edited .Только через кнопки предудущая/следующая запись работает.


P.s. Я в инете кучу прочел всего насчет " все" в Акссессе но то ли я совсем глупый , то ли все их примеры ко мне не подходят . Обычно в примерах через list списко товаров выводят , и как-то туманно (для меня) его заполняют , во -первых я с list ни в зуб ногой ,во вторых мне нравится возможность редактировать при желании в том же окне при выводе через сабформу.
...
Рейтинг: 0 / 0
Вывод в сабформе всех значений
    #32094474
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выбирается категория через связанные поля форм (основные / подчиненные).
А чтобы иметь возможность выбрать все категории, надо связать эти формы через фильтр. На событие "изменение" комбобокса главной формы изменять фильтр в подчиненной форме, а для вывода всех категорий сделать в главной форме кнопку, которая будет сбрасывать фильтр.
...
Рейтинг: 0 / 0
Вывод в сабформе всех значений
    #32094496
Seryoga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
от того, что ты сделал (очевидно мастером) то, о чем я говорю отличается тем, что отображение в сабформе данных определяется либо фильтром, либо измененным запросом, а не связкой полей.
ну, если заполнение списка - туманно, то можно в качестве таблицы категорий использовать юнион селекта названий категорий и слова "все". Например. Изврат, но работать будет...
...
Рейтинг: 0 / 0
Вывод в сабформе всех значений
    #32094998
DarkMadMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-------------------------
ну, если заполнение списка - туманно, то можно в качестве таблицы категорий использовать юнион селекта названий категорий и слова "все". Например. Изврат, но работать будет...
----------------------

Дык с заполнением таблицы категорий прооблем нет - именно так и сделано (В исходном письме ХП именно это и делает - заполняет список категорий и добавляет ещё один пунктик "все" с Id=0,через union)


---------------------------------------------------------------------------
от того, что ты сделал (очевидно мастером) то, о чем я говорю отличается тем, что отображение в сабформе данных определяется либо фильтром, либо измененным запросом, а не связкой полей.
---------------------------------------------------------
Для сабформы есть record source (tbl_products) ,record source qualifier (dbo) , и filter (пустой) . Про filter я вообще не могу найти никакого ни описания ,ни примера , поиск в хелпе даёт какой-то бред про subset of records ,и ко мне как я понимаю никакого отношения не имеет ,поскольку у меня .adp project (я для него там написано надо применять serverfilter ,которого нигде не наблюдается) .


Так где и что изменить чтобы получать в сабформе нужную категорию при выборе их через комбобокс в главной , а при выборе в главной форме "все" получать в сабформе все категории?Если убрать link child fields /link master fields , то сабформа тогда вообще от главной не зависит , а мне-то как раз нужно чтобы выборка в сабформе ЗАВИСЕЛА от того какую кактгорию я выбираю в главной.
...
Рейтинг: 0 / 0
Вывод в сабформе всех значений
    #32095001
DarkMadMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выбирается категория через связанные поля форм (основные / подчиненные).
А чтобы иметь возможность выбрать все категории, надо связать эти формы через фильтр. На событие "изменение" комбобокса главной формы изменять фильтр в подчиненной форме, а для вывода всех категорий сделать в главной форме кнопку, которая будет сбрасывать фильтр.
---------------------------------------------------

Я попробовал .Вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub bt_AllCat_Click()
Dim frm As Form
    Set frm = Me.Products_Subform.Form
    If frm.ServerFilterByForm = True Then
       frm.ServerFilterByForm = False
    Else
       frm.ServerFilterByForm = True
       frm.ServerFilter =  "ProductCategory_ID = 2 "
    End If
End Sub


Нифига ничего не фильтрует . 2 это я так для теста поставил...
...
Рейтинг: 0 / 0
Вывод в сабформе всех значений
    #32095002
DarkMadMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гемор всё какой-то -кнопки ,VBA,а почему нельзя сделатьт одним SQL запросом ?

типа так :

Код: plaintext
1.
2.
3.
4.
5.
Declare @cat int
Set @cat= 0 
if @cat> 0 
Select * from tbl_products where productcategory_id =@cat
else
Select * from tbl_products




Только мне надо @cat брать из главной формы (в зависимости от того ,что я выбралв комобобксе ) и передаватьь его в качестве перемнной в запрос-источник сабформы.Как такое в access сделть
...
Рейтинг: 0 / 0
Вывод в сабформе всех значений
    #32095022
DarkMadMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По пути выясняю ,что такая конструкция не работает в качестве источника формы ( судя по всему if смущает),
Код: plaintext
1.
2.
3.
if @cat> 0 
Select * from tbl_products where productcategory_id =@cat
else
Select * from tbl_products


хоть убей не пойму почему .Нигде в хелпе не сказано ,что есть каки-ето ограничения на SQL выражения. Но фиг с ним - делаю черех параметризованную ХП ,тоже самое....

Однко никак не могу передать @cat через конструкцию в InputParameters-> @cat=form![frm_ProductsDirectory]![ProductCategory_ID] сабформы :((( не понимает ,она почему-то и всё время меня спрашивает cat через диалоговое окно :*(
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вывод в сабформе всех значений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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