Последняя версия DataExpress 3 beta от 11 декабря 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

Счетчик (тип данных)

Предложения по новому функционалу и развитию существующего.
jurist23rus
Эксперт
Сообщения: 2478
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Счетчик (тип данных)

Сообщение jurist23rus » Пн янв 15, 2018 3:57 pm

VdoVin писал(а):идите Вы сами в Эксель. ))))

Даже и не просите. Я от DX уже никуда не уйду. Она же моя, родненькая :)
Destiny is a very convenient word for those who never take decisions.

cordek
Опытный
Сообщения: 263
Зарегистрирован: Вс май 14, 2017 2:53 pm

Re: Счетчик (тип данных)

Сообщение cordek » Вт янв 23, 2018 11:08 am

VdoVin писал(а):
jurist23rus писал(а):
VdoVin писал(а):И да, а зачем мне видеть, что кто-то, что-то удалил? Как мне это поможет восстановить записи или в чём-то другом?

Хе-хе :) Вот это правильный вопрос.

Вот в этом и отличие базы данных от всего остального, типа Excel таблиц и прочего. В базе данных (уточню, в нормальной базе данных) ничего нельзя удалить просто так, не нарушив порядок учёта и не оставив следов своего нарушения. Не забывайте, что основная цель базы данных - это учёт и контроль. Вы хотите "номерки" в ущерб учёту и контролю? Не думаю...

А если и хотите, то может вам Excel будет удобней, не тратьте время на создание базы данных, в ней не будет смысла! :)

Нет уж, идите Вы сами в Эксель. )))) Мне базы милее. Изящность форм и красота линий, вот что отличает базы данных от захламлённого экрана Эксель ненужными кнопками и чёрточками. ;)
Можно было бы и в Акссес всё сделать, однако DE мне нравится больше. Красивее выглядит для пользователя и понятнее.

И да, как мне видится, безопасность базы данных уж точно не в счётчике кроется, а по меньшей мере в ограничении прав доступа к тем или иным функциям пользователя. Так что - Даёшь нумератор строчек!

А в чем проблема прописать в поле НОМЕР ЗАПИСИ выражение типа DBMAX('ИМЯ ФОРМЫ', 'Номер записи', '')+1 ? и персчитывать когда вам надо выровнять номерки. а в запросах можно нумерацию сделать в вычисляемом поле

Аватара пользователя
Amarous
Новичок
Сообщения: 19
Зарегистрирован: Ср фев 08, 2017 3:15 pm

Re: Счетчик (тип данных)

Сообщение Amarous » Ср янв 24, 2018 10:26 pm

jurist23rus писал(а):В том и смысл Счётчика, чтобы в базе ничего не исчезало бесследно. Если у Вас в базе есть Счётчик и вы видите что нумерация записей 1,2,3,7,8,9 это и есть отличная работа вашего Счётчика. Он показывает вам, что записи 4,5,6 кто-то удалил и их место уже никто не займёт. А почему не займёт - спросите вы. Потому что записи 4,5,6 были уникальными и заменить их невозможно. Не может быть двух уникальных записей.

А та логика работы, которую вы пытаетесь навязать Счётчику не имеет никакого смысла. Это будет не Счётчик, а расставитель номерков. Сегодня захотел поставил так, завтра эдак, что хочу то и делаю.


Я с вами полностью не согласен.
Во первых, есть функция RECID('Форма') - выводит айди строки. Именно этот параметр нельзя изменить, и как-то повлиять на него. Если в таблице было 20 строк, затем очистить таблицу, следующая строка будет пронумерована номером 21. И если уж следить за тем, чтобы никто ничего не удалил, то делать это с айди строки.
2. Если вы утверждаете обратное, то зачем тогда разработчик добавил возможность изменения номера счетчика. то-есть я спокойна могу ставить две записи под одним номером, это зачем? - берешь, меняешь порядковый номер местами и получается каша.
У меня есть таблица, в ней 2000 записей, я некоторые удалил. Тепер я не знаю сколько у меня записей. Добавляю Новую, не понято какой номер присваивается. Последний раз проверял, 3 строки с номером 1881, две с номером 1902 - в общем полный аврал. и зачем такое надо.
3. Вы забыли кто пользователи DE - это разработчики собственных баз, люди которые каждый день создают и удаляют целые таблицы с данными, запросы, группы строк. И вы думаете, что такие пользователи DE будут контролировать записи " как бы уникальным Счетчиком, который как бы привязан к строке"? им нужно просто пронумеровать записи, лол
4. Не надо ничего выдумывать, Счетчик это просто порядковый номер записи, лично мне надо видеть быстро - количество записей в таблице, а еще важнее, при добавлении новой записи, создавать правильный следующий номер. И при импорте так же это надо.
И вместо функции пересчета, надо чтоб номера менялись на лету, а-то еще парится о пересчете.
Лучше сделать переназначение айди, чтоб строки таблиц перепронумеровались начиная с единицы, а не с 21 номера.

Так же было бы круто, Если ты захотел у последней строки таблицы изменить счетчик, просто вводишь, скажем номер 2, и строка получает номер два, а остальные строки, меняют свой счетчик увеличиваясь на единицу.

Аватара пользователя
admin
Разработчик
Сообщения: 3957
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская

Re: Счетчик (тип данных)

Сообщение admin » Ср янв 24, 2018 10:40 pm

Счетчик не для нумерации строк, он может использоваться для идентификации записи. Нумерация строк это функция табличного компонента. Счетчик гарантировано уникальный (если стоит свойство "Только чтение"). Поле счетчика индексированное, а числовое поле нет. Т. е. поиск по счетчику работает быстрее.

Аватара пользователя
Amarous
Новичок
Сообщения: 19
Зарегистрирован: Ср фев 08, 2017 3:15 pm

Re: Счетчик (тип данных)

Сообщение Amarous » Чт янв 25, 2018 1:18 am

Спасибо cordek'у, решение такое

Удаляем старый счетчик

Создаем числовое поле с функцией:

Код: Выделить всё

IIF([№]>0, 0, DBMAX('Имя формы', '№', '')+1)

Указываем значение по умолчанию:

Код: Выделить всё

DBMAX('Имя формы', '№', '')+1

Запрещаем редактирование

В результате получаем счетчик с уникальным номером.
При создании новой записи присваивается правильный - следующий номер.
При удалении для пере нумерации, два раза делаем Сервис>Пересчитать.


и не забываем мучиться из-за медленного поиска :lol:

KoalaBear
Интересующийся
Сообщения: 171
Зарегистрирован: Сб сен 02, 2017 5:05 pm

Re: Счетчик (тип данных)

Сообщение KoalaBear » Чт янв 25, 2018 7:21 am

Amarous писал(а):и не забываем мучиться из-за медленного поиска :lol:

А смеётесь вы зря. Я, например, в одной из своих таблиц (18k+) ощутил огромную разницу в скорости поиска по полю счётчика по сравнению с поиском по числовому полю. И (не по теме) практически на всех формах у меня стоит счетчик, которому принудительно скриптом присваивается ID записи при первом сохранении.

cordek
Опытный
Сообщения: 263
Зарегистрирован: Вс май 14, 2017 2:53 pm

Re: Счетчик (тип данных)

Сообщение cordek » Пт янв 26, 2018 5:28 am

Amarous писал(а):Спасибо cordek'у, решение такое

Удаляем старый счетчик

Создаем числовое поле с функцией:

Код: Выделить всё

IIF([№]>0, 0, DBMAX('Имя формы', '№', '')+1)

Указываем значение по умолчанию:

Код: Выделить всё

DBMAX('Имя формы', '№', '')+1

Запрещаем редактирование

В результате получаем счетчик с уникальным номером.
При создании новой записи присваивается правильный - следующий номер.
При удалении для пере нумерации, два раза делаем Сервис>Пересчитать.


и не забываем мучиться из-за медленного поиска :lol:

Присвоение номера лучше поставить в проверку значения через SetField, потому что при копировании записей значение по умолчанию не вставляется.

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3361
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Re: Счетчик (тип данных)

Сообщение YurAnt » Пт янв 26, 2018 9:40 am

Главное, не стоит забывать, что при сетевой работе этот способ оставляет возможность нарушения уникальности, т.к. не имеет блокировки на уровне базы.

cordek
Опытный
Сообщения: 263
Зарегистрирован: Вс май 14, 2017 2:53 pm

Re: Счетчик (тип данных)

Сообщение cordek » Пт янв 26, 2018 7:21 pm

А для подсчёта строк в таблицах есть Отчёты


Вернуться в «Предложения по развитию проекта.»