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

БД учета и размещения оборудования

Раздел для обсуждения и помощи в процессе разработки баз данных пользователей.
makcim737
Интересующийся
Сообщения: 118
Зарегистрирован: Пн ноя 27, 2017 12:39 pm
Благодарил (а): 5 раз

БД учета и размещения оборудования

Сообщение makcim737 » Вс окт 13, 2019 3:35 pm

Вопрос, записи таблицы если я их не сохраняю, должны ли оставаться созданными?
Если отменяю остается созданная запись, но при это игнорируется обязательное поле... по идеи ошибка должна вылетать что нельзя сохранить пока не заполнится поле, но он все равно сохраняет при отмене записи
Гифка во вложении
Вложения
Tabl.gif
Tabl.gif (682.39 КБ) 717 просмотров

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

БД учета и размещения оборудования

Сообщение admin » Вс окт 13, 2019 5:22 pm

Возможно скрипт какой-то глючит.

makcim737
Интересующийся
Сообщения: 118
Зарегистрирован: Пн ноя 27, 2017 12:39 pm
Благодарил (а): 5 раз

БД учета и размещения оборудования

Сообщение makcim737 » Вс окт 13, 2019 5:42 pm

admin писал(а):Возможно скрипт какой-то глючит.


нашел, из-за этой строчки в выражении объекта таблицы глюк:

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

DBGETID('Стойки_new', '[!Юнит]=zeros(1+cnum(MAX("Стойка","Юнит2")),2)&[!Стойка]=[!Стойка]')


В частности когда использую функцию

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

MAX("Стойка","Юнит2")
в любом выражении таблицы, начинается глюк

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

БД учета и размещения оборудования

Сообщение admin » Вс окт 13, 2019 6:59 pm

Ну да. Функция MAX применяется для текущей формы. Т. к. ей приходится проходить по всем записям, она сохраняет текущую запись, вычисляет результат, а потом снова переводит ее в редактирование. Так устроено, что без сохранения не обойтись.

makcim737
Интересующийся
Сообщения: 118
Зарегистрирован: Пн ноя 27, 2017 12:39 pm
Благодарил (а): 5 раз

БД учета и размещения оборудования

Сообщение makcim737 » Вс окт 13, 2019 8:06 pm

admin писал(а):Ну да. Функция MAX применяется для текущей формы. Т. к. ей приходится проходить по всем записям, она сохраняет текущую запись, вычисляет результат, а потом снова переводит ее в редактирование. Так устроено, что без сохранения не обойтись.

Понял, спасибо.
Сделал через dbmax, вроде все ок теперь)

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

БД учета и размещения оборудования

Сообщение admin » Вс окт 13, 2019 8:37 pm

DB-функции по таблице использовать нежелательно, результат может быть неправильным.

makcim737
Интересующийся
Сообщения: 118
Зарегистрирован: Пн ноя 27, 2017 12:39 pm
Благодарил (а): 5 раз

БД учета и размещения оборудования

Сообщение makcim737 » Вс окт 13, 2019 9:16 pm

admin писал(а):DB-функции по таблице использовать нежелательно, результат может быть неправильным.

Тогда остается вариант только скриптом высчитывать максимальное значение поля в таблице я так понимаю...
а пока вроде без проблем db считает...

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

БД учета и размещения оборудования

Сообщение admin » Вс окт 13, 2019 10:31 pm

Можно в родительской форме добавить надпись и прописать выражение, запоминающее результат в переменную. Затем использовать эту переменную в выражении поля таблицы. Выражение в надписи:

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

setvar('a', MAX(...))
Выражение в поле:

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

... getvar('a') ...

makcim737
Интересующийся
Сообщения: 118
Зарегистрирован: Пн ноя 27, 2017 12:39 pm
Благодарил (а): 5 раз

БД учета и размещения оборудования

Сообщение makcim737 » Пн ноя 18, 2019 9:20 pm

Не подскажите, как можно зациклить одну и туже функцию определенное количество раз?
Например в зависимости от числа записей в таблице, что бы столько раз и выполнялась данная функция

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

EDITINGREC('Комплектующая',MAX('Форма 1704', 'Текст77190'),'Оборудование',[Объект77189])


Хочу что бы по максимальному ИД записи функция делала запись в другой форме, удаляла это максимальное значение из таблицы и заново по кругу пока не закончатся значения из таблицы... Или было бы проще если бы функция EDITINGREC могла сразу записать изменения во все записи по перечисленным ИД из таблицы...

jurist23rus
Эксперт
Сообщения: 2684
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп
Благодарил (а): 2 раза
Поблагодарили: 18 раз

БД учета и размещения оборудования

Сообщение jurist23rus » Вт ноя 19, 2019 6:40 am

Функция так не умеет. Это работа для скрипта.
Destiny is a very convenient word for those who never take decisions.


Вернуться в «Помогите собрать базу!»