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

Форум: MS ACCESS

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

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

 
 

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

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

тема: access 2003 вопрос по применимой функции
 
 автор: dodikxxx   (09.09.2011 в 14:57)   личное сообщение
51 Кб.
 
 

Подскажите пожалуйста!
Есть таблица отпусков, в которой есть дата начала и окончания отпуска (см. файл прикреплённый).
Делаю запрос где календарь расписан по дням недели (через weekday) и присвоено что если выходной день то выводится буква"В", если будний, то выводится цифра 8.
НУЖНО: чтобы если даты в таблице отпусков совпадают с датами из запроса, то вместо 8 или В писалось О (отпуск).
через оператор between как-то это должно делаться, но я не пойму как...

  Ответить  
 
 автор: kot_k_k   (09.09.2011 в 16:16)   личное сообщение
 
 

таблицу о НЕ явке на работу (Tabla_not_Work) где поля fio, data_Start, data_end

update tabla_ЯВКА set [Отметка о явке] =О where Дата between data_Start and data_end and fio=rst.Tabla_not_Work
вот такая строка загонит в нужные даты букавку О,

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

судя по всему вычисления производить не собираются, поле текстовое и поэтому можно следать следующее
поле [Отметка о явке] переделать в полесосписком - его содержимое 4,6, 7, 8, В, О, Б, А и проч буковки нужные нам и цифири - такое же поле делаем в табле о не явке на работу (отпуска с-по, свой счет, болел и проч - назовем его Причина) - тогда одним запросом все 8-ки меняем на нужные нам буквы

update tabla_ЯВКА set [Отметка о явке] =rst.Причина where Дата between data_Start and data_end and fio=rst.Tabla_not_Work

п.с. лучше не иметь пробелов в названиях - гемор однозначно и использовать аглицкие буковки в названиях таблиц/полей /форм/запросов/отчетов

  Ответить  
 
 автор: dodikxxx   (12.09.2011 в 10:49)   личное сообщение
 
 

Кот_к_к
Спасибо огромное за помощь. Очень полезная информация для будущей логической мысли. Только вот у меня два вопроса, наверно ужасно глупых и всё же:
1. =rst - это что означает?
2. тут уже идёт код, (я обычно в конструкторе запроса работаю), его надо писать в режиме SQL?
P.S. справился немного по-другому, при помощи пары ограничений и запросов If. Результат порадовал, ибо далось не просто))) но очень хочу научиться пользоваться функцией between, ибо с её помощью должно было быть проще!

  Ответить  
 
 автор: kot_k_k   (12.09.2011 в 10:54)   личное сообщение
 
 

rst - это композиция типа
set dbs=Currentdb
set rst=dbs.openrecordset("таблица")
с такой таблой по любасу придешь к коду.

  Ответить  
 
 автор: kot_k_k   (12.09.2011 в 10:58)   личное сообщение
 
 

мыло дай

  Ответить  
 
 автор: dodikxxx   (12.09.2011 в 11:06)   личное сообщение
 
 

ух))) блин страшные слова какие. просто проблема в том, что я вообще не умею программировать. Работаю с access на уровне среднего пользователя, и ограничиваюсь только запросами с различными ограничениями и функциями типа if и некоторых других. в режим SQL залезаю очень редко, и то для того чтобы больше понять как это работает, а не что-либо там исправить. Но тем не менее пока знаний хватает для большинства не самых трудных проблем, тьфу тьфу тьфу)))

  Ответить  
 
 автор: kot_k_k   (12.09.2011 в 11:09)   личное сообщение
 
 

мыло напиши - сброшу одно извращение

  Ответить  
 
 автор: dodikxxx   (12.09.2011 в 11:10)   личное сообщение
 
 

))) чтобы до конца убить меня непонятными словами)))
dodikxxx@yandex.ru

  Ответить  
 
 автор: kot_k_k   (12.09.2011 в 11:17)   личное сообщение
 
 

лови

  Ответить  
 
 автор: dodikxxx   (12.09.2011 в 11:38)   личное сообщение
 
 

работа проделана хорошая. красиво и всё есть) залез в модуль и понял, что не дай Бог ))) надеюсь ограничиться будет достаточно тем что есть. хотя база классная, может и пригодится! Спасибо!

  Ответить  
 
 автор: kot_k_k   (12.09.2011 в 11:48)   личное сообщение
 
 

  Ответить  
 
 автор: Explorer   (12.09.2011 в 12:06)   личное сообщение
 
 

пришли на nowhere<гав>land.ru

  Ответить  
 
 автор: kot_k_k   (12.09.2011 в 13:57)   личное сообщение
 
 

отправил - кажись

  Ответить  
 
 автор: Explorer   (12.09.2011 в 10:58)   личное сообщение
 
 

в таблице календарь в поле "Рабочих_Часов" нужно писать количество рабочих часов
"В" это значит что должно быть указано 0 рабочих часов
(тип поля Числовой, значение по умолчанию 0, условие на значение Is Not Null And >=0 And <=24)

не следует хранить вперемешку разные типы данных

  Ответить  
 
 автор: kot_k_k   (12.09.2011 в 10:59)   личное сообщение
 
 

тада придется еще поле дописывать т.к. 0 - м.б. выходной, отпуск, свой счет, больнишный и пр.

  Ответить  
 
 автор: Explorer   (12.09.2011 в 11:04)   личное сообщение
 
 

выходные дни, они для всех выходные (кроме работающих в смену) а отпуск и больничный у каждого свой

  Ответить  
 
 автор: Stanislav   (12.09.2011 в 12:36)   личное сообщение
10 Кб.
 
 

dodikxxx
По ряду серьезных причин (быстродействие, расширяемость, легкость смены обозначений) следует использовать не символы, слова и т.д., а числовой идентификатор, ссылающийся на таблицу с описанием множества (в данном случае множество меток о присутствии на рабочем месте).
Поэтому надо создать отдельную таблицу, где будут прописаны варианты меток и соответствующие им числовые идентификаторы, и связать ее с таблицей календарь. См пример.
Даже если ты в программировании не очень, нужно потратить несколько часов на осознание этого основополагающего принципа.

  Ответить  
 
 автор: Explorer   (12.09.2011 в 12:45)   личное сообщение
 
 

>> а уникальный числовой идентификатор метки о присутствии

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

в случае если количество отработанных часов =0 а в таблице "табель-календарь" в этот день указано иное значение (0 или 7 или 8, для обычного графика) то это эксепшен, который нужно обработать как "О" или "Б" и т.п.

  Ответить  
 
 автор: Stanislav   (12.09.2011 в 12:50)   личное сообщение
 
 

То бишь каждый раз когда нужно просмотреть часы работы, нужно прогонять вычисление-сверку с таблицами отпусков, больничных, иначе как распознать что означает 0: отпуск или больничный? Почему не проще сразу обозначать соответствующим идентификатором?

  Ответить  
 
 автор: Explorer   (12.09.2011 в 12:55)   личное сообщение
 
 

в общем тут возможны разные подходы, конечно :) я спорить не стану

я к тому, что хранить в одном поле числовые значения и текстовые не кошерно и не верно и что-то тут не так.

  Ответить  
 
 автор: kot_k_k   (12.09.2011 в 13:27)   личное сообщение
 
 

всё зависит от конкретных условий - если фефочка раз в месяц тыкает пальчиком - эт одно дело, если все это привязано к турникету - софсем другой вариянт

  Ответить  
 
 автор: kot_k_k   (12.09.2011 в 13:29)   личное сообщение
 
 


я к тому, что хранить в одном поле числовые значения и текстовые не кошерно и не верно и что-то тут не так.


да iif + val и сильно не напрягаемся

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