Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Выборка в отчет по нескольким полям формы


Автор: beliyadm 3.12.2005, 22:28
День добрый, в 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

Автор: Akina 4.12.2005, 15:35
Цитата(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 строку, а также скрывать поля, которые не выводятся и растягивать-двигать остальные, чтобы смотрелось нормально.

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

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
М
 
У нас не скидывают по почте - конфа для всех, а не для тебя одного.

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

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

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

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

Да я же не против, сдеайте раздел где будут лежать примеры на самые задаваемые вопросы!
А насчет того чтобы вот и сделать - говорю же, не спец я в VBA, другая у меня направленность, прошу дать пример кода на данную тему

Автор: Papirus 5.12.2005, 09:41
http://www.sql.ru/forum/actualthread.aspx?tid=96855&hl=%ed%e5%f1%ea%ee%eb%fc%ea%e8%ec+%ef%ee%eb%ff%ec

Автор: beliyadm 5.12.2005, 11:41
Спасибо, нашел там недостающий кусочек smile

Автор: Papirus 5.12.2005, 11:47
Завсегда пожалуйста! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)