Как лучше реализовать Табель?

Karfaqen
Дата: 01.12.2006 13:13:34
ДажеНеЗнаю
Я планирую вывести табель за месяц, а также разные группировки данных по дате. Вот только что за зверь TRANSORM-запрос пока не знаю.
TRANSFORM-запрос позволит вам получить из ваших таблиц результат в виде таблицы, где, скажем, по строчкам будут ФИО, в столбцах - даты, а в ячейках - ну что нибудь, характерезующее визит ФИО в этот день (ну хоть плюсик). Ну типа такой календарный табель посещений за месяц, например.

В принципе, такой TRANSFORM можно сделать и без отдельной таблицы дат - просто используя те даты, которые вы будете писать в таблицу связи фио и дат (ваша табл3). Однако тут есть один момент, который всегда огорчает начинающих построителей таких табелей. А именно - если у вас в таблице связи фио/даты не будет ни одной записи для какого-то дня, то столбец с этой датой вообще не появится в сводном TRANSFORM-табеле. Отсутствующие даты возможно включить в результат лишь при наличии отдельной таблицы с полным списком дат, которые должны быть представлены в табеле.

Если вы не планируете строить подобные запросы, то вам тогда отдельная таблица дат вовсе ни к чему. Группировки можно делать прямо по табл3, в которой сделать поле даты.
ДажеНеЗнаю
Дата: 01.12.2006 13:30:34
Karfaqen
получить из ваших таблиц результат в виде таблицы, где, скажем, по строчкам будут ФИО, в столбцах - даты, а в ячейках - ну что нибудь, характерезующее визит ФИО в этот день (ну хоть плюсик). Ну типа такой календарный табель посещений за месяц, например.

Это именно то, что мне нужно. Только как ставить эти "плюсики"? И еще вопрос, как заполнить такой табель, если ФИО в конкретный день было 200 штук - Запросом на добавление?

Добавлю, что упомянутые даты могут использоваться совсем в других областях, без привязки к ФИО (накладные всякие, списания и т.п.). Тогда лучше там использовать свои Даты, как отдельные поля? В этом и состоял основной вопрос - сделать Даты отдельной таблицей или везде вводить подобные поля.
Karfaqen
Дата: 01.12.2006 14:04:10
ДажеНеЗнаю
Это именно то, что мне нужно. Только как ставить эти "плюсики"?
Вы же говорили, что пока не делали TRANSFORM, вот когда будете делать - разберетесь.

ДажеНеЗнаю
как заполнить такой табель, если ФИО в конкретный день было 200 штук - Запросом на добавление?
Ну это смотря как у вас работа в приложении организована. Записи по-разному в базу заносятся - запросом, программно, руками. Чем НАДО, тем и заносите.

ДажеНеЗнаю
Добавлю, что упомянутые даты могут использоваться совсем в других областях, без привязки к ФИО (накладные всякие, списания и т.п.). Тогда лучше там использовать свои Даты, как отдельные поля? В этом и состоял основной вопрос - сделать Даты отдельной таблицей или везде вводить подобные поля.
Ответ вам уже был дан.
1.Отдельный список дат (с одним полем) нужен только для табеля (для полной картины дат).
2.В прочих таблицах - обычное поле даты.
ДажеНеЗнаю
Дата: 02.12.2006 10:39:04
mds_world
табл.2 вообще не нужна. Можно оставить следующее:
1. Табл1 - КодФИО; ФИО
2. Табл3 - Счетчик(ключевое поле); Дата; КодФИО.
Связаны по полю КодФИО. Счетчик нужен поскольку за одну дату может быть несколько посещений разными ФИО.

В предложенном варианте поле Дата будет дублироваться многократно при наличии разных ФИО за одну дату. Немного разобралась с перекрестным запросом, даже поняла как "+" проставить и вывела что-то похожее на табель. Но все сделала через три таблицы, как писала первоначально, так как таблицы ФИО и Даты связаны друг с другом отношением "Многие-ко-многим".
mds_world
Дата: 02.12.2006 14:44:02
ДажеНеЗнаю
В предложенном варианте поле Дата будет дублироваться многократно при наличии разных ФИО за одну дату. ... Но все сделала через три таблицы, как писала первоначально, так как таблицы ФИО и Даты связаны друг с другом отношением "Многие-ко-многим".
Любой последовательный код для такого специфического показателя как дата, будет однозначно связан с самой датой. Выигрыша от введения кода вместо даты нет, потери могут быть - надо следить за созданием кода, предотвращать всяческие неприятности с дублированием, потерями, удалением, изменением, правильной последовательностью. Ведение самой даты вместо замещающего ее кода избавляет сразу от всего. От всех неприятностей.
ДажеНеЗнаю
Дата: 03.12.2006 10:28:31
Интересно.... Выигрыша нет, так как дата хранится в виде числа? Если да, то Вы правы. Переделаю.
mds_world
Дата: 03.12.2006 11:21:40
ДажеНеЗнаю
Интересно.... Выигрыша нет, так как дата хранится в виде числа? Если да, то Вы правы. Переделаю.
Да, в виде вещественного числа. До запятой дата, мантисса время.
mds_world
Дата: 03.12.2006 12:07:53
Вернее, до запятой количество дней, кажется от 30 декабря 1899 г.