Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как передать один параметр нескольким запросам?
 
 автор: katerpeller   (17.12.2010 в 15:35)   личное сообщение
 
 

Народ, столкнулся с такой проблемой. Есть несколько запросов на выборку. В каждом из них нужно задавать дату (она во всех запросах одна). Т.к. запросов около 20 - менять даты в каждом вручную - не вариант.
Если задать параметр [my_data] в каждом, то нужно забивать ее руками - частично это решает проблему, но итоговый запрос подключается к Excel. А Excel не дает возможности ввести параметр.

В итоге запрос выполняется, только если ты в Access и забил дату руками. Потом экспорт этого добра в эксель... Долго и муторно. Тем более в 2003 есть ограничение по кол-ву записей.

Вопрос: Можно как-то без особо накрученых макросов задать эту переменную, чтобы Access знал её что называется в лицо?

  Ответить  
 
 автор: snipe   (17.12.2010 в 16:22)   личное сообщение
 
 

сделать форму
и в запросе ссылаться на поле формы

  Ответить  
 
 автор: Гоблин   (17.12.2010 в 21:37)   личное сообщение
 
 

В форме вставить календарь. Добавить список запросов в полесосписком. По выбору запускать запрос.

  Ответить  
 
 автор: katerpeller   (20.12.2010 в 11:18)   личное сообщение
 
 

Спасибо откликнувшимся, но такие варианты не совсем то, что хочется.
1. Через форму выцеплять дату - это где-то я уже реализовывал (правда в макросе).
2. С календарем - идея хорошая кстати - чтобы не вводить значение параметра даты с клавиатуры.

Но все это хорошо - пока ты в самом Access. Вопрос в том - как передать значение параметра в запрос, т.е. иммитировать ввод параметра в окошко, когда в самом запросе где-либо задан параметр в квадратных скобках [my_date]. Т.е. чтобы Access не спрашивал у пользователя его значение, а брал откуда-нибудь (пусть даже из поля формы, но без открытия этой формы и введения/выбора значения параметра)

Можно ли прописать как-то путь к полю фомы в запросе - типа: userform1.поле1.text. Пробовал не получилось. Может неправильно прописал? (В поле уже забита дата по умолчанию)

  Ответить  
 
 автор: osmor   (20.12.2010 в 11:27)   личное сообщение
 
 

без открытия формы (пусть даже в скрытом режиме не получится)
т.е. форму придется запустить
обращение к полю формы из запроса
forms![ИмяФормы]![ИмяПоля]

Если совсем ничего запускать не хочется можно написать Public функцию которая будет возвращать нужное значение и ее вызывать в запросе

... where Поле = MyFunc()

  Ответить  
 
 автор: katerpeller   (20.12.2010 в 11:52)   личное сообщение
 
 

Видимо придется взять на вооружение любой из предложеных вариантов, создавать итоговую таблицу. Потом подключатся к ней Экселем.

Public Function - тот же неизвестный для excel зверь, что и параметр. Выходит ошибка - "неопределенная функция в выражении". Все-равно спасибо огромное.

  Ответить  
 
 автор: snipe   (20.12.2010 в 12:27)   личное сообщение
 
 

Что так все мрачно-то

Делаем форму
свободное поле
поле со списком - в котором указываем имена запросов
и кнопочку передать в ексель

вводим дату
выбираем запрос
давим кнопку

не охота по одному запросу
на кнопку вещаем код выкинуть в ексель все запросы

  Ответить  
 
 автор: katerpeller   (20.12.2010 в 13:03)   личное сообщение
 
 

мрачно, т.к. в Excel - это сводная таблица. Хочется нажать кнопку "Обновить" на сводной и получить готовый отчет.

В итоговой табл. 900 000 строк, так что на лист 2003 экселя они не влазят. А я жуткий ретроград и 2007 ставить не хочу ибо не нравится.

Вот и хотел, чтоб не лазить в Акс - получать, что называется "с одной кнопки", отчет.
Собственно если нет простого решения проблемы - то: захожу в Акс, врубаю итоговый запрос на создание, ввожу дату в окошко ввода параметра (он применяется для всех участвующих в расчете запросов), захожу в эксель, обновляю сводную, сохраняю, отправляю. Enjoy everybody.

Собственно вместо одного действия - 3. Не так геморно, но ... короче лень - двигатель прогресса.

Ясно что можно накалякать макросов. С этим проблем нет. Есть даже скрипт, раскидывающий данные на несколько листов в экселе.

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

  Ответить  
 
 автор: Анатолий (Киев)   (20.12.2010 в 14:14)   личное сообщение
 
 

Если дату сохранить в таблице с одной записью, то ее можно включить в запрос, или вытягивать подчиненным запросом, или функцией DLookup.

  Ответить  
 
 автор: katerpeller   (20.12.2010 в 14:37)   личное сообщение
 
 

Анатолий, спасибо. Впр-ом не получается. Синтаксис не могу понять из справки, а вот подчиненным запросом получилось!!!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList