|
|
|
| Народ, столкнулся с такой проблемой. Есть несколько запросов на выборку. В каждом из них нужно задавать дату (она во всех запросах одна). Т.к. запросов около 20 - менять даты в каждом вручную - не вариант.
Если задать параметр [my_data] в каждом, то нужно забивать ее руками - частично это решает проблему, но итоговый запрос подключается к Excel. А Excel не дает возможности ввести параметр.
В итоге запрос выполняется, только если ты в Access и забил дату руками. Потом экспорт этого добра в эксель... Долго и муторно. Тем более в 2003 есть ограничение по кол-ву записей.
Вопрос: Можно как-то без особо накрученых макросов задать эту переменную, чтобы Access знал её что называется в лицо? | |
|
| |
|
|
|
| сделать форму
и в запросе ссылаться на поле формы | |
|
| |
|
|
|
| В форме вставить календарь. Добавить список запросов в полесосписком. По выбору запускать запрос. | |
|
| |
|
|
|
| Спасибо откликнувшимся, но такие варианты не совсем то, что хочется.
1. Через форму выцеплять дату - это где-то я уже реализовывал (правда в макросе).
2. С календарем - идея хорошая кстати - чтобы не вводить значение параметра даты с клавиатуры.
Но все это хорошо - пока ты в самом Access. Вопрос в том - как передать значение параметра в запрос, т.е. иммитировать ввод параметра в окошко, когда в самом запросе где-либо задан параметр в квадратных скобках [my_date]. Т.е. чтобы Access не спрашивал у пользователя его значение, а брал откуда-нибудь (пусть даже из поля формы, но без открытия этой формы и введения/выбора значения параметра)
Можно ли прописать как-то путь к полю фомы в запросе - типа: userform1.поле1.text. Пробовал не получилось. Может неправильно прописал? (В поле уже забита дата по умолчанию) | |
|
| |
|
|
|
| без открытия формы (пусть даже в скрытом режиме не получится)
т.е. форму придется запустить
обращение к полю формы из запроса
forms![ИмяФормы]![ИмяПоля]
Если совсем ничего запускать не хочется можно написать Public функцию которая будет возвращать нужное значение и ее вызывать в запросе
... where Поле = MyFunc() | |
|
| |
|
|
|
| Видимо придется взять на вооружение любой из предложеных вариантов, создавать итоговую таблицу. Потом подключатся к ней Экселем.
Public Function - тот же неизвестный для excel зверь, что и параметр. Выходит ошибка - "неопределенная функция в выражении". Все-равно спасибо огромное. | |
|
| |
|
|
|
| Что так все мрачно-то
Делаем форму
свободное поле
поле со списком - в котором указываем имена запросов
и кнопочку передать в ексель
вводим дату
выбираем запрос
давим кнопку
не охота по одному запросу
на кнопку вещаем код выкинуть в ексель все запросы | |
|
| |
|
|
|
| мрачно, т.к. в Excel - это сводная таблица. Хочется нажать кнопку "Обновить" на сводной и получить готовый отчет.
В итоговой табл. 900 000 строк, так что на лист 2003 экселя они не влазят. А я жуткий ретроград и 2007 ставить не хочу ибо не нравится.
Вот и хотел, чтоб не лазить в Акс - получать, что называется "с одной кнопки", отчет.
Собственно если нет простого решения проблемы - то: захожу в Акс, врубаю итоговый запрос на создание, ввожу дату в окошко ввода параметра (он применяется для всех участвующих в расчете запросов), захожу в эксель, обновляю сводную, сохраняю, отправляю. Enjoy everybody.
Собственно вместо одного действия - 3. Не так геморно, но ... короче лень - двигатель прогресса.
Ясно что можно накалякать макросов. С этим проблем нет. Есть даже скрипт, раскидывающий данные на несколько листов в экселе.
Вообщем извиняйте если заморочил - просто я самоучка и всегда есть ощущение, что чего-то простого и гениального не знаешь. | |
|
| |
|
|
|
| Если дату сохранить в таблице с одной записью, то ее можно включить в запрос, или вытягивать подчиненным запросом, или функцией DLookup. | |
|
| |
|
|
|
| Анатолий, спасибо. Впр-ом не получается. Синтаксис не могу понять из справки, а вот подчиненным запросом получилось!!! | |
|
| |