powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выделение записи цветом - работающий вариант
18 сообщений из 18, страница 1 из 1
Выделение записи цветом - работающий вариант
    #32156659
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Принципиальная идея не моя. К сожалению, источники указать не могу, просто не помню, могу только сказать - сайты по Access.
Вариант частный хотя можно развить для каждого случая.
Создаем таблицу pic (у меня одна, В принцепе можно таких сделать несколько кому что подойдет) с полями
Ind int
Pic image
в режиме просмотра таблицы вставляем:
в поле ind целые числа соответствующие чему-либо
( например, номеру склада
1 - розовый
2 - голубой
3 - коричневый
201 наличие товара>заказано - зеленый
201 наличие товара = заказано - желтый
203 наличие товара<заказано – красный)
в поле pic добавляем объект типа точечный рисунок (необходимо чтобы соответствующие прибамбасы были установлены в виндоусе (к примеру PAINT).
Параметры рисунка 1х1 пиксел, цвет соответственно вышеуказанному
(хотя говорят, что меньше 6х6 не стоит, но у меня проходит)

в рабочей таб. необходимо (для нашего случая ) 2 роля -pic1(склад) и pic(заказ) – int
создаём ХП связывающую раб. таб. и 2 табл. pic.

SELECT tt.ind, tt.наименование, tt.наличие, tt.количество, tt.цена,
tt.сумма, tt.склад, tt.pic, tt.pic1, pic_1.pic AS p, pic_2.pic AS p1
FROM tt INNER JOIN pic pic_2 ON tt.pic1 = pic_2.коде LEFT OUTER JOIN
pic pic_1 ON tt.pic = pic_1.коде
(только как пример связи таблиц)

В форме делаем ХП источником данных, из показанного selecта создаем команду синхронизации с «…..WHERE ind=?», однозначная таблица пишем tt (у меня).
далее
свойство «Перехват нажатия клавиш» - «ДА»
событие «Клавиша вниз» процедуру обработки события
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
On Error Resume Next

Select Case KeyCode
Case vbKeyUp
Call MoveMe(True)
Case vbKeyDown
Call MoveMe(False)
End Select
End Sub

Sub MoveMe(varUp As Boolean)
On Error Resume Next
If varUp Then
DoCmd.GoToRecord , , acPrevious
Else
DoCmd.GoToRecord , , acNext
End If
End Sub
дает возможность перемещения по записям с помощью стрелок
для двух полей «количество» и «цена» делаем «Доступ» - «ДА», «Блокировка» - «НЕТ»
для всех остальных полей «Доступ» - «НЕТ», «Блокировка» - «ДА»
для двух полей в событие «потеря фокуса» - процедуру обработки события:
Private Sub количество_LostFocus()
lostFocus
End Sub
для двух полей в событие «получение фокуса» - процедуру обработки события:
Private Sub количество_GotFocus()
gotFocus
End Sub
где
Public Sub lostFocus()
Dim s As Long
If Nz(Me!количество, 0) > Nz(Me!наличие, 0) Then s = 200
If Nz(Me!количество, 0) = Nz(Me!наличие, 0) Then s = 202
If Nz(Me!количество, 0) < Nz(Me!наличие, 0) Then s = Me!склад
If IsNull(Me!количество) Then s = 0
Me!pic = s
DoCmd.RunCommand acCmdSaveRecord
End Sub

Public Sub gotFocus()
On Error Resume Next
Me!pic = Me!склад
DoCmd.RunCommand acCmdSaveRecord
End Sub



для поля «количество» событие «после обновления»
в конце, после требуемой обработки вызываем lostFocus, чтобы изменить цвет строки (записи) не выходя из записи.
В форме необходимо два поля типа «присоединенная рамка объекта» с параметрами
«установка размера» - «вписать в рамку»
«тип фона» – «прозрачный»
«доступ» - «нет»
«блокировка» – «да»
у всех других полей тип фона – «прозрачный».
одно из полей (отображающее цвет склада) помещаем под поле «склад» (размеры этих полей равные)

второе делаем по ширине перекрывающим все остальные поля и помещаем под ними.

что имеем:
при выводе формы поле склад будет иметь разные цвета – легко зрительно выделить, что на каком складе.
при перемещении по записям:
если «количество» «пусто» то - текущая запись выделяется цветом склада
после ввода в поле «количество» числа запись будет выделяться цветом в зависимость от соотношения полей «количество» и «наличие»

PS
Описание сделано с опробованной формы путем исключения конкретных кодов приемлемых конкретно для моего проекта, поэтому могут быть неточности, за которые заранее прошу прощения, если что – поясню отдельно.
Быстродействие определяется объёмом картинки из таблицы pic.
если бы чем заменить DoCmd.RunCommand acCmdSaveRecord на что-нибудь более быстродействующее (фантазии??), а то при переходе по записям стрелками стрелка мыши успевает преобразовываться в часики – происходит замедление движения, мелочь, но лучше бы от этого избавиться
для mdb рисунки могут иметь любой размер (в смысле объём) у меня были сделанные в Corel с переходом цвета от одного края до другого. Удобно: разные поля в строке разным цветом. Необходимо только чтобы таблица с картинками была на клиенте, а не в базе на другом компе.
Но для ADP картинки хранятся на сервере, поэтому пришлось ограничить размер картинки в 1 пиксел. Слишком много гонялось по сети (2Senin Victor – пока отлаживал все на одном компе, все было нормально). Как перевел базу на сервер - стало тормозить, пока не посмотрел, какой объём передается в сети. При проходе по форме в сто строк по сетке в одном направлении – несколько МБ, а оператор делает это постоянно. Был бы какой-нибудь эмулятор сети было бы проще. Если бы можно сделать что-нибудь подобное mdb в ADP?
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32156717
pv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так. мысль для размышления, для ADP проекта:
А если создать форму, не связную с никакими объектами базы данных, разместить на ней картинки, а потом просто обращаться к картинкам на этой форме?
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32156732
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да тут бы свой ActiveX соорудить.
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32156750
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Принимаются все предложения
2pv
как использовать в этом случае источник данных?
2V. Motchulsky
буду рад применить.
если кто имеет способность сделать ActiveX прошу поучавствовать.
надеюсь предложения будут.
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32156751
pv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 вадя
А зачем использовать тогда источник данных, можно же и код видоизменить, неужели все только из-за этого остановится?
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32156757
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если в данные для поля присоединенная рамка объекта вставить функию, которая бы возвращая катринку. а прараметром функции № требуемой картинки из какой-нибудь таблици (единожды загруженной на клиента), а этот № - данные из результатов работты ХП (источника данных формы).
может быть.
но при использовании такой функции происходит , по моему постоянный обсчет всех полей где встречается данная функция на клиенте. и если ленточная форма на экан выиодит 20 записей то функция будет вызываться 20 раз - все теряет смысл
поправте меня, гуру, если что не так.
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32156771
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 вадя

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

З.Ы.
Кстати сохраненые рекодсеты можно редактировать/добавлять/удалять, а потом синхронизировать с сервером.
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32156775
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема в том, что mdb позволяет в одном запросе связать две таблицы одну с клиента другую с "сервера".
а в adp как этого добиться ведь связывание таблиц происходит на сервере и результат гонится на клиента.
вариант (на пальцах)
есть сохраненный рекордсет (1)
есть результат работы ХП на клиенте в виде рекордсета (2)
делаем рекордсет (2) "inner join" (1) as (3)
подсовываем (3) в источник данных формы

вопрс
что пишем в команде синхронизации, однозначной таблице
на сколько это будет редактируемо

кстати я приобрел ГЕТЦа "настольные приложения". ищу далее второй том...
действительно КНИГА-БИБЛИЯ
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32156951
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто может улучшить ?????????
гуру! давайте доведем до совершенства!
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32157083
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принцепе рисунок из 1 пикселя много места не занимает (58 байт Paint 24-bit bitmap) и, как бы, можно гонять по сети. Но мне не понравилась сама идея путать данные з сервера с информацией которая, в принципе, должна храниться на клиентской стороне. Тем более, что это усложняет структуру запроса к серверу (добавляется join). Как всегда стороник решения всех задач при применении стандартных средств. Не уверен, что будет работать контрол «присоединенная рамка объекта» с функцией в качестве источника, да и функция будет немного сложноватой. Решил поискать более простой способ и нашел. Любые цвета, практически в любом количестве и без рисунков! Все стандартными средствами , но немного с нестандартным подходом. Тест уже прошел. Красиво оформлю, опубликую.
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32157104
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2V. Motchulsky
жду с нетерпение
у меня еще есть возможность внести коррекции в проект.
один пиксель это не много но сумме это 4-5 килобайт на одну запись туда сюда просто пустого переноса. зачем гонять.
апри бытром переходе просмотре поток "мусора".
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32157116
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только что проверил
рисунок - 1 пиксел
число строк ~130 проход с начала в конец по сети передано 490 Кб в одну сторону это не есть хорошо
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32162875
antonz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 V. Motchulsky
Ну где ж решение?
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32162929
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
/topic/31793
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Выделение записи цветом - работающий вариант
    #32760421
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для adp, что касаемо картинок, рекомендуют в бд хранить ссылки на картинки, а не сами картинки. Я себе представляю это примерно так: На клиенте создается папочка с путем ..\pic, к примеру. А на сервере таблица с записями '..\pic\pic1.jpg' и т.п...
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32760439
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32760471
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
доработайте пример для табличных форм
...
Рейтинг: 0 / 0
Выделение записи цветом - работающий вариант
    #32760518
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
табличные формы...
упс...
кажется я не туда зашел

в самом деле
на сегодняшний день вопрос совершенно не актуальный
аксесс 97 и все что было до - умер

в последних версиях спасает условное форматирование в том числе в таблицах
если не хватает условий для условного форматирования - можно задавать их динамически , из кода в крайнем случае красить разные поля - одни от одних условий другие от других...
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выделение записи цветом - работающий вариант
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]