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

Форум: MS ACCESS

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

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

 
 

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

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

тема: передать записи из формы в отчет
 
 автор: serrock   (04.07.2007 в 13:37)   личное сообщение
 
 

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

  Ответить  
 
 автор: osmor   (04.07.2007 в 13:56)   личное сообщение
 
 

как отфильтрованные? свойством Filter формы или на уровне where запроса?
можно открыть отчет с таким же как у формы фильтром см. Docmd.openreport

  Ответить  
 
 автор: SerRock   (04.07.2007 в 13:59)   личное сообщение
 
 

имеется ввиду, что пользователь сам формирует набор записей по своему усмотрению и потребностям

  Ответить  
 
 автор: osmor   (04.07.2007 в 14:18)   личное сообщение
 
 

Что значит сам? сам напишет SQL запрос? ПОльзователь же использует какой-то механизм...
Либо стандартные фильтры (тогда см. свойтсво Filter формы и передавайте его в параметре отчета)
Либо фитьтры построенные на запросе, типа
...where [idRegion] = [Forms]![Форма1]![cmbRegion]
В этом случае нужно анализировать состояние полей (списков) формы составляющих фильтр и составлять строку запроса используя ее в качестве источника строк отчета.

  Ответить  
 
 автор: SerRock   (04.07.2007 в 14:34)   личное сообщение
 
 

спасибо, понял, попробую (пользователь пользуется стандартными фильтрами), еже ли что, то переспрошу,
Сергей

  Ответить  
 
 автор: Hegy   (29.12.2009 в 12:22)   личное сообщение
 
 

Подскажите, пожалуйста, как разобрались?

Та же задача:
фильтр + поле со списком
Снова наступаю на эти грабли :(
Нужно чтоб значение текущего фильтра в форме (фильтр назначаю по полю со списком стандартным фильтром на панели инструментов) корректно передавалось фильтру в отчете.

Пытаюсь сделать вот так:

'это кнопка в форме которая открывает отчет и передает параметры фильтра

stDocName = "ИмяОтчета"

'проверка включен ли фильтр
If Me.FilterOn = True Then
stLinkCriteria = Me.Filter
Else
Me.Filter = ""
End If

DoCmd.OpenReport stDocName, acPreview, , stLinkCriteria


но отчет не работает, т.к. в параметры ему передается белиберда, например:
(((Lookup_CompID.CompName="ЧП ""Океан""")))
а необходимо, чтоб передавался числовой ID компании.

  Ответить  
 
 автор: Lukas   (29.12.2009 в 13:58)   личное сообщение
 
 


Lookup_CompID.CompName="ЧП ""Океан"""


Такие значения фильтра образуются когда пользуются штатные возможности фильтрации.
Варианты:
1. Заменить возможности штатного фильтра своими, где строка фильтра будут соответствовать синтаксису SQL для WHERE.
2. Не использовать фильтр формы для отчета, а на основании отфильтрованного набора данных
формы кодом собирать строку из значений ключевого поля записей и уже этот фильтр вручать отчету.
Должно получится что-то такое: "CompID IN(2,22,33,555)"

  Ответить  
 
 автор: Hegy   (29.12.2009 в 16:55)   личное сообщение
 
 

Спасибо!
Жаль, нельзя прикрутить штатный фильтр.

"CompID IN(2,22,33,555)"


А какова м.б. максимальная длинна этой строки?

  Ответить  
 
 автор: Lukas   (29.12.2009 в 17:08)   личное сообщение
 
 

Спецификации Microsoft Access:
...
Число знаков в инструкции SQL приблизительно 64 000
...
Число знаков в инструкции SQL, работающей в качестве свойства Источник записей (RecordSource) или Источник строк (RowSource) формы, отчета или элемента управления (оба .mdb и .adp) 32 750

Конкретно про фильтр указан только тип данных: String.

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