Последняя версия DataExpress 3 beta от 15 июня 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Примеры выражений и работы функций

Все вопросы, связанные с работой в дизайнере.
Prepod
Интересующийся
Сообщения: 86
Зарегистрирован: Чт июн 28, 2018 12:07 am

Примеры выражений и работы функций

Сообщение Prepod » Вт июл 31, 2018 5:36 pm

Спасибо создателю за программу!

Хочется понять как работают функции.
Вот например что делает функция RECNO ?
написано: Определяет номер текущей записи формы или запроса.

Это означает что если у меня есть форма "Форма1" с текстовым полем и я ставлю значение по умолчанию: RECNO('Форма 1'), то что пользователь увидит в поле при попытке записи? Я так понимаю что пользователь должен увидить номер текущей(той которую он создает) записи, но это не так.

Или что понимается под "текущей"?

Аватара пользователя
Гocть
Эксперт
Сообщения: 1582
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 4 раза

Re: Примеры выражений и работы функций

Сообщение Гocть » Вт июл 31, 2018 7:15 pm

Попробую наглядно показать.
Имеется список записей:

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

RECID  Счетчик  RECNO
1        1        1
2        2        2
5        3        3
6        4        4
7        5        5
9        8        6
10       9        7

RECID Почему выпали номера 3,4,8?
Ответ: мы открыли форму. Она отлистала себе следующий уникальный номер для ID из базы. От сохранения отказались (или же сохранили, но затем удалили запись) и RECID "сгорел".

Счетчик Почему выпали номера 6,7,10? Ответ: записи были удалены пользователем.
Возражение: Хорошо, почему тогда следующий номер "счетчика" не 10 а 11? Ведь 10й "освободился".
Ответ: По кочану. "Счетчик" как и RECID генерируется на уровне базы. Он был. Вы его удалили но предыдущее значение счетчика так и осталось 10, чтобы выдать следующей записи номер 11. (Так надо. Чтобы вы не дурили руководителя, выписав вчера несколько штук "левых" десятых накладных и теперь типа "с нумерацией все в порядке")

Попробуем отсортировать таблицу по убыванию RECID:

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

RECID   Счетчик   RECNO
10       10       1
9        9        2
7        5        3
6        4        4
5        3        5
2        2        6
1        1        7


Остались еще вопросы по RECNO?
Последний раз редактировалось Гocть Вт июл 31, 2018 7:15 pm, всего редактировалось 4 раза.
Причина: Ссылка+якорь на конкретный пост без указания номера форума (например http://forum.mydataexpress.ru/viewtopic.php?p=20403#p20403) будет работать при перемещении темы в любой подфорум.
Фрилансер. Разработка на заказ. Консультирование.

Prepod
Интересующийся
Сообщения: 86
Зарегистрирован: Чт июн 28, 2018 12:07 am

Re: Примеры выражений и работы функций

Сообщение Prepod » Вт июл 31, 2018 7:50 pm

Большое спасибо за такой развернутый ответ.
Я создал новую базу. Создал форму "Форма1". Добавил поле со значением по умолчанию RECNO('Форма1'').

Пользователь создает запись и поле всегда содержит ноль.

Вопрос заключается в том как правильно использовать RECNO.

В примере просто написано: RECNO принимает текст-имя формы. У меня он принимает имя формы, но почему он ноль возвращает всегда?
при этом RECID работает как надо и не вызывает вопросов.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1582
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 4 раза

Re: Примеры выражений и работы функций

Сообщение Гocть » Вт июл 31, 2018 10:25 pm

Блиин! Зачем вам RECNO? Ведь наглядно показано, что это указатель порядка видимых строк а не "счётчик" или "нумератор документов". Вы щёлкнули мышью по какой нибудь колонке и строки перестроились в новый порядок. Соответственно был для какой то определенной записи RECNO 5м, стал после сортировки 25й.
Фрилансер. Разработка на заказ. Консультирование.

kok80
Опытный
Сообщения: 257
Зарегистрирован: Пн июл 02, 2018 9:45 pm
Благодарил (а): 1 раз
Поблагодарили: 6 раз

Re: Примеры выражений и работы функций

Сообщение kok80 » Чт сен 27, 2018 5:18 pm

На форме таблица, в таблице счетчик - нумерация сквозная, те в первой записи формы в таблице счетчик 1,2,3, во второй записи формы в таблице счетчик 4,5,6.
Как получить правильную нумерацию ? Самому что ли высчитывать, что-то вроде

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

OnEnter: self['num']:=self.recordcount;

Мне все равно какой номер показывается рядом с записью в таблице, лишь бы он начинался с 1 и увеличивался на 1

Аватара пользователя
Гocть
Эксперт
Сообщения: 1582
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 4 раза

Re: Примеры выражений и работы функций

Сообщение Гocть » Чт сен 27, 2018 5:30 pm

А если recno в "значение по умолчанию" попробовать?
Фрилансер. Разработка на заказ. Консультирование.

kok80
Опытный
Сообщения: 257
Зарегистрирован: Пн июл 02, 2018 9:45 pm
Благодарил (а): 1 раз
Поблагодарили: 6 раз

Re: Примеры выражений и работы функций

Сообщение kok80 » Чт сен 27, 2018 8:20 pm

результат - пустое поле. Вопрос к admin'у: как по логике программы правильно организовать счетчик в таблице, чтобы в каждой записи формы в таблице он начинался с 1 ?

Аватара пользователя
Гocть
Эксперт
Сообщения: 1582
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 4 раза

Re: Примеры выражений и работы функций

Сообщение Гocть » Чт сен 27, 2018 8:40 pm

А, да, что то я затупил.
Добавьте в форму числовое поле ("нумератор") с выражением max('таблица','счетчик')
В таблицу добавьте числовое поле ("счетчик") и в его значении по умолчанию указывайте [!нумератор]+1.
Фрилансер. Разработка на заказ. Консультирование.

cordek
Опытный
Сообщения: 327
Зарегистрирован: Вс май 14, 2017 2:53 pm
Благодарил (а): 11 раз
Поблагодарили: 1 раз

Re: Примеры выражений и работы функций

Сообщение cordek » Пт сен 28, 2018 5:46 am

Гocть писал(а):А, да, что то я затупил.
Добавьте в форму числовое поле ("нумератор") с выражением max('таблица','счетчик')
В таблицу добавьте числовое поле ("счетчик") и в его значении по умолчанию указывайте [!нумератор]+1.

Забывается, потому что два года назад уже это обжевали