Btrieve и clarion

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Btrieve и clarion

Сообщение Игорь Столяров »

kreator писал(а): 26 Сентябрь 2019, 10:06А как вы решаете проблему уникальности полей при таких напрягах?
Добавлением лишнего пробела в краткое наименование с целебным матом. :)
А как её ещё решишь если Set() идёт по ключу, а значения полей в ключе одинаковые ?
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Btrieve и clarion

Сообщение kreator »

Дело не в Set. Прошу прощения, если чего не понял. Есть у меня таблица, есть там строковое поле в 1000 символов. Я хочу на уровне базы прописать уникальность этого поля. Я ведь должен создать ключ по этому полю и наложить на него условие уникальности. Разве не так?
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Btrieve и clarion

Сообщение finsoftrz »

Если кратко, то не так. :-)
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Btrieve и clarion

Сообщение kreator »

А если не кратко? Как?
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Btrieve и clarion

Сообщение Игорь Столяров »

Не помогает эта примочка с наложением ни от чего.
Просто получается два наименования в одном:
- краткое для ключа
- полное для отображения.

Гипотетически вопрос можно решить, если использовать в ключе сигнатуру полного наименования.
Но это такая головная боль … :(
Последний раз редактировалось Игорь Столяров 26 Сентябрь 2019, 10:52, всего редактировалось 1 раз.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Btrieve и clarion

Сообщение finsoftrz »

kreator писал(а): 26 Сентябрь 2019, 10:42А если не кратко? Как?
Читайте выше, все написано.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Btrieve и clarion

Сообщение finsoftrz »

Игорь Столяров писал(а): 26 Сентябрь 2019, 10:45Не помогает эта примочка с наложением ни от чего.
Просто получается два наименования в одном:
- краткое для ключа
- полное для отображения.
От чего не помогает?
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Btrieve и clarion

Сообщение morkovin »

finsoftrz писал(а): 26 Сентябрь 2019, 9:49 Краткое наименование только в ключе.
Краткое наименование ещё придумать надо - уникальное и всем понятное. :(
WBR, morkovin
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Btrieve и clarion

Сообщение Игорь Столяров »

finsoftrz писал(а): 26 Сентябрь 2019, 10:54От чего не помогает?
От некорректного позицирования засветки на списке при его открытии в режиме выбора записи по ключу с неполным наименованием. :)
А отчёты … Отчёт вообще можно сортировать-группировать через VIEW по любым полям, и это работает шустро.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Btrieve и clarion

Сообщение finsoftrz »

Игорь, еще раз. Делаем в ключе второе поле по уникальному идентификатору записи. И все работает.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Btrieve и clarion

Сообщение finsoftrz »

morkovin писал(а): 26 Сентябрь 2019, 10:57
finsoftrz писал(а): 26 Сентябрь 2019, 9:49 Краткое наименование только в ключе.
Краткое наименование ещё придумать надо - уникальное и всем понятное. :(
Ничего не надо придумывать. Краткое для ключа - это первые символы полного. Можно даже не хранить, а наложить через over.

Про уникальность? Можно еще дофильтровывать. Затраты ресурсов минимальны. Если автоматом, то шаблоном прописать в процедурах модификации данных. Но, вообще говоря, задачка уникальности наименований не очень критичная. Пользователь может всегда написать немного не так в наименовании. Полное совпадение мало вероятно.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Btrieve и clarion

Сообщение Игорь Столяров »

finsoftrz писал(а): 26 Сентябрь 2019, 11:01Делаем в ключе второе поле по уникальному идентификатору записи. И все работает.
Да, я понял … Получается составной ключ из фрагмента наименования и ID записи. И он уникален. По идее - должно работать. :)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Btrieve и clarion

Сообщение kreator »

У вас классный междусобойчик! Как сделать,чтобы "Иванов Иван Иванович" (поле 1000 символов) был уникален.
We are hard at work… for you. :)
Amike34
Бывалый
Сообщения: 51
Зарегистрирован: 03 Август 2005, 19:06
Откуда: г. Чебоксары

Btrieve и clarion

Сообщение Amike34 »

Игорь Столяров писал(а): 26 Сентябрь 2019, 11:12finsoftrz писал(а): ↑26 Сентябрь 2019, 8:01
Делаем в ключе второе поле по уникальному идентификатору записи. И все работает.
Да, я понял … Получается составной ключ из фрагмента наименования и ID записи. И он уникален. По идее - должно работать.
Но все это не спасет от дублирования записи по полному (смысловому содержанию) наименованию, т.к. пользователь может вводить такие длинные наименования с некоторыми неточностями !

Может быть для такого случая можно решить так: при добавлении записи с длинным наименованием выводить на экране "еще" список уже существующих записей с (UPPER/Lower, убрать лишние пробелы и т.д.) совпадающими с 10 / 20 начальными символами => далее, если смысловое содержание наименования уже существующей записи совпадает со смысловым содержанием наименования добавляемой записи (в списке также можно для каждой записи указать - сколько символов совпали от начала наименования, 1-я запись в списке max совпадение символов),
то добавить запись нельзя,
иначе - вычислим ID, (наименование => UPPER/Lower, убрать лишние пробелы и т.д.) и добавляем запись.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Btrieve и clarion

Сообщение finsoftrz »

kreator писал(а): 26 Сентябрь 2019, 12:08У вас классный междусобойчик! Как сделать,чтобы "Иванов Иван Иванович" (поле 1000 символов) был уникален.
1. Задача не из жизни.
2. Делаем второе поле для ключа по первым или последним символам (где предполагается уникальность), затем в процедурах модификации данных отбираем все записи с ними по ключу (их уже не должно быть много) и проверяем перебором на полное совпадение.
3. Делаем второе поле для ключа, сохраняем в него хэш.

Может еще какие варианты кому в голову придут.
C6/C11, ШВС, tps/btrieve.
Ответить