Модераторы: Akella

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вычисление и вставка времени в поле 
:(
    Опции темы
Deee
Дата 25.5.2009, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 28.11.2008

Репутация: нет
Всего: нет



Здравствуйте! Делаю базу данных и клиентское приложение к ней. (InterBase 6.0, клиентское приложение пишу на delphi 7.0)
тема железнодорожная касса. Есть таблица со всеми станциями железной дороги. Выбирается две станции (отправления и назначения) нужно сделать так чтобы можно было увидеть время отправления и прибытия поезда в таблице "маршрут". 
Для простоты и наглядности, время движения поезда по всей железной дороге разделим на количество станций и получим одинаковые промежутки времени между станциями. 
Требуется, зная время отправления поезда от самой первой станции железной дороги определить время отправления с выбранной станции и время прибытия на выбранную станцию. т.е. время отправления и прибытия на конкретном участке железной дороги (маршруте), и еще время в пути.
Вот скрин  базы 
заранее спасибо!
PM MAIL   Вверх
Akella
Дата 25.5.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(Deee @  25.5.2009,  19:12 Найти цитируемый пост)
InterBase 6.0

Неужели Firebird 2.0 нельзя использовать? Почему?

Добавлено через 3 минуты и 3 секунды
Цитата(Deee @  25.5.2009,  19:12 Найти цитируемый пост)
Требуется, зная время отправления поезда от самой первой станции железной дороги определить время отправления с выбранной станции и время прибытия на выбранную станцию.

А проблема-то в чём? В чём вопрос? Ты не умеешь вычитать средствами сервера?
Это же задачки для второго или третьего класса?
Из пункта А в пункт Б вышел поезд......

Добавлено через 4 минуты и 14 секунд
Время прибытия на станцию = время отправления + время в пути

Добавлено через 4 минуты и 54 секунды
Время отправления со станции = время отправления с начальной станции + время в пути + время на стоянку
PM MAIL   Вверх
Deee
Дата 25.5.2009, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 28.11.2008

Репутация: нет
Всего: нет



Akella, у меня InterBase стоит на университетской машине, поэтому я и работаю в нем...


Цитата(Akella @  25.5.2009,  22:41 Найти цитируемый пост)
Время прибытия на станцию = время отправления + время в пути

получается, что нужно в таблице "станции" завести столбец время??
а как правильно сложить значения определенного диапазона полей?? создать процедуру?
PM MAIL   Вверх
Akella
Дата 25.5.2009, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(Deee @  25.5.2009,  22:58 Найти цитируемый пост)
а как правильно сложить значения определенного диапазона полей??

а так?
Код
select ((time1 - time2) as time3) from table1 where ...


Добавлено через 1 минуту и 17 секунд
Цитата(Deee @  25.5.2009,  22:58 Найти цитируемый пост)
получается, что нужно в таблице "станции" завести столбец время??

Не знаю, наверное, я в структуру базы сильно не вникал.
PM MAIL   Вверх
Deniz
Дата 26.5.2009, 05:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(Deee @  25.5.2009,  22:12 Найти цитируемый пост)
Вот скрин  базы 
еще покажи связи между таблицами
PS: Deee, это реальная работа или диплом/курсач?


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Deee
Дата 26.5.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 28.11.2008

Репутация: нет
Всего: нет



Deniz, а как в InterBase связи показать? я не разобрался...
это не диплом\курсач, это просто мой пример базы данных на зачет по информатике) (все делал абсолютно сам)
PM MAIL   Вверх
Akella
Дата 26.5.2009, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(Deee @  26.5.2009,  15:47 Найти цитируемый пост)
это не диплом\курсач


Цитата(Deee @  26.5.2009,  15:47 Найти цитируемый пост)
на зачет по информатике


а что, есть разница?

Добавлено через 1 минуту и 34 секунды
Цитата(Deniz @  26.5.2009,  05:51 Найти цитируемый пост)
еще покажи связи между таблицами


Цитата(Deee @  26.5.2009,  15:47 Найти цитируемый пост)
Deniz, а как в InterBase связи показать? я не разобрался...


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

PM MAIL   Вверх
Deee
Дата 26.5.2009, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 28.11.2008

Репутация: нет
Всего: нет



Akella, ну обычно диплом и курсовая это достаточно серьезные и объемные работы...
вот показал связи ... вроде бы так.
только у меня есть еще 2 таблицы с одинаковыми данными (станции отправления и станции назначения). отличаются только названиями и ключевыми полями, соответственно из таблицы маршрут поля "отправление" и "назначение" будут связаны с ключевыми полями соответствующих таблиц (на картинке для наглядности показал, что они связаны по ключу "NS")
PM MAIL   Вверх
Akella
Дата 26.5.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Deee, а почему ты не хочешь использовать IBExpert? Там и построитель диаграмм есть.

Добавлено через 3 минуты и 52 секунды
Цитата(Deee @  25.5.2009,  19:12 Найти цитируемый пост)
зная время отправления поезда от самой первой станции железной дороги

На нашёл время отправления поезда. В какой таблице, в каком поле?

Добавлено через 6 минут и 5 секунд
мне кажется, что тебе нужно переделать структуру. По крайне мере я не вижу ни одного поля типа Time

Добавлено через 14 минут и 13 секунд
В итоге у тебя должна получится таблица в виде цепочки записей:
user posted image
PM MAIL   Вверх
Deee
Дата 27.5.2009, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 28.11.2008

Репутация: нет
Всего: нет



Akella, спасибо попробую!
а как сделать так, чтобы когда время отправления и прибытия и другая информация выведены на сетку (DBGrid), при нажатии на кнопку "поезд опаздывает" бралось значение из edit(mask edit или другого компанента) и прибавлялось к значению времени прибытия (время прибытия+задержка)...
а потом соответственно при все возвращалось на круги своя??  
PM MAIL   Вверх
Deniz
Дата 27.5.2009, 05:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(Deee @  26.5.2009,  18:47 Найти цитируемый пост)
Deniz, а как в InterBase связи показать? я не разобрался...
InterBase тут не причем.
Для показа можно в Access сделать структуру БД и там есть возможность показать эту структуру или можно показать скрипт создания БД.
Судя по рисунку, базу нужно нормализовать. Например, связь(если она есть) "Железные дороги" - "Маршруты" не нужна.
Таблицу "Маршруты" можно реализовать в 2-х вариантах:
1. Как показал Akella.
Минусы: трудное редактирование маршрута (добавить/удалить станцию для добавления 1 insert + 2 update)
Плюсы: наглядность, легкость в написании SQL запросов

2. Примерно так же, как рисуют в поездах.
"Станция"
"Время прибытия"
"Время отправления"
Плюсы: легче редактировать маршрут, легче учитывать опоздание поезда (отслеживать прохождение по маршруту)
Минусы: сложности(одним SQL запросом) с разными вычислениями
PS: для зачета думаю сильно углубляться не стоит.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 27.5.2009, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Deee, сначала построй правильную базу, а затем уже...
Цитата(Deee @  27.5.2009,  01:25 Найти цитируемый пост)
а как сделать так, чтобы когда время отправления и прибытия и другая


Добавлено @ 08:43
Цитата(Deniz @  27.5.2009,  05:49 Найти цитируемый пост)
1. Как показал Akella.

Deniz у меня это не структура исходной таблицы, а не готовый результат после (как бы) выполнения SQL запроса. Такой результат просто нагляднее хотя бы, чем у автора. Видно хотя бы время  smile

Добавлено @ 08:43
Да и вообще нужно поле не время, а дата + время (timestamp)

Это сообщение отредактировал(а) Akella - 27.5.2009, 08:44
PM MAIL   Вверх
Deniz
Дата 27.5.2009, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(Akella @  27.5.2009,  11:40 Найти цитируемый пост)
Да и вообще нужно поле не время, а дата + время (timestamp)
а вот здесь не согласен.
Для шаблона нужно время без даты, потому как поезда могут ходить например так:
каждую пятницу отправление в 14:00
каждый вторник отправление в 12:00


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 27.5.2009, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Deniz, смотря в какой таблице. Если в таблице поездов, то да, нужно только время. И можно ещё одно поле текстовое, где будет хранится что-то типа расписания: "1010100". Это значит, что поезд отправляется: пн, ср, пт, то есть 1 - это отправляется, а 0 - это не отправляется. Семь чисел = семь дней недели. Можно расписание сделать в виде текстового поля, где хранить список дат отправки через запятую.
PM MAIL   Вверх
Deniz
Дата 27.5.2009, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Akella, вариант "1010100" тоже не очень хороший. Был печальный опыт(авиаперевозки) и пришлось переделывать.
Шаблон может выглядеть так:
Дата начала
Дата конца
ИД поезда
Статус integer
Дни integer
+ вспомогательные поля
Поле статус самое сложное: 
0 - разовый переезд, без периода
1 - в поле "Дни" указан период, через которые происходит движение, например "Дни" = 14 следовательно 1 раз в две недели
2 - в поле "Дни" указана номер дня месяца, по которым происходит движение, например "Дни" = 14 следовательно каждой 14 число месяца
PS: Это так, остатки горького опыта, может кому пригодится.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0616 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.