|
|
|
| Добрый день!
У меня следующая проблема.
Есть некоторый запрос (созданные в базе данных).
Есть форма, в которой задаются параметры запроса, и выводится результат (в подчиненную форму второго уровня).
Мне нужно распечатать значения полей, использованных дня отбора, а также само значение запроса.
Сейчас реализовано тупо и "в лоб": полным перебором (пробегом) по элементам формы.
Выглядит это дела как "мультик", с бегущим курсором и переключающимися элементами формы.
Как организовать это дело корректно с прямым запросом к базе данных?
Или что в данном случае считать более корректным?
Не возникнет ли конфликтов при аналогичном запросе, когда все уже в форме?
И последний вопрос: в чем разница между RecordSet и Catalog?
Чем более корректно пользоватся и как?
Заранее спасибо | |
|
| |
|
|
|
| >Мне нужно распечатать значения полей
Распечатать куда? Сразу в текстовый файл/на принтер, или открыть/напечатать отчет?
Объясните этот момент подробнее.
>полным перебором (пробегом) по элементам формы...с бегущим курсором и >переключающимися элементами формы.
Вы что передаете фокус от поля к полю? Зачем? Ко всем элементам формы/подформы можно обратиться непосредственно. Покажите ваш код.
>в чем разница между RecordSet и Catalog?
Земля и небо. Catalog - в ADOX хранилище объектов БД (таблицы, запросы, хранимки и т.д.), а RecordSet - набор записей, получаемых при обращении к этим объектам. | |
|
| |
|
|
|
| 1. Распечатать - я их вообще потом в Word вставляю, этот кусок у меня вопрос не вызывает, там просто красивый формат нужен, через отчет так сделать не вышло (границы пропадают, а нужно в виде таблицы)
2. Именно :) Передаю фокус, потому что не нашла способа сделать по-другому :(
Вот код (отрывок):
For IteratorCP = 1 To NumberOfCP
Forms![Контрагенты]![ПолнНаименование].SetFocus
DoCmd.GoToRecord , , acGoTo, IteratorCP
...
Forms!Контрагенты]!Договоры.SetFocus
NumberOfContracts = Forms("Контрагенты").Controls"Договоры").Form.Recordset.RecordCount
If NumberOfContracts = 0 Then
Else
For IteratorContracts = 1 To NumberOfContracts
Forms![Контрагенты]![Договоры]![Наименование].SetFocus
DoCmd.GoToRecord , , acGoTo, IteratorContracts
Forms![Контрагенты]![Договоры]![Итоги].SetFocus
NumberOfContents = Forms("Контрагенты").Controls("Договоры").Controls("Итоги").Form.Recordset.RecordCount
If NumberOfContents = 0 Then
Else
.....
Знаю, что криво и непрофессионально :( (но надо было навоять быстро, синтаксиса не знала, что нашла - то и зашила :( )
Спасибо, что откликнулись :))) | |
|
| |
|
38 Кб. |
|
| Ну дык передаете фокусы контролам и удивляетесь почему мультик... Да еще и в цикле.
А если верхняя граница цикла окажется =1000000, то этот мультик можно номинировать на Оскар!
ЗЫ А если при этом еще и менять бэкколор контролов, то вааще будет такая дискотека, что Голливуд отдыхает
Ладно, а если серьезно, то убирайте сетфокус и рекордсетами пробегайтесь по записям и формируйте отчет
Вот пример вывода таблицы в ворд | |
|
| |
|
|
|
|
| Наконец дошла до реализации.
Уперлась вот во что.
У меня на эту форму подчиненную вторую по уровню выводится запрос.
Соответственно, запрос этот я должна получить.
В запросе у меня идет неявный опрос даты вида Формы!ГлавнаяФорма!ПолеСДатой,
причем условие на дату стоит в другом заппросе.
Попытка вызвать Select * From Итоги Where Дата = Формы!ГлавнаяФорма!ПолеСДатой
выдает ошибку вида Слишком мало параметров. Требуется 1
Понимаю, что написала страшный глюк, но с какой стороны его исправлять, - не знаю.
Помогите, плиз :)
Заранее всем БОЛЬШУЩЕЕ СПАСИБО | |
|
| |
|
|
|
| всё не так плохо.......
Просто запросы порой не видят формы базы
им запросам нужно разжевать и в рот положить.
если написать
Select * From Итоги Where Дата = Функция_выбора_даты_из_формы
А Сама функция выглядит вот так:
public Функция_выбора_даты_из_формы() as date
Функция_выбора_даты_из_формы=Формы!ГлавнаяФорма!ПолеСДатой
end function
То может получиться............ | |
|
| |
|
|
|
| Спасибо :)
Но не прокатило :(
Теперь ему ему уже нужно аж3 параметра...
Видимо, придется переделывать сам запрос (в БД, который).... | |
|
| |
|
|
|
| а таблицу и запрос сюда выложить не сможете? | |
|
| |
|
|
|
| Спасибо.
Я уже нашла решение.
Причем здесь же ....
http://hiprog.com/index.php?option=com_content&task=view&id=318 | |
|
| |