| |
|
|
| | Запрос
SELECT main.year, main.[1_10]
FROM main
WHERE main.year Between (Forms!graf_analiz!ot) And (Forms!graf_analiz!do);
|
имеет вид сводной диаграммы как передать из обработчика (нажатие кнопки) вычисляемую переменную nomer на место [1_10] и открыть запрос этой же кнопкой. | |
| |
| |
| |
|
|
| | Чтобы передать значение в запрос, надо вставить в него глобальную функцию.
Создадим запрос:
SELECT main.year, main.GetNomer()
FROM main
WHERE main.year Between (Forms!graf_analiz!ot) And (Forms!graf_analiz!do);
|
Сохраним этот запрос MyQuery.
Объявим глобальную функцию:
public funсtion GetNomer() as string
if Not IsNull(Nomer) then
GetNomer = Nomer
end function
|
Не забудьте про соответствие типов данных и доступность переменной Nomer для функции GetNomer().
По нажатию кнопки:
Nomer = "[1_10]"
docmd.OpenQuery "MyQuery"
|
Таким образом запрос обратится к функции GetNomer(), которая выдаст ему значение 1_10. | |
| |
| |
| |
 5 Кб. |
|
| | При написании main.GetNomer()
ELECT main.year, main.GetNomer()
FROM main
WHERE main.year Between (Forms!graf_analiz!ot) And (Forms!graf_analiz!do);
|
выдает ошибку функция не определена а при GetNomer() передает значение но не производится выборка столбца зазначеного в GetNomer() вот что выдает | |
| |
| |
| |
 5 Кб. |
|
| | А нужно | |
| |
| |
| |
 21 Кб. |
|
| | Сама база | |
| |
| |
| |
|
|
| | GetNomer() - в услловие отбора надо вписывать, а не в поле отбора  | |
| |
| |
| |
|
|
| | А нужно динамически выбирать разные поля. | |
| |
| |
| |
|
|
| | ААААААААААААААААААААА 
как вариант - можно программно создавать запрос, удаляя прежний с таким же именем.
то есть строить строку запроса собирая её из кусочков... | |
| |
| |
| |
|
|
| | как то так
tabk = "kas" & Forms![спрос]![Поле97]
tabd = "dog" & Forms![спрос]![Поле97]
b:
If НаличиеЗапроса("НОВАЯ ОБЩАЯ") = True Then DoCmd.DeleteObject acQuery, "НОВАЯ ОБЩАЯ"
Set dbs = CurrentDb
strSQL = "SELECT " & tabk & ".M,Сотрудники.кто, Сотрудники.Фамилия, " & tabk & ".MASTER ," & Forms![спрос]![Поле97]
& "&" & """год""" & " AS Выражение2," & tabk & ".KASSA, " & tabk & ".DAT," & tabk & ".STAVKA
FROM Сотрудники, " & tabd & " INNER JOIN " & tabk & " ON " & tabd & ".KOD = " & tabk & ".KOD WHERE
(((Сотрудники.кто)<>False)AND((" & tabk & ".MASTER)=[Сотрудники]![Фамилия]));"
Set qdf = dbs.CreateQueryDef("НОВАЯ ОБЩАЯ", strSQL)
qdf.Close
Set dbs = Nothing
|
| |
| |
| |
| |
|
|
| | А как потом этот запрос настроить в виде сводной диаграммы? | |
| |
| |
|
|
| |
|
|
| |
Public rst As Recordset, tdf As TableDef, dbs As Database, qdf As QueryDef, strSQL As String, tabk As String, tabd As String
|
Объявление единожды глобальных переменных - в отдельном модуле  | |
| |
| |
| |
|
|
| |
GetNomer() - в услловие отбора надо вписывать, а не в поле отбора
|
Да, гоню. Так работать не будет.  | |
| |
| |
| |
 27 Кб. |
|
| | я по правил предложенную функцию , но собирать строку запроса динамически мне кажется более оптимальным | |
| |
| |
| |
|
|
| | Не понял вроде бы тоже самое (нужно динамически выбирать разные поля). | |
| |
| |
| |
|
|
| | что то же не работает как надо? | |
| |
| |
| |
|
|
| | Только записывает значение GetNomer() в столбец. А нужно динамически выбирать разные поля из таблицы main. Например поле 1_10 потом другое. | |
| |
| |
| |
|
|
| | динамически от какого условия? Сейчас результат как в той картинке которую Вы дади как образец. | |
| |
| |
| |
|
|
| | В картинке выведены значения столбца 1_10. Они могут быть разными заносятся пользователем в общую таблицу main. И пользователь говорит хочу выбирать какие столбцы мне нужно посмотреть а какие нет. Кнопачка выведи мне значения столбцов 1_1, 1_5. Друга 1_2, 1_8. Для каждой кнопки свой запрос делать? | |
| |
| |
| |
|
|
| | понятно.
Собирайте строку запроса динамически, другого пути нет. | |
| |
| |
| |
|
|
| | Можно попробовать для выбора поля по определенному условию использовать функцию Choose или Switch. Правда кол-во вариантов в запросе ограничено (для Choose до 27 вроде бы). | |
| |
| |