![]() |
|
|
![]()
|
|
| Spirit_FTZI2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
Помогите с логикой. Есть база с users.mdb с таблицей log. В таблице имя, время обращения к системе, дата. Нужно открыть базу, пощитать отработаное время (разница между временем первого и последнего отмечания за отпределенную дату), произвести прочие вычисления.
Мои мысли: как вычислять то и куда заносить данные? Я через ADO подключился к базе, все записи отобразил в dbgrid. Можно было бы по ходу добавить пару столбцов в DBgrid и произвести вычисление и вписать значения в грид. Но туда мне сложно чтото вписать и как обратиться к ячейке не знаю. Потом возникла мысль если создать еще временную таблицу в Access и записать туда вычисления? Что посоветуете? как лучше реализовать? |
|||
|
||||
| ALeXandrK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 342 Регистрация: 31.1.2007 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
Не нужно никаких временных таблиц. Для вычислений прекрасно подходит SQL.
Просто открывай таблицы через TADOQuery. В нем и можно создать вычисляемые поля. Пример SQL запроса:
Этот запрос вернет тебе все поля твоей таблицы + добавит поле СвободноМест, кот. является результатом разницы двух других существующих полей. И что самое удобное - тебе не нужно будет программно добавлять поля в компоненты, они будут доступны как-будто они есть в базе Так что обращайся к SQL и компонентам, поддерживающие его. SQL язык очень простой, так что дерзай. P.s.: Запросы можно составлять в Access с помощью SQL конструктора. Он позволяет делать это даже не зная SQL. Это сообщение отредактировал(а) ALeXandrK - 10.8.2007, 16:33 -------------------- Богат не/ни тот, у кого много, а тот, кому хватает |
|||
|
||||
| Spirit_FTZI2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
Ух ты...
А если поля - тип времени, время так же можно отнимать? (нужно именно разница времени) Тогда буду лопатить SQL, сенкс!!! |
|||
|
||||
| ALeXandrK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 342 Регистрация: 31.1.2007 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
Время - это тоже число, поэтому с ним можно делать то же,
что и с обычными числами -------------------- Богат не/ни тот, у кого много, а тот, кому хватает |
|||
|
||||
| Spirit_FTZI2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
name timein timeout vremya
Sergey - 30.12.1899 9:15:00 - 30.12.1899 17:47:00 - 0,355555555555556 SQL: select name, timein, timeout, (timeout - timein) AS vremya from test Как быть с числом 0,35555... Нужно получить разницу времени... |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 4 Всего: 116 |
||||
|
||||
| Spirit_FTZI2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
Отлично
Спасибо!!! Только остался еще один маааленький вопросик: в базе поле timein, например, имеет тип Дата/Время (короткий тип времени), в базе красиво и показывается время 9:15:00, а вот в dbgrid'е показывается полный формат 30.12.1899 9:15:00. Можно ли как то показать только время в формате 9:15:00??? Сори, кому уже надоел глупыми вопросами... |
|||
|
||||
| ALeXandrK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 342 Регистрация: 31.1.2007 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
У TADOTable | TADOQuery | TQuery | TTable открой список полей, выбери поле timein и
в свойстве DisplayFormat напиши hh:nn:ss (если написать h:n:s, то будет вместо 09:08:07 отображаться 9:8:7). -------------------- Богат не/ни тот, у кого много, а тот, кому хватает |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |