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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Подскажите неспециалисту, как считывать данны из базу, находясь в форме без полного перебора значений формы ("Мультик")
 
 автор: Ashatan   (17.07.2008 в 17:07)   личное сообщение
 
 

Добрый день!
У меня следующая проблема.
Есть некоторый запрос (созданные в базе данных).
Есть форма, в которой задаются параметры запроса, и выводится результат (в подчиненную форму второго уровня).
Мне нужно распечатать значения полей, использованных дня отбора, а также само значение запроса.
Сейчас реализовано тупо и "в лоб": полным перебором (пробегом) по элементам формы.
Выглядит это дела как "мультик", с бегущим курсором и переключающимися элементами формы.
Как организовать это дело корректно с прямым запросом к базе данных?
Или что в данном случае считать более корректным?
Не возникнет ли конфликтов при аналогичном запросе, когда все уже в форме?
И последний вопрос: в чем разница между RecordSet и Catalog?
Чем более корректно пользоватся и как?
Заранее спасибо

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

>Мне нужно распечатать значения полей
Распечатать куда? Сразу в текстовый файл/на принтер, или открыть/напечатать отчет?
Объясните этот момент подробнее.

>полным перебором (пробегом) по элементам формы...с бегущим курсором и >переключающимися элементами формы.
Вы что передаете фокус от поля к полю? Зачем? Ко всем элементам формы/подформы можно обратиться непосредственно. Покажите ваш код.

>в чем разница между RecordSet и Catalog?
Земля и небо. Catalog - в ADOX хранилище объектов БД (таблицы, запросы, хранимки и т.д.), а RecordSet - набор записей, получаемых при обращении к этим объектам.

  Ответить  
 
 автор: Ashatan   (18.07.2008 в 13:30)   личное сообщение
 
 

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

.....

Знаю, что криво и непрофессионально :( (но надо было навоять быстро, синтаксиса не знала, что нашла - то и зашила :( )

Спасибо, что откликнулись :)))

  Ответить  
 
 автор: FORMAT   (18.07.2008 в 14:12)   личное сообщение
38 Кб.
 
 

Ну дык передаете фокусы контролам и удивляетесь почему мультик... Да еще и в цикле.
А если верхняя граница цикла окажется =1000000, то этот мультик можно номинировать на Оскар!
ЗЫ А если при этом еще и менять бэкколор контролов, то вааще будет такая дискотека, что Голливуд отдыхает

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

  Ответить  
 
 автор: Ashatan   (19.07.2008 в 04:21)   личное сообщение
 
 

Format, спасибо за объяснения и пример!
Так гораздо понятнее :)

ЗЫ Очень хочется почему-то к вашему нику добавить с: :)
Наверное,я не одинока

  Ответить  
 
 автор: Ashatan   (04.08.2008 в 21:22)   личное сообщение
 
 

Наконец дошла до реализации.
Уперлась вот во что.

У меня на эту форму подчиненную вторую по уровню выводится запрос.
Соответственно, запрос этот я должна получить.
В запросе у меня идет неявный опрос даты вида Формы!ГлавнаяФорма!ПолеСДатой,
причем условие на дату стоит в другом заппросе.

Попытка вызвать Select * From Итоги Where Дата = Формы!ГлавнаяФорма!ПолеСДатой

выдает ошибку вида Слишком мало параметров. Требуется 1

Понимаю, что написала страшный глюк, но с какой стороны его исправлять, - не знаю.

Помогите, плиз :)

Заранее всем БОЛЬШУЩЕЕ СПАСИБО

  Ответить  
 
 автор: час   (04.08.2008 в 21:48)   личное сообщение
 
 

всё не так плохо.......
Просто запросы порой не видят формы базы
им запросам нужно разжевать и в рот положить.

если написать
Select * From Итоги Where Дата = Функция_выбора_даты_из_формы

А Сама функция выглядит вот так:
public Функция_выбора_даты_из_формы() as date
Функция_выбора_даты_из_формы=Формы!ГлавнаяФорма!ПолеСДатой
end function

То может получиться............

  Ответить  
 
 автор: Ashatan   (05.08.2008 в 18:44)   личное сообщение
 
 

Спасибо :)
Но не прокатило :(

Теперь ему ему уже нужно аж3 параметра...

Видимо, придется переделывать сам запрос (в БД, который)....

  Ответить  
 
 автор: час   (06.08.2008 в 19:35)   личное сообщение
 
 

а таблицу и запрос сюда выложить не сможете?

  Ответить  
 
 автор: Ashatan   (07.08.2008 в 14:12)   личное сообщение
 
 

Спасибо.
Я уже нашла решение.
Причем здесь же ....

http://hiprog.com/index.php?option=com_content&task=view&id=318

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