powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Динамический запрос
18 сообщений из 18, страница 1 из 1
Динамический запрос
    #39684127
Devil_FoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Попробую объяснить суть проблемы.

Есть общая таблица, где хранятся данные для документов. И есть вторая таблица, где указаны какие столбцы нужно для конктретно одному типу документа (пусть она будет называться [Doc_Colums]. Ниже пример с неё)

Пользователь должен на форме в "поле со списком" выбрать тип документа и нажать кнопку. После должен вывестись таблица с строго своими столбцами, которые указаны в таблице [Doc_Colums]. (и можно было редактировать поля)

Как можно так реализовать динамический запрос?
Получится, если выбрать документ ТТН, то должно вывести 4 столбца.


Пример наполнения таблицы [Doc_Colums]:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
DocName		Columns
----------------------------
ТТН		DocNum
ТТН		DocDate
ТТН		Account
ТТН		Note
доп.соглашение	Date_DTZ
доп.соглашение	DocID
доп.соглашение	DocNum
доп.соглашение	DocDate

Таких типов документов сейчас 18, и будет расти. Так что вариант с созданием для каждого типа документа создать свою форму - отпадает.
...
Рейтинг: 0 / 0
Динамический запрос
    #39684141
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понятно. При чем тут динамический запрос? Выводится ленточная форма. В одном поле название параметра. В другом его значение. Вот и работайте с ними.
...
Рейтинг: 0 / 0
Динамический запрос
    #39684147
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А проблема-то в чём? текст запроса построить? колонок в грид добавить?

Devil_FoXесли выбрать документ ТТН, то должно вывести 4 столбца
Код: sql
1.
2.
3.
SELECT Columns
FROM Doc_Colums
WHERE DocName = "ТТН"


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
strSQL = ""
With rs
    .MoveFirst
    Do Until .EOF
         strSQL = ", " & strSQL & !Columns
         .MoveNext
    Loop
End With
strSQL = "SELECT " & Mid(strSQL, 3) & "FROM Documents WHERE DocType = 'TTH'"
...
Рейтинг: 0 / 0
Динамический запрос
    #39684159
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вариантов немного (2-4) то создайте форму с группой переключателей в заголовке и в зависимости от значения группы открывайте,в контейнере подчиненной формы одну из предварительно созданных, как Вам надо
...
Рейтинг: 0 / 0
Динамический запрос
    #39684209
Devil_FoXТак что вариант с созданием для каждого типа документа создать свою форму - отпадает. Этот "динамический запрос" вы собираетесь использовать как источник универсальной формы,? Я правильно понял?
В этом случае вам в любом случае скрывать/показывать элементы на форме, а также, вероятно, менять их координаты. А в запросе-источнике лучше выводить все поля из таблицы, иначе добавится морока с отвязкой/привязкой элементов формы к полям источника.
...
Рейтинг: 0 / 0
Динамический запрос
    #39684219
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devil_FoX....Таких типов документов сейчас 18, и будет расти. Так что вариант с созданием для каждого типа документа создать свою форму - отпадает.Успехов в создании "динамической формы"
А может наморщить лоб и подумать над структурой БД (хранением и обработкой данных,разграничением прав и т.д)
...
Рейтинг: 0 / 0
Динамический запрос
    #39684292
Devil_FoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JossВыводится ленточная форма.

Что то я не понял как ленточноя форма поможет.
...
Рейтинг: 0 / 0
Динамический запрос
    #39684300
Devil_FoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Код: sql
1.
2.
3.
SELECT Columns
FROM Doc_Colums
WHERE DocName = "ТТН"



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
strSQL = ""
With rs
    .MoveFirst
    Do Until .EOF
         strSQL = ", " & strSQL & !Columns
         .MoveNext
    Loop
End With
strSQL = "SELECT " & Mid(strSQL, 3) & "FROM Documents WHERE DocType = 'TTH'"



Очень похоже на то что мне нужно. Я плохо знаю VBA.
Первый запрос нужно записать в параметр или оба запроса будут уже в тандеме работать?
Записывать в макрос/модуль, и потом его вешать на запуск при нажатии кнопки?

Если у меня тип документа берётся с поля со списка, то как во WHERE можно записать условие?

Список - Forms![Production]![Список_Тип_Докум]
...
Рейтинг: 0 / 0
Динамический запрос
    #39684305
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devil_FoXПервый запрос нужно записать в параметр или оба запроса будут уже в тандеме работать?Первое - это текст запроса. Второе - код обработки рекордсета, открытого по тексту запроса. Итог - текст запроса, который нудно открыть как рекордсет либо подпихнуть контролу как источник данных.
...
Рейтинг: 0 / 0
Динамический запрос
    #39684306
Devil_FoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuУспехов в создании "динамической формы"
А может наморщить лоб и подумать над структурой БД (хранением и обработкой данных,разграничением прав и т.д)

Ну спасибо. Я и так морщу лоб, ведь я специализируюсь на MS SQL и C#. А тут задание - нужно только в Access - а тут для меня всё через...

В общем выкручиваюсь и постигаю новое.
...
Рейтинг: 0 / 0
Динамический запрос
    #39684307
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devil_FoXJossВыводится ленточная форма.

Что то я не понял как ленточноя форма поможет. Элементарно, Ватсон! (с)
Правда тут ещё завит от правильной структуры БД. Есть у тебя таблица в которой два столбца (грубо) Имя параметра и Значение параметра. Вторая таблица так же два столбца (опять же грубо) Имя документа и Имя параметра. Создай запрос из двух таблиц со связью по Имени параметра. Делай отбор по Имени документа. Вот тебе и Ленточная форма с параметрами и их значениями для каждого документа.
...
Рейтинг: 0 / 0
Динамический запрос
    #39684311
Devil_FoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaПервое - это текст запроса. Второе - код обработки рекордсета, открытого по тексту запроса. Итог - текст запроса, который нудно открыть как рекордсет либо подпихнуть контролу как источник данных.

Извиняюсь. Я плохо разбираюсь. Можете объяснить как всё сделать?
...
Рейтинг: 0 / 0
Динамический запрос
    #39684320
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devil_FoXЯ и так морщу лоб, ведь я специализируюсь на MS SQL и C#. А тут задание - нужно только в Access - а тут для меня всё через...СУБД - везде СУБД. ADO - везде ADO. Ну немного разный синтаксис... так что "всё через..." - это не факт такой, а настрой такой. И с ним ни хрена у тебя не получится.
...
Рейтинг: 0 / 0
Динамический запрос
    #39684343
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот-вот. Не зная структуры твоей БД приходится только фантазировать. А если у тебя данные конфиденциальные, то можно их подправить так, чтобы ничего не светилось.. Убрать лишние. А так по твоему вопросу можно только гадать.

Может проще действительно сделать по форме для каждого документа?
...
Рейтинг: 0 / 0
Динамический запрос
    #39684363
Devil_FoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JossНе зная структуры твоей БД приходится только фантазировать

Не могу выложить. архив 2 МБ. А сайт позволяет только 150 кб.
...
Рейтинг: 0 / 0
Динамический запрос
    #39684374
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть файлообменники. Некоторые выкладывают Яндекс-диск. Было бы желание.
...
Рейтинг: 0 / 0
Динамический запрос
    #39684383
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devil_FoXНе могу выложить. архив 2 МБА поудалять всё лишнее (в т.ч. и миллион записей - пары десятков достаточно) и сжать БД - не?
...
Рейтинг: 0 / 0
Динамический запрос
    #39684395
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devil_FoX,

Создавать одну динамическую форму на 20 разных вариантов ввода нонсенс.

Представьте себе магазин, торгующий спичками, автомобилями и самолётами...


Как я понимаю, вы хотите динамизировать создание новых документов с новыми названиями полей.

Думаю что вы просто должны создать одну форму с полями Поле1, Поле2, Поле3 ....
Далее, в динамическом запросе к форме (по методу Akina) переобзываете названия полей под поля формы.

Даже можно извратиться и динамически подменять заголовки полей в форме.

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


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