powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Перекрестная таблица
4 сообщений из 4, страница 1 из 1
Перекрестная таблица
    #32650211
Sas_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу помощи у уважаемых гуру:
Есть задача организовать перекрестную таблицу состоящую вверху из часов суток 1,2,3...24 а слева из дней недели Понедельник, Вторник .....Воскресенье
Так называемая таблица ограничений - значение поля напрашивается логического типа - а вот с интерфейсом пока ничего не придумал
Может быть кто-то решал подобную задачу и подскажет, как проще всего организовать нечто подобное (Grid с CheckBox или нечто другое )
Хотелось чтобы пользователь мог мышью зарисовать ограничения по часам суток для нужного дня недели
Заранее благодарен
...
Рейтинг: 0 / 0
Перекрестная таблица
    #32652884
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, данную задачу можно решить и через Grid и через ChekBox. У каждого способа есть достоинства и недостатки.

1) Grid

В FoxPro Grid ВСЕГДА работает только с таблицами в качестве источника - это значит, что в необходимо будет иметь временную таблицу для работы в Grid.

Далее вставляешь вместо TextBox CheckBox и собственно все.

Первый столбец Grid отводишь под название дней недели (Понедельник, Вторник, ...), а все прочие столбцы - это часы

2) CheckBox

Тут придется повозится: Нужен объект контейнер в который и раскладываешь все 24х7=168 объектов CheckBox + заголовки.

Конейтнер нужен потому, что почти наверняка ты захочешь оформить это как класс. Вот чтобы не возится. Если предполагается масштабирование этого контейнера, то нужны будут еще 2 ScroolBar (ActiveX)

В отличии от Grid, простой CheckBox можно вообще не привязывать ни к каким данным.

Что в результате:

Grid организовать проще и быстрее, нужно меньше кодить. НО! Это все до тех пор, пока задача выглядит так как описана. Если потребуется навесить дополнительные объекты и функциональность, то с Grid это организовать значительно сложнее.

Ну, например, организовать итоговую строку, сколько дней недели помечены в каджом часе. Для контейнера с CheckBox - элементарно, а вот для Grid придется повозиться (писать много кода)
...
Рейтинг: 0 / 0
Перекрестная таблица
    #32653840
Sas_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю за проявление внимания к озвученной теме. Очень приятно было получить рекомендации.
Собственно сама таблица для подготовки исходных данных представляет следующее:
Id_lic N(20) - ключевое поле идентификатор лицензии
Nmar N(5) - номер маршрута
Dweek N(1) - номер дня недели (1- Понедельник ....8-Праздник)
Period C(200)- текстовая строка типа 01,02, ....24 список часов для ограничения

Реализовал данную задачу посредством Grid+CheckBox через промежуточный курсор с группировкой по возрастанию по DWEEK и двумя пользовательскими функциями: первая подставляет вместо номера недели его название, вторая это просто поиск в поле Period на вхождение нужного часа через AT()- результат логическогое поле.
...
Рейтинг: 0 / 0
Перекрестная таблица
    #32653954
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если структура базы данных еще может быть изменена, то я советовал бы вместо символьного поля Period сделать отдельную таблицу со списком используемых часов.

Id_lic N(20)
ApplyHour N(2)

Смысл в том, что тебе почти наверняка потребуется выполнение запросов вида:

А какие маршруты используют часы 01, 02, 03?

Если есть таблица - решение элементарное, а если символьная строка, то в принципе, тоже решаемо, но скорость выполнения такого запроса будет в разы медленнее (поиск подстроки - это в принципе не оптимизируемая задача)

PS:

Для идентификаторов записи лучше использовать поля типа Integer. Они физически занимают 4байта, в то время как поля Numeric занимают столько байт, какова указанная размерность. Т.е. N(20) занимает 20 байт. Просто экономия физического размера файла и некоторое увеличение скорости.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Перекрестная таблица
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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