|
|
|
| Здравствуйте. Есть 2 задачи, которые никак не могу решить.
1. Необходимо при вводе в форму 2х дат создание отчета , в которых бы содержались данные между этими двумя датами. Как я понимаю для этого необходимо создание запроса с 2мя параметрами +связь запроса с формой и отчетом, однако в свойствах запроса получается только ввод одной даты
2. Необходимо осуществить изменение цвета поля в зависимости от значения этого поля. В условном форматировании можно сделать только 3 условия, но в поле примерно 25 значений. для каждого нужен свой цвет. Как я понял, для этого необходимо уже VBA, а я в нем ни бум-бум.Пытаюсь написать чтото вроде
If (name_smi = "значение поля") Then
name_smi.ForeColor = vbYellow
name_smi.BackColor = vbRed
End If
однако она изменяет при нажатии цвета всех полей на последнее.
Подскажите пожалуйства. Заранее спасибо! | |
|
| |
|
|
|
| 1. в запросме можно задать много условий.
например
select * from Таблица where ПолеСДатойВТаблице Between Forms![ИмяФОрмы]![ДатаС] And Forms![ИмяФОрмы]![ДатаПО].
2. если форма у вас ленточная, то смена цвета приведет к изменению цвета во всех строках.
Варианты решения есть но они слишком сложны для и реализации описания в форуме.
Вообще как показывает практика человек может нормально работать не более чем с 6 цветами. | |
|
| |
|
|
|
| А можно поподробнее по поводу SQL запроса? А то теперь она просит меня ввести еще параметры Формы!Form-select date!ДатаС. Как я понимаю, сначала необходимо создать сам запрос, а затем уже форму относительно новой "виртуальной таблицы". на оф сайте просто довольно запутанно написано (http://office.microsoft.com/ru-ru/access/HA100963181049.aspx?pid=CH100645771049)
А по поводу цветов - мне необходимо просто вбить цвета для каждого значения, чтобы в отчете они всего лишь выделялись. Неужели это действительно так сложно сделать на VBA, ведь в условном форматировании это довольно легко... | |
|
| |
|
|
|
| Что-то не понял с "виртуальной таблицей"
1. Создаете форму с полями данные из которых будут использоваться в условии в запроса.
2. Создаете запрос в условии которого указываете поля созданной формы (см. выше)
3. Создаете отчет источником которого является созданный запрос
4. в форме создаете кнопку для открытия отчета
С цветами тоже не совсем понял. В отчете или в форме?
Если в отчете то на событие форматировнаие раздела, можно попытаться менять цвета в зависимости от значения примерно как Вы и делали, только если Вы их меняете, то учтите, что пока Вы их не поменяете на другое значение все поля будут такого-же цвета.
В форме такой вариант не пойдет | |
|
| |
|
|
|
| Я пишу такую строчку в SQL режиме :
WHERE (((alltable.[date_publish]) Between [Forms]![select]![31.05.2007] And [Forms]![select]![31.12.2007]));
Пишет про ошибку в скобках.
2. Цвета должны быть только в отчете, однако при выполнии такого кода, как я написал, она меняет цвет всех полей на один (если процедура Click()), а не относительно значений. т.е .как я понимаю необхидо что то писать между ИмяПоля() и BackColor.. | |
|
| |
|
|
|
| Forms![select]![31.05.2007] - это что?
если Вы ссылаетесь на поле формы, то нужно указывать имя поля (см. Выше)
Forms![select]![ИмяПоляСДатой]
|
процедура Click()) какой клик? в отчете нет таких событий. | |
|
| |
|
|
|
| Спасибо, выборку она сделала, ввод в форму работает, и запрос сам выполняется, только отчет выводится по всем датам еще, там также необходимо где то изменить выражение?
А на счет Click() - вообще там по умолчанию Before Update стояла. я просто поменял процедуру когда тестировал... | |
|
| |
|
|
|
| если отчет должен содержать данные отобранные по условиям указанным в форме, то источником строк отчета должен быть тот запрос который Вы создали см. выше мою инструкцию: "1 . Создаете форму с полями ........"
на счет Click() - вообще там по умолчанию Before Update стояла
ОПять не понял... если Вы хотите раскратить поля в отчете, тои делать это нужно в модуле отчета, с полями отчета. В отчете нет событий Before Update ... | |
|
| |
|
|
|
| С датами и отчетом разобрался, большое спасибо.
А процедуру я создавал в Microsoft Office Access Class Objects , т.е. мне эти условия копировать в модуль надо? Не помогло | |
|
| |
|
|
|
| Microsoft Office Access Class Objects .... - это где? в этим лицензированием на работе ACCESS не осталось :-(
форматирование нужну описать в моделу отчета | |
|
| |
|
|
|
| Значит я скорее всего нетам пишу :(. В конструкторе отчетов я выбираю поле, с которым необходимо провести данное действие, затем правой кнопкой - обработка событий - программа , мне выходит VB, в центре окно Private Sub name_smi_BeforeUpdate(Cancel As Integer) и End Sub, я ввожу между ними свой код, затем Debug -> Compile info1, затем запускаю Run -> Run Sub/User form, выходит окошко , где надо ввести имя Macro Name, я ввожу имя(test) , жму Create, справа где дерево появляется папка "Modules" и модуль Module1 и окно
Sub test()
End Sub
и тут я уже незнаю что делать, если вводить тот же код.:
Select Case name_smi
Case ([name_smi] = "ÐÎÑÁÀËÒ")
name_smi.BackColor = vbRed
Case [name_smi] = "Èçâåñòèÿ"
name_smi.BackColor = vbYellow
End Select
то ругается на name_smi что не найдет проект или библиотека :( | |
|
| |
|
|
|
| я понял.... у Вас MSA 2007.... возможно в нем уже есть события у контролов отчета.
А вот проверять нужно запуская отчет целиком.
Кроме того я не знаю когда в отчете происхродит событие BeforeUpdate... на мой взгляд никогда. поскольку отчет не редактируется. В MSA до 2007 есть событие отчета "форматирование" попобуйте в него написать свой код | |
|
| |
|
|
|
| Нашел в сойствах отчета "Форматирование", написал такой код :
if [name_smi]="РОСБАЛТ" then [name_smi].bacлcolor=vbRed(или 55da6r) endif - реакции не заметил :(
Может там должен быть другой синтаксис? | |
|
| |
|
15 Кб. |
|
| вот | |
|
| |
|
|
|
| Спасибо огромное! Все теперь понял =) | |
|
| |
|
|
|
| А можно узнать, по какому принципу ты эти числа вводил? Откуда брал значения для цветов? А то я пробовал писать в формате FFFFFF - не прокатывает код
И еще: я в VBA накладываю условие на значение поля:
If (name_smi= "1234") then
Me.(или без Me - так и понял для чего он нужен)name_smi.ForeColor=RGB (255,255,255)
endif
в тоге она меняет значения всех полей в отчете, а мне нужны только определенные. Можно ли как-то переделать? Прошу совета. | |
|
| |
|
|
|
| Видимо не ответят | |
|
| |
|
|
|
| не заметил этого вопроса.
значения из цветов - в данном случае брал из конструктора форм
создал поле, назначал ему нужный цвет, копировал числовое значение,
но вообще есть такая программка EclipsePalette (http://www.greeneclipse.com/)
ME - это ссылка на текущий объект form для формы или Report для отчета.
Последний вопрос не понял... посмотрите как в моем примере | |
|
| |
|
|
|
| За программу спасибо, а то приходилось из графического редактора в калькулятор копировать и там конвертировать =). А с цветами шрифтов я как с фоном сделал, спасибо | |
|
| |