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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Запросы и условное форматирование (2007)
 
 автор: KIP4   (09.07.2007 в 14:27)   личное сообщение
 
 

Здравствуйте. Есть 2 задачи, которые никак не могу решить.
1. Необходимо при вводе в форму 2х дат создание отчета , в которых бы содержались данные между этими двумя датами. Как я понимаю для этого необходимо создание запроса с 2мя параметрами +связь запроса с формой и отчетом, однако в свойствах запроса получается только ввод одной даты
2. Необходимо осуществить изменение цвета поля в зависимости от значения этого поля. В условном форматировании можно сделать только 3 условия, но в поле примерно 25 значений. для каждого нужен свой цвет. Как я понял, для этого необходимо уже VBA, а я в нем ни бум-бум.Пытаюсь написать чтото вроде

If (name_smi = "значение поля") Then

name_smi.ForeColor = vbYellow

name_smi.BackColor = vbRed

End If
однако она изменяет при нажатии цвета всех полей на последнее.

Подскажите пожалуйства. Заранее спасибо!

  Ответить  
 
 автор: osmor   (09.07.2007 в 15:27)   личное сообщение
 
 

1. в запросме можно задать много условий.
например
select * from Таблица where ПолеСДатойВТаблице Between Forms![ИмяФОрмы]![ДатаС] And Forms![ИмяФОрмы]![ДатаПО].
2. если форма у вас ленточная, то смена цвета приведет к изменению цвета во всех строках.
Варианты решения есть но они слишком сложны для и реализации описания в форуме.

Вообще как показывает практика человек может нормально работать не более чем с 6 цветами.

  Ответить  
 
 автор: KIP4   (09.07.2007 в 16:00)   личное сообщение
 
 

А можно поподробнее по поводу SQL запроса? А то теперь она просит меня ввести еще параметры Формы!Form-select date!ДатаС. Как я понимаю, сначала необходимо создать сам запрос, а затем уже форму относительно новой "виртуальной таблицы". на оф сайте просто довольно запутанно написано (http://office.microsoft.com/ru-ru/access/HA100963181049.aspx?pid=CH100645771049)
А по поводу цветов - мне необходимо просто вбить цвета для каждого значения, чтобы в отчете они всего лишь выделялись. Неужели это действительно так сложно сделать на VBA, ведь в условном форматировании это довольно легко...

  Ответить  
 
 автор: osmor   (10.07.2007 в 09:46)   личное сообщение
 
 

Что-то не понял с "виртуальной таблицей"
1. Создаете форму с полями данные из которых будут использоваться в условии в запроса.
2. Создаете запрос в условии которого указываете поля созданной формы (см. выше)
3. Создаете отчет источником которого является созданный запрос
4. в форме создаете кнопку для открытия отчета

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

  Ответить  
 
 автор: KIP4   (10.07.2007 в 14:57)   личное сообщение
 
 

Я пишу такую строчку в SQL режиме :
WHERE (((alltable.[date_publish]) Between [Forms]![select]![31.05.2007] And [Forms]![select]![31.12.2007]));
Пишет про ошибку в скобках.
2. Цвета должны быть только в отчете, однако при выполнии такого кода, как я написал, она меняет цвет всех полей на один (если процедура Click()), а не относительно значений. т.е .как я понимаю необхидо что то писать между ИмяПоля() и BackColor..

  Ответить  
 
 автор: osmor   (10.07.2007 в 15:59)   личное сообщение
 
 

Forms![select]![31.05.2007] - это что?

если Вы ссылаетесь на поле формы, то нужно указывать имя поля (см. Выше)

Forms![select]![ИмяПоляСДатой]


процедура Click()) какой клик? в отчете нет таких событий.

  Ответить  
 
 автор: KIP4   (10.07.2007 в 16:21)   личное сообщение
 
 

Спасибо, выборку она сделала, ввод в форму работает, и запрос сам выполняется, только отчет выводится по всем датам еще, там также необходимо где то изменить выражение?
А на счет Click() - вообще там по умолчанию Before Update стояла. я просто поменял процедуру когда тестировал...

  Ответить  
 
 автор: osmor   (10.07.2007 в 16:42)   личное сообщение
 
 

если отчет должен содержать данные отобранные по условиям указанным в форме, то источником строк отчета должен быть тот запрос который Вы создали см. выше мою инструкцию: "1 . Создаете форму с полями ........"

на счет Click() - вообще там по умолчанию Before Update стояла
ОПять не понял... если Вы хотите раскратить поля в отчете, тои делать это нужно в модуле отчета, с полями отчета. В отчете нет событий Before Update ...

  Ответить  
 
 автор: KIP4   (10.07.2007 в 16:54)   личное сообщение
 
 

С датами и отчетом разобрался, большое спасибо.
А процедуру я создавал в Microsoft Office Access Class Objects , т.е. мне эти условия копировать в модуль надо? Не помогло

  Ответить  
 
 автор: osmor   (11.07.2007 в 23:00)   личное сообщение
 
 

Microsoft Office Access Class Objects .... - это где? в этим лицензированием на работе ACCESS не осталось :-(
форматирование нужну описать в моделу отчета

  Ответить  
 
 автор: KIP4   (12.07.2007 в 00:21)   личное сообщение
 
 

Значит я скорее всего нетам пишу :(. В конструкторе отчетов я выбираю поле, с которым необходимо провести данное действие, затем правой кнопкой - обработка событий - программа , мне выходит 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 что не найдет проект или библиотека :(

  Ответить  
 
 автор: osmor   (12.07.2007 в 08:39)   личное сообщение
 
 

я понял.... у Вас MSA 2007.... возможно в нем уже есть события у контролов отчета.
А вот проверять нужно запуская отчет целиком.
Кроме того я не знаю когда в отчете происхродит событие BeforeUpdate... на мой взгляд никогда. поскольку отчет не редактируется. В MSA до 2007 есть событие отчета "форматирование" попобуйте в него написать свой код

  Ответить  
 
 автор: KIP4   (12.07.2007 в 21:30)   личное сообщение
 
 

Нашел в сойствах отчета "Форматирование", написал такой код :
if [name_smi]="РОСБАЛТ" then [name_smi].bacлcolor=vbRed(или 55da6r) endif - реакции не заметил :(
Может там должен быть другой синтаксис?

  Ответить  
 
 автор: osmor   (13.07.2007 в 06:08)   личное сообщение
15 Кб.
 
 

вот

  Ответить  
 
 автор: KIP4   (13.07.2007 в 14:32)   личное сообщение
 
 

Спасибо огромное! Все теперь понял =)

  Ответить  
 
 автор: KIP4   (26.07.2007 в 18:21)   личное сообщение
 
 

А можно узнать, по какому принципу ты эти числа вводил? Откуда брал значения для цветов? А то я пробовал писать в формате FFFFFF - не прокатывает код
И еще: я в VBA накладываю условие на значение поля:
If (name_smi= "1234") then
Me.(или без Me - так и понял для чего он нужен)name_smi.ForeColor=RGB (255,255,255)
endif
в тоге она меняет значения всех полей в отчете, а мне нужны только определенные. Можно ли как-то переделать? Прошу совета.

  Ответить  
 
 автор: KIP4   (05.08.2007 в 22:52)   личное сообщение
 
 

Видимо не ответят

  Ответить  
 
 автор: osmor   (06.08.2007 в 08:42)   личное сообщение
 
 

не заметил этого вопроса.
значения из цветов - в данном случае брал из конструктора форм
создал поле, назначал ему нужный цвет, копировал числовое значение,
но вообще есть такая программка EclipsePalette (http://www.greeneclipse.com/)
ME - это ссылка на текущий объект form для формы или Report для отчета.
Последний вопрос не понял... посмотрите как в моем примере

  Ответить  
 
 автор: KIP4   (06.08.2007 в 12:37)   личное сообщение
 
 

За программу спасибо, а то приходилось из графического редактора в калькулятор копировать и там конвертировать =). А с цветами шрифтов я как с фоном сделал, спасибо

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