Страница 1 из 1

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

Добавлено: Вт июл 31, 2018 5:36 pm
Prepod
Спасибо создателю за программу!

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

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

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

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

Добавлено: Вт июл 31, 2018 7:15 pm
Гocть
Попробую наглядно показать.
Имеется список записей:

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

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?

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

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

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

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

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

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

Добавлено: Вт июл 31, 2018 10:25 pm
Гocть
Блиин! Зачем вам RECNO? Ведь наглядно показано, что это указатель порядка видимых строк а не "счётчик" или "нумератор документов". Вы щёлкнули мышью по какой нибудь колонке и строки перестроились в новый порядок. Соответственно был для какой то определенной записи RECNO 5м, стал после сортировки 25й.

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

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

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

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

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

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

Добавлено: Чт сен 27, 2018 5:30 pm
Гocть
А если recno в "значение по умолчанию" попробовать?

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

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

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

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

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

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

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