Как работать с таблицей, содержащей уникальный набор значений типа double? |
Здравствуйте, гость ( Вход | Регистрация )
Как работать с таблицей, содержащей уникальный набор значений типа double? |
Steklova Olga |
11.6.2013, 10:18
Сообщение
#1
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Всем привет
В таблице БД FireBird надо хранить массивы значений F_FR для разных объектов (TO_F_OBJ_NMB - номер объекта). Значения содержат 1..6 цифр в целой части, 2 цифры в дробной части, значения положительные. Для конкретного объекта массив F_FR не должен содержать повторяющиеся значения. Таблица создана так
Для корректировки таблицы T_OBJ_FR использую диалог, в котором для корректировки поля F_FR использую doubleSpinBox. Мне непонятно вот что: 1) можно ли создать уникальный ключ, содержащий поле типа DOUBLE PRECISION? (например, создать уникальный ключ (TO_F_OBJ_NMB, F_FR)) 2) если не создавать уникальный ключ, то как проверить, есть ли уже в таблице только что введенное оператором в doubleSpinBox значение F_FR? (как написать SELECT?) 3) не лучше ли будет описать поле F_FR как NUMERIC(8,2), а не DOUBLE PRECISION? 4) можно ввести значение типа NUMERIC(8,2) с помощью doubleSpinBox? 5) можно создать уникальный ключ, содержащий поле типа NUMERIC? Сообщение отредактировал Steklova Olga - 13.6.2013, 9:15 |
|
|
Steklova Olga |
13.6.2013, 11:18
Сообщение
#2
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Litkevich Yuriy, большое спасибо за ответ
варианты удобного, на мой взгляд, ключа: это неудобно1) текстовый с фиксированным форматом "000000.00" 2) целый (10 знаков) Добавила уникальный ключ
Работает. Только, чтобы все было корректно, надо при работе с полем F_FR всегда использовать одинаковое кол-во цифр в дробной части (в моем случае - две). Иначе может получиться вот что. Например: в tableView для поля F_FR укажем отображать 2 цифры в дробной части, для dblSpinBox для корректировки значения F_FR укажем setDecimals(2). Если оператор выполнит скрипт заполнения таблицы, указав (по ошибке) для значений F_FR не 2, а 3 цифры в дробной части, то в tableView он увидит значения 1.11, 1.11, 1.12, по внешнему виду нарушающие уникальность,к тому же оператор сможет добавить в эту таблицу значение F_FR, равное 1.12. |
|
|
Текстовая версия | Сейчас: 25.11.2024, 7:43 |