0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 38
|
|
1 | |
Вычисляемые поля24.11.2009, 22:58. Показов 4290. Ответов 19
Метки нет (Все метки)
В БД использую вычисляемое поле. Есть дата поступления, срок службы и дата списания (вычисляемое поле). Подскажите, каким типом в таблице объявить поле "срок службы", если он исчисляется только месяцами.
0
|
24.11.2009, 22:58 | |
Ответы с готовыми решениями:
19
Вычисляемые поля Вычисляемые поля Вычисляемые поля Вычисляемые поля |
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
|
24.11.2009, 22:58 | 2 |
1
|
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 38
|
|
25.11.2009, 08:25 [ТС] | 3 |
А каким образом его можно перевести в дату, а именно в месяцы?
0
|
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
|
25.11.2009, 08:27 | 4 |
Уточните что вы имеете ввиду, т.к. тип дата подразумевает в себе 3 компоненты - день, месяц и год. Просто месяц в дату перевести невозможно.
1
|
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 38
|
|
25.11.2009, 08:37 [ТС] | 5 |
Есть дата поступления (день, месяц, год). Есть срок службы Integer (как Вы сказали) будет исчисляться в месяцах. И вычисляемое поле - день, месяц, год - равно дата поступления + срок службы (в месяцах).
0
|
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
||||||
25.11.2009, 08:45 | 6 | |||||
Посмотрев на предыдущее сообщение думаю понял что вы имели ввиду
дата поступления - тип Дата срок службы - тип Int дата списания (вычисляемое поле) - тип Дата, способ вычисления: дата поступления + срок службы Для того чтоб, дата поступления + срок службы давало правильную дату надо использовать функции добавление месяца к дате Например в SQL Server добавление месяца делается так:
1
|
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 38
|
||||||
25.11.2009, 09:57 [ТС] | 7 | |||||
Но в этом запросе результат ведь заносится в "дату поступления"? А мне нужно в другое поле.
Добавлено через 27 минут А насколько правильным будет вот этот код?
0
|
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
|||||||||||||||||||||
25.11.2009, 18:13 | 8 | ||||||||||||||||||||
Вот как таблица в MS SQL должна выглядеть:
примечание - у меня даты в формате MM-DD-YYYY
1
|
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 38
|
||||||
26.11.2009, 21:58 [ТС] | 9 | |||||
Ну вот и получилось. Все работает только с фиксированным количеством месяцев. Хотя для других значений месяцев додумать программку просто.
0
|
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
||||||
26.11.2009, 23:00 | 10 | |||||
Я не понял, что вы это хотели в Дельфи сделать...
Тогда это делается в одну строчку с помощью функции IncMonth():
1
|
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 38
|
|
27.11.2009, 12:51 [ТС] | 11 |
Но эта процедура чет не работает. Говорит что не может объединить Word и Integer. Может везде указать Value?
0
|
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 38
|
|
27.11.2009, 18:14 [ТС] | 12 |
Большое спасибо, все работает. А еще подскажите, мне нужно на компоненте DBNavigator после нажатия кнопки внести изменения вставить эту же штуку. Как узнать, какая кнопка нажата на DBNavigator?
0
|
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
|
27.11.2009, 20:42 | 13 |
На самом деле это вычисление вставлять надо на OnCalculate для TTable или TQuery
1
|
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 38
|
|
28.11.2009, 19:31 [ТС] | 14 |
но я не делаю вычисляемое поле, така как потом эти данные мне нужны в таблице для последующей обработки.
0
|
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
|
29.11.2009, 02:28 | 15 |
OnNavigate - проверяете, если значение поля не соответствует тому что ложно было быть - перезаписываете
Но самое правильное, ставить на событие BeforePost - прямо перед записью проверяем и подправляем значение поля.
1
|
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 38
|
|
29.11.2009, 08:08 [ТС] | 16 |
Это событие происходит после вставки записи, если я не ошибаюсь. А не вставится ли новая запись вычисленного поля? И после вычисления нужно будет указать опять вставку.
0
|
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
|
29.11.2009, 16:25 | 17 |
1
|
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 38
|
|
30.11.2009, 20:25 [ТС] | 18 |
Т. е. заносим в таблицу запись и метод Post вызывать не нужно?
0
|
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
|
30.11.2009, 21:19 | 19 |
Метод BeforePost происходит в момент когда в программе выполняется
Table.Post() но непосредствено перед физической записью в таблицу. Т.е. в методе BeforePost Post делать не просто не надо, а нельзя - а то получиться вечный цикл.
1
|
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 38
|
|
01.12.2009, 10:59 [ТС] | 20 |
Вот это я и имел ввиду. Произойдет переполнение стека.
0
|
01.12.2009, 10:59 | |
01.12.2009, 10:59 | |
Помогаю со студенческими работами здесь
20
Вычисляемые поля Вычисляемые поля Вычисляемые поля Вычисляемые поля в Table Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |