Модераторы: Akina
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Выборка в отчет по нескольким полям формы 
:(
    Опции темы
beliyadm
Дата 3.12.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 1.11.2005

Репутация: нет
Всего: нет



День добрый, в VBA не спец, потому прошу извинить за возможно повторяемый вопрос.
Есть форма, в ней несколько полей со списками, каждый на основе запроса из таблиц.
Необходимо нажатием одной кнопки строить отчет (при этом выбраны могут быть как все поля, так и лишь некоторые.
Для построения отчета есть запрос, включающий в себя все возможные комбинации.
стандартно access позволяет делать отдельный запрос, отчет, и кнопку для каждого из возможных вариантов (а это не есть хорошо).
в VBA что либо подобное:
Private Sub buttom_Click()
Dim stDocName As String, strSQL As String
stDocName = "имя"
If Me!ЗначениеПоляВФорме Then .......
Else.....
End If
DoCmd.OpenReport stDocName, acPreview, strSQL
Но вот как программно оформить?
Чтобы был единый отчет и запрос для всех возможных вариантов не знаю smile

Это сообщение отредактировал(а) beliyadm - 3.12.2005, 22:29
PM MAIL   Вверх
Akina
Дата 4.12.2005, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(beliyadm @ 3.12.2005, 23:28)
как программно оформить?
Чтобы был единый отчет и запрос для всех возможных вариантов не знаю

Тебе придется:
1) программно строить SQL-строку запроса, который будет источником данных отчета. Типа:
Код
' Extreme draft!
strSQL = "SELECT * FROM MyTable"
for each OneControl In Controls
  where = ""
  with OneControl
    If .type = combobox and trim(.text)<>"" then
      where = where & " " & .tag & " = " & .text & " AND"
    end if
    if where <> "" then
      strSQL = strSQL & " WHERE " & left(where, len(where)-4)
    end if
  end with
next


2) изготовить макет отчета со всеми полями вывода, менять его источник данных на созданную по п. 1 строку, а также скрывать поля, которые не выводятся и растягивать-двигать остальные, чтобы смотрелось нормально.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
beliyadm
Дата 4.12.2005, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 1.11.2005

Репутация: нет
Всего: нет



Спасибо за пояснение, но, ээээээээээээ........
отчет будет единый для всех вариантов, просто строить его надо на основе различных комбинаций выборок из полей со списками (в моем случае: район РФ и\или типШколы и \или специальность в даннойШколе и\или и так далее).
Программаня строка есть уже, но в ней что то вроде:
Код

SELECT типОУ.типОУ, ОКАТО.ОКАТО, ОУ.ОУ, ОУ.подчиненность, ОУ.орган, ОУ.программа, ОУ.уровень, ОУ.юридическийадрес, ОУ.фактическийадрес, ОУ.руководитель, ОУ.датарождения, ОУ.должность, ОУ.телефон, ОУ.факс, ОУ.[e-mail], ОУ.www
FROM типОУ INNER JOIN (ОКАТО INNER JOIN ОУ ON ОКАТО.кодОКАТО = ОУ.ОКАТО) ON типОУ.кодтипаОУ = ОУ.типОУ
[b]WHERE (((типОУ.кодтипаОУ)=[forms]![otchet]![tip]) AND ((ОКАТО.кодОКАТО)=[forms]![otchet]![okato]))[/b]
ORDER BY ОКАТО.ОКАТО, ОУ.ОУ;

Отчет сформирован на основе этого запроса но без условия where.
Каким образом в VBA сделать условие where (чтобы только на нем строился отчет) при наличии значения в определенных полях формы?
Если несложно - скиньте образец, буду очень признателен, если есть у кого [removed by moderator]
В данный момент (заказчик очень просил для нчальства образец) есть следующее:
Код

Private Sub buttom_Click()
    If Me!OKATO And Me!tip Then
        DoCmd.OpenReport "okato_ou", acPreview
    ElseIf Me!OKATO Or Me!tip Then
        DoCmd.OpenReport "okato_ou1", acPreview
    End If
End Sub
Но это же геморройно делать отдельный запрос и отчет на каждый из вариантов.......


Это сообщение отредактировал(а) Akina - 4.12.2005, 21:58
PM MAIL   Вверх
Akina
Дата 4.12.2005, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



М
 
У нас не скидывают по почте - конфа для всех, а не для тебя одного.

Добавлено @ 21:59
Цитата(beliyadm @ 4.12.2005, 18:36)
Программаня строка есть уже, но в ней что то вроде

Вот к ней программно и добавляй требуемый WHERE


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
beliyadm
Дата 5.12.2005, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 1.11.2005

Репутация: нет
Всего: нет



Цитата(Akina @ 4.12.2005, 21:58)
У нас не скидывают по почте - конфа для всех, а не для тебя одного.
Добавлено @ 21:59
Цитата(beliyadm @ 4.12.2005, 18:36)
Программаня строка есть уже, но в ней что то вроде

Вот к ней программно и добавляй требуемый WHERE

Да я же не против, сдеайте раздел где будут лежать примеры на самые задаваемые вопросы!
А насчет того чтобы вот и сделать - говорю же, не спец я в VBA, другая у меня направленность, прошу дать пример кода на данную тему
PM MAIL   Вверх
Papirus
Дата 5.12.2005, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 19.4.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 1



PM MAIL ICQ   Вверх
beliyadm
Дата 5.12.2005, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 1.11.2005

Репутация: нет
Всего: нет



Спасибо, нашел там недостающий кусочек smile
PM MAIL   Вверх
Papirus
Дата 5.12.2005, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 19.4.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 1



Завсегда пожалуйста! smile
PM MAIL ICQ   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0480 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.