Как сделать дату в access?

Добавление элемента управления Календарь в форму

Элемент управления Календарь может быть включен в форму для того, чтобы пользователь мог выбрать значение поля типа Дата/Время, а не вводить дату вручную.

Чтобы включить элемент управления Календарь в форму:

  1. Откройте форму в режиме Конструктора.
  2. Выберите команду меню Вставка, Элемент ActiveX (Insert, ActiveX Controls), при этом откроется диалоговое окно Вставка элемента ActiveX (Insert ActiveX Controls) со списком всех зарегистрированных в системе элементов ActiveX.
  3. Выберите в списке (рис. 15.37) строку Элемент управления Календарь 10.0 (Calendar Control 10.0) и нажмите кнопку ОК.

Рис. 15.37. Диалоговое окно Вставка элемента ActiveX

Далее можно настроить этот элемент, используя его свойства. В отличие от других элементов управления, в данном случае свойства имеют:

  • элемент управления ActiveX формы (окно свойств то же самое, что у других элементов управления и у самой формы);
  • объект Календарь, который реализуется этим элементом управления.

В нашем примере создайте новую форму в режиме Конструктора. Добавьте в нее i описанным выше способом элемент управления Календарь. Откройте диалоговое окно свойств элемента ActiveX. Обратите внимание на свойство Класс (Class), определяющее класс элемента ActiveX. Значение этого свойства установилось автоматически: MSCAL.Calendar.7. Определите имя элемента: ocxCalendar и размеры ‘ примерно 8×6 см.

Чтобы посмотреть свойства объекта Календарь:

  1. Поместите указатель мыши на календарь и щелкните правой кнопкой мыши, чтобы получить контекстное меню для элемента управления формы.
  2. В появившемся меню щелчком выберите строку Объект Календарь (Calendar Control Object), при этом откроется объектное меню (рис. 15.38). Выберите в этом меню команду Свойства (Properties). Появится диалоговое окно свойств объекта Календарь.

Рис. 15.38. Контекстное меню для элементов управления ActiveX

  1. По умолчанию окно свойств раскрывается на вкладке Общие (General), где можно установить некоторые обшие свойства элемента управления Календарь. Раскройте вкладку Шрифты (Fonts) диалогового окна Свойства: Календарь.
  2. Для элемента DayFont из списка Свойства (Property Name) на вкладке Шрифт (Font) установите шрифт Arial Cyr, в группе Аттрибуты (Font Style) установите флажок полужирный (Bold), установите размер шрифта «10» и нажмите на кнопку Применить (Apply). Размеры столбцов элемента Календарь ограничивают размер шрифта в DayFont величиной 9,75 пунктов (рис. 15.39).

Рис. 15.39. Вкладка Шрифт диалогового окна Свойства: Календарь

  1. Повторите процесс выбора шрифта, описанный на предыдущем шаге, для свойств GridFont (шрифт — Arial Cyr, начертание — полужирный, размер — 9) и TitleFont (шрифт — Arial Cyr, начертание — полужирный, размер — 12).
  2. Раскройте вкладку Цвет (Colors) диалогового окна свойств. Эта вкладка предоставляет возможность изменить на любой из 16 стандартных цветов (или системных цветов Windows) цвета фона (Backcolor), шрифта названий дней (DayFontColor), шрифта дат (GridFontColor), шрифта заголовка (TitleFontColor) и линий сетки (GridLinesColor) (рис. 15.40).
  3. Нажмите кнопку ОК, чтобы закрыть окно свойств объекта. Откройте окно свойств формы. Установите Отсутствуют (Neither) в качестве значения свойства Полосы прокрутки (ScrollBars) и Нет (No) как значение свойств Кнопки перехода (NavigationButtons) и Область выделения (RecordSelectors).
  4. Переключите форму с встроенным календарем в режим формы. Вид элемента управления Календарь в режиме Формы приведен на рис. 15.41. Чтобы изменить год или месяц, можно использовать раскрывающиеся списки в заголовке календаря.
  5. Вернитесь в режим Конструктора. Теперь мы рассмотрим, как можно использовать методы элемента Календарь.

Рис. 15.40. Вкладка Цвет диалогового окна Свойства: Календарь

Рис. 15.41. Форма с элементом управления Календарь с раскрывающимися списками месяца и года

Замечание

Чтобы познакомиться со всеми свойствами, методами и событиями любого элемента ActiveX, встроенного в форму, откройте окно свойств этого объекта и нажмите кнопку Справка (Help).

  1. Справа от календаря расположите вертикально шесть кнопок. Назовите их так, как показано на рис. 15.42: «Следующая неделя», «Предыдущая неделя», «Следующий месяц», «Предыдущий месяц», «Следующий год», «Предыдущий год».
  2. Ниже календаря создайте текстовое поле. В этом поле будет отображаться дата, выбранная в календаре. Присвойте свойству Имя (Name) этого поля значение Дата, а свойству Значение по умолчанию (Default Value) — значение =Date ().
  3. Теперь напишем несколько процедур обработки событий. Во-первых, нужно, чтобы при открытии формы на календаре отображалась текущая дата. Для этого необходимо создать процедуру обработки события Загрузка (Load) формы. Ниже приводится текст этой процедуры.

Рис. 15.42. Окончательный вид формы, содержащей элемент управления Календарь в режиме Конструктора

  1. При выборе даты в календаре должно меняться значение поля «Дата». Поэтому нужно написать процедуру обработки события ПослеОбновления (AfterUpdate) элемента управления Календарь. Как и предыдущая, эта процедура состоит из одного оператора. Однако в ней показано, что для ссылки на значение элемента Календарь необязательно используется свойство value.
  1. Еще шесть процедур должны обрабатывать событие НажатиеКнопки (Click) для каждой из шести кнопок. В этих процедурах используются шесть методов объекта Календарь:
  1. Поскольку год и месяц теперь можно переключать с помощью кнопок, вы можете убрать из заголовка календаря раскрывающиеся списки, для чего откройте вкладку Общие (General) диалогового окна свойств объекта и снимите флажок Выбор месяца и года (Month/Year Selectors).
  2. Сохраните форму, дав ей имя «Календарь». Окончательный вид формы представлен на рис. 15.43.

Рис. 15.43. Окончательный вид формы с элементом управления Календарь

Читать еще:  Как сделать базу данных в access библиотека пошагово?

Как сделать дату в access?

Упражнение 6. Параметры поля

Для того, чтобы обеспечить возможность хранения в базе данных разнообразной информации, Access предлагает большой набор типов данных, перечисленных в табл. 16.1.

ТАБЛИЦА 16.1 . Типы данных

Текст длиной до 255 символов

Текст длиной до 65 000 символов

Числа различных форматов

Дата и/или время

Денежные значения различных форматов

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

Величины, способные принимать только два значения: да/нет или 1/0

Поле объекта OLE (OLE Object)

Поля, позволяющие вставлять рисунки, звуки и данные других типов

Ссылки, дающие возможность открывать объект Access (таблицу, форму, запрос и т. п.), файл другого приложения или web-страницу

Чтобы сделать работу со списком контактов более продуктивной, следует изменить типы данных некоторых полей.

В окне базы данных выделите таблицу Список и щелкните на кнопке Конструктор (Design), расположенной в верхней части окна. Выбранная таблица откроется в режиме конструктора.

Описание контакта может быть достаточно длинным, а максимальная длина текстовых полей ограничена 256 символами. Поэтому измените тип поля Описание на Поле MEMO.

Щелкните на поле Дата.

Для удобства прочтения даты контакта измените 4юрмат ее отображения, выбрав в раскрывающемся списке Формат поля (Format) пункт Длинный формат даты (Long Date), как показано на рис. 16.14.

Кроме типа данных и формата отображения вкладка Общие (General) окна конструктора позволяет настроить некоторые дополнительные параметры поля, влияющие на способ ввода данных. Параметр Значение по умолчанию (Default Value) задает содержимое поля, которое записывается в новую запись в том случае, если пользователь не ввел в это поле никаких данных. Если вы регулярно обновляете список контактов, то дата контакта чаще всего будет совпадать с текущей датой. Чтобы упростить ввод информации, можно задать текущую дату в качестве значения по умолчанию для поля Дата.

Введите в поле Значение по умолчанию (Default Value) функцию Date(), которая возвращает текущую дату. В некоторых случаях требуется не только задать тип данных поля, но и ограничить его возможные значения некоторым интервалом или более сложным правилом отбора. Такое правило вводится в поле Условие на значение (Validation Rule). Предположим, вы точно знаете, что все контакты, которые будут заноситься в список, состоятся после 1 января 1999 г. Чтобы избежать ошибок, можно заставить Access сообщать вам о вводе неверной даты. Для этого выполните следующие шаги.

В поле Условие на значение щелкните на кнопке построителя выражений. Откроется окно диалога. Для задания условий или значений определенных параметров Access предлагает большой набор математических операций и функций. Построитель выражений помогает ориентироваться во всем многообразии функций Access. Верхнее прокручивающееся поле построителя содержит конструируемое выражение. Его можно изменять как путем непосредственного редактирования текста, так и с помощью других кнопок и списков построителя.

Необходимо, чтобы дата записи была позднее, то есть больше, даты 1 января 1999 г. Поэтому щелкните на кнопке >, чтобы добавить нужное условие.

Теперь нужно указать дату, с которой выполняется сравнение. Дяя этого следует воспользоваться специальной функцией, преобразующей строковую константу в дату в формате Access.

Дважды щелкните на папке Функции (Functions) в левом списке построителя выражений.

Щелкните на папке Встроенные функции (Built-in Function), чтобы вывести список стандартных функций Access.

В среднем списке выберите категорию Дата/время.

Двойным щелчком на имени функции DateValue добавьте ее в поле выражения. Вместо местозаполнителя аргумента «stringexpr» нужно ввести конкретную дату в строковом формате.

В поле выражения щелчком выделите текст «stringexpr», а затем напечатайте «1.1.99».

Щелкните на кнопке ОК.

Рис. 16.15. Параметры поля Дата

В поле Сообщение об ошибке (Validation Text) введите текст Неверная дата, который будет появляться при вводе даты, более ранней, чем 1 января 1999 г. Окончательный набор параметров поля Дата показан на рис. 16.15.

Щелкните на кнопке закрытия окна конструктора. В окне запроса на обновление структуры таблицы щелкните на кнопке Да. По причине добавления условий на значения поля Дата Access запросит о необходимости проверки содержимого этого поля в уже имеющихся записях таблицы. Щелкните на кнопке Нет (No), чтобы не выполнять проверку.

Давайте изучим влияние настроенных параметров на поведение базы данных.

Выделите таблицу Список в окне базы данных и щелкните на кнопке Открыть (Open). Теперь все даты отображаются в длинном формате, а в ячейке Дата в строке новой записи автоматически появляется текущая дата.

Щелкните в ячейке Дата второй строки, измените ее содержимое на 19.11.95 и нажмите клавишу Tab, чтобы перейти к следующему полю. Так как модифицированная дата предшествует 1 января 1999 г., что противоречит настроенному условию, Access не позволит убрать курсор из текущей ячейки и откроет окно сообщения с текстом, введенным вами в поле Сообщение об ошибке конструктора таблицы на шаге 14. Такое сообщение будет появляться до тех пор, пока вы не скорректируете дату.

    Как сделать дату в access?

    помогите победить:
    adoquery1.SQL.Add(«insert into baza values (» + labelededit2.text + «, » + datetostr(datetimepicker1.Date) + и т. д.

    при выполнени ругается на дату:
    Число содержит синтаксическую ошибку в выражении запроса «08.01.2007»


    sniknik © ( 2007-01-08 19:21 ) [1]

    использовать параметры и передавать датой, а не строкой, и вместо adoquery1 использовать adocommand1 в этом случае (insert . ).


    makaronX ( 2007-01-08 19:46 ) [2]


    MsGuns © ( 2007-01-08 20:38 ) [3]

    >sniknik © (08.01.07 19:21) [1]
    >и вместо adoquery1 использовать adocommand1 в этом случае (insert . ).

    Ну, в данном случае и квери сойдет. Хотя методологически надо, конечно, как ты сказал 😉


    Anatoly Podgoretsky © ( 2007-01-08 20:51 ) [4]

    > makaronX (08.01.2007 18:56:00) [0]

    Точно «08.01.2007», а не 08.01.2007


    MsGuns © ( 2007-01-08 21:09 ) [5]

    Дело в том, что Джет жует и не давится от строчных дат.
    Попробуйте

    adoquery1.SQL.Add(«insert into baza values (» + labelededit2.text + «, » + QuotedStr(datetostr(datetimepicker1.Date)) + и т. д.

    Хотя справедливость [1] не отменяется 😉


    sniknik © ( 2007-01-08 21:31 ) [6]

    > Дело в том, что Джет жует и не давится от строчных дат.
    даже слишком многим «не давится», а надо бы, т.к. гораздо лучше получить явную ошибку вот прям тут на месте, при написании, чем логическую и «через раз», не пойми когда/где «грянет».
    и только потому что интерпретация даты в строке jet-том, почемуто отличается от того что ожидали/системных настроек.


    palva © ( 2007-01-08 23:35 ) [7]

    > datetostr(datetimepicker1.Date)
    А вы в курсе что даты в акцессе в командах SQL положено заключать в скобки типа # #, а не в апострофы? И порядок «месяц/день» должен быть американским вне зависимости от локальных установок.


    sniknik © ( 2007-01-08 23:55 ) [8]

    > А вы в курсе что даты в акцессе в командах SQL положено заключать в скобки типа # #
    ;о) а ты до этого, немного ранее, не читал пару постов про «всеядность» jet-а. ну относительную конечно (испортить все можно), нет? ну тогда счас прочти, вот именно в этом конкретном случае (insert) сойдет и строка, сработает авто приведение типа.
    и порядок может и зависеть и не зависеть от локальных установок, смотря какая дата будет и что приводится.
    говорю же, уж слишком черезчур «всеяден», по мне так было бы лучше больше четкости и ошибки в сомнительных случаях, меньше проблем было бы. но не могу к сожалению влиять на разработчиков движка. ;о(


    sniknik © ( 2007-01-09 00:08 ) [9]

    ну вот пример
    таблица с 3-мя полями, автоинкремент, строковое и дата тайм

    делаем по очереди запросы
    первый
    INSERT INTO Table1 (Name, Dat) VALUES («Test 1″,»30.01.2007»)
    второй
    INSERT INTO Table1 (Name, Dat) VALUES («Test 2″,»01.30.2007»)

    чего как думаешь в дату запишет?

    можеш не гадать выполни и посмотри, ошибок не будет (не должно быть. )
    как и от следующего
    SELECT #30/01/2007#, #01-30-2007#

    параметры дают всетаки определенности поболе. к тому же и отрабатывает запрос с ними немного быстрей.
    потому и советуют пользоваться именно ими.


    palva © ( 2007-01-09 00:30 ) [10]

    sniknik © (09.01.07 00:08) [9]
    Спасибо, сейчас посмотрю.


    Anatoly Podgoretsky © ( 2007-01-09 01:03 ) [11]

    Можешь не пробовать, Акцесс весьма вольно обращается с датами


    palva © ( 2007-01-09 01:37 ) [12]

    Я все-таки попробовал. Вот такой код:

    <$APPTYPE CONSOLE>
    uses ActiveX, ComObj, Variants;
    var
    cn, rs: OleVariant;
    begin
    CoInitialize(nil);
    cn := CreateOleObject(«ADODB.Connection»);
    cn.Open(«Provider=Microsoft.Jet.OLEDB.4.0; Data Source=db1.mdb;»);
    rs := CreateOleObject(«ADODB.Recordset»);
    rs.Open(«SELECT * FROM table1 Where f2 = #10/4/2006#», cn, 0, 1);
    WriteLn(rs.Fields.Item[«f1»]);
    ReadLn;
    end.

    Windows 2000, Локаль русская, Офис 2000 русский, MDAC 2.8, Turbo Delphi
    В таблице запись с датой 4.10.2006. И этот код работает.
    Если # заменить на «, то «Несоответствие типов данных в выражении условия отбора»
    Если в дате поменять местами 4 и 10, то не находит ни одной записи (и, естественно, дает ошибку на следующей строке).
    Так что я вынужден повторить:
    Даты в SQL-предложениях акцесса нужно ограничивать символом #. Никакой Jet здесь не помогает.
    Порядок «дата/месяц» должен быть американским даже если локаль требует иного задания.
    То что этот порядок переворачивается для достижения валидности даты мне было известно, но я ведь с этим и не спорил.


    Anatoly Podgoretsky © ( 2007-01-09 01:39 ) [13]

    > palva (09.01.2007 01:37:12) [12]

    Кто просил 4.10, просили пробовать с 4.30


    palva © ( 2007-01-09 01:42 ) [14]

    Сейчас буду пробовать INSERT


    palva © ( 2007-01-09 01:50 ) [15]

    sniknik © (09.01.07 00:08) [9]
    Ваш INSERT действительно работает. Вот это для меня новость.


    sniknik © ( 2007-01-09 02:02 ) [16]

    palva © (09.01.07 01:37) [12]> Если # заменить на «, то «Несоответствие типов данных в выражении условия отбора»
    sniknik © (08.01.07 23:55) [8]> вот именно в этом конкретном случае (insert) сойдет и строка

    пост можно рассматривать как пример, сказанного о том что испортить можно все
    sniknik © (08.01.07 23:55) [8]> про «всеядность» jet-а. ну относительную конечно (испортить все можно)

    не, ну вот надо же, специально предупреждал «в этом конкретном случае», значит логично, что не в этом, не в конкретном работать не будет, и на тебе.

    p.s. меня все чаще разочаровывают люди, подамся ка я в дрессировщики собак. они хотя бы понимают все как есть, буквально.


    palva © ( 2007-01-09 10:07 ) [17]

    > подамся ка я в дрессировщики собак
    Это я согласен, с людьми много трудностей возникает.


    Anatoly Podgoretsky © ( 2007-01-09 15:23 ) [18]

    БД / Базы данных / Лабораторные работы / Лабораторная №9(Запросы в Access)

    Тема: Запросы в Access.

    С помощью запросов можно

    Существуют способы формулирования информационных требований пользователя формальным способом. Обычно, мы формулируем наши требования по отбору информации так:

    Найти все продукты типа Мюсли.

    Найти продукты с калорийностью меньше 200

    К сожалению, естественный язык программы не понимают и надо перенести информационные требования на формальный язык.

    Чтобы создать запрос в Access необходимо 1) …в окне базы данных открыть вкладку Запросы

    2) …и создаете запрос с помощью конструктора.

    Графический способ задания запросов.

    Конструктор позволяет задавать запросы на QBE (Query by Example)– это графический способ указания, какую информацию мы хотим отобрать.

    Окно графического редактора будет выглядеть в режиме конструктора так:

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

    в верхней части указываются таблицы, участвующие в запросе;

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

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

    В первой строке бланка запроса Поле щелчком мыши вызвать появление кнопки списка и выбрать из списка нужное поле;

    Переместить с помощью мыши требуемое поле из списка полей таблицы в схеме данных запроса в первую строку бланка запроса;

    Дважды щелкнуть на имени поля таблицы в схеме данных запроса

    Для включения в запрос всех полей таблицы можно переместить с помощью мыши в соответствующую строку бланка запроса все поля из списка полей в схеме данных запроса или дважды щелкнуть на символе * в этом списке

    Очень важно научиться задавать условия, накладываемые на значения полей.

    Условие записывается в строке Условие отбора!

    Когда вы задаете условия, вам необходимо помнить каким типом данных у вас задано поле.

    Примеры задания условий:

    Для числовых полей.

    функция возвращает текущую дату

    возвращает значение дня месяца в диапазоне от 1 до 31

    Day(ДатаРазмещения) – день даты размещения,

    Если хотите отобрать заказы третьей декады –

    возвращает значение месяца в диапазоне от 1 до 12

    возвращает значения года

    возвращает значение дня недели

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

    “WW” – номер недели в году

    DatePart(«M», [ДатаРазмещения]) – возвратит месяц даты размещения

    DateAdd(«параметр», число, дата)

    Функция позволяет прибавить к дате временной интервал и получить новую дату. Типы временного интервала, такие же как у функции DatePart

    DateAdd(«d»; 10, ДатаРазмещения)

    — вернет дату на 10 дней большую, чем дата размещения

    DateDiff(«d», дата1, дата2)

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

    DateDiff(«d»; [ДатаРазмещения]; [ДатаИсполнения])

    Функция вычисляет номер месяца

    Month(ДатаРазмещения)- вернет номер месяца даты размещения заказа

    Возвращает имя месяца, параметр должен иметь числовое значение

    MounthName(Month(Date())) – название месяца из текущей даты

    Возвращает номер дня недели

    WeekDay(Date()) – возвращает номер дня недели из даты

    Возвращает имя дня недели

    WeekDayName(WeekDay(Date())) – название дня недели из текущей даты

    Для обращения к функции запишите ее имя, а в круглых скобках задайте ее параметры. Для каждой функции свой набор параметров!

    Например, функция Date() не имеет параметров, она возвращает текущую дату. Параметры могут быть обязательными и необязательными. Необязательные параметры могут опускаться, их значения задаются по умолчанию.

    Например, синтаксис (правило обращения) функции DateDiff следующий:

    Первые три параметра объяснялись выше, а параметры firstdayofweek и firstweekofyear необязательные (в синтаксисе это указывается тем, что они располагаются за квадратными скобками). Если эти параметры опущены, то их значения подставятся из значений по умолчанию.

    Эти параметры позволяют задать следующую информацию:

    Firstdayofweek (задает, что считать первым днем недели) может иметь значения от 0 до 7

    Использует установки системы по умолчанию

    Воскресенье (по умолчанию)

    Firstweekofyear (задает, что считать первой неделей года) может иметь значения от 0 до 7

    Использует установки системы по умолчанию

    Начинается с недели, в которой есть день 1 января (по умолчанию).

    Начинается с первой недели, в которой есть, по крайней мере, 4 дня нового года

    Начинается с первой полной недели года

    Проще всего получить справочную информацию по синтаксису функций можно следующим образом:

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

    В левом окне Построителя раскрыть папку Функции –> Встроенные функции

    Выбрать во втором столбце нужную группу функций

    Выбрать в последнем столбце нужную функцию и нажать кнопку Справка в окне построителя выражений.

    Справка выдается на английском языке.

    Найдите срок исполнения заказов. Создайте вычисляемое поле Срок исполнения как показано в примере.

    Измените сделанный запрос и найдите заказы, которые исполнялись больше 10 дней (для вычисляемого поля Срок исполнения наложите ограничение > 10) .

    Найдите заказы, которые не оплатили (наложить условие IS NULL на поле ДатаОплаты)

    Добавьте к основным полям таблицы Заказы названия дня недели для даты размещения заказа. Для этого надо воспользоваться двумя функциями WeekDayName() и функцией WeekDay(). Посмотрите какие параметры у этих функций – и вы увидите, что функция WeekDayName имеет числовой параметр (то есть ей надо задать значение номер дня недели от 1 до 7), поэтому и необходимо из даты сначала выделить номер дня недели, а затем по номер определить имя дня недели. В результате выражение будет записываться так:

    День размещения заказа: WeekDayName(WeekDay(ДатаРазмещения))

Ссылка на основную публикацию
Adblock
detector