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

Методы: Open, OpenRecord, OpenRecords

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

Методы: Open, OpenRecord, OpenRecords

Сообщение jurist23rus » Пт апр 14, 2017 8:33 pm

Метод формы OpenRecord имеет интересную особенность, если записи с указанным ID нет, то он её создаёт. Мне этого не нужно. Я хочу, чтобы при отсутствии записи с указанным ID выводилось сообщение. Как этого добиться? Как можно проверить наличие записи с определённым Id на форме?
Destiny is a very convenient word for those who never take decisions.

neitri
Мастер скриптов
Сообщения: 537
Зарегистрирован: Пн фев 13, 2017 5:42 pm

Re: Метод OpenRecord

Сообщение neitri » Пт апр 14, 2017 8:48 pm

GotoRecord по моему то что нужно.
Помогли Тебе. Помоги проекту.
Реквизиты помощи Вы можете найти в окне "О программе"

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

Re: Метод OpenRecord

Сообщение admin » Сб апр 15, 2017 4:19 am

После метода TdxForm.OpenRecord проверять наличие записей методом TdxForm.RecordCount.

jurist23rus
Эксперт
Сообщения: 2261
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Метод OpenRecord

Сообщение jurist23rus » Пн апр 17, 2017 9:27 am

admin писал(а):После метода TdxForm.OpenRecord проверять наличие записей методом TdxForm.RecordCount.

Почему Вы рекомендуете именно так, чем GotoRecord хуже?
Destiny is a very convenient word for those who never take decisions.

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

Re: Метод OpenRecord

Сообщение admin » Пн апр 17, 2017 11:29 am

Так ведь OpenRecord читает одну запись, а Open - все данные. Вам нужно просто запросить одну запись и методом RecordCount определить получена ли запись или нет.

jurist23rus
Эксперт
Сообщения: 2261
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Метод OpenRecord

Сообщение jurist23rus » Пн апр 17, 2017 12:09 pm

OpenRecord читает одну запись, а Open - все данные

С этим не поспоришь. Экономика должна быть экономной.

Вот только я не могу понять, как в этом случае будет работать RecordCount?
Метод OpenRecord нашёл и открыл запись, значит RecordCount = 1.
Метод OpenRecord не нашёл запись и создал её, значит RecordCount = 1.
И как мне отличить это найденная запись или новая?
Destiny is a very convenient word for those who never take decisions.

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

Re: Метод OpenRecord

Сообщение admin » Пн апр 17, 2017 1:18 pm

Метод OpenRecord не нашёл запись и создал её, значит RecordCount = 1.

С чего Вы взяли, что он ее создает?

jurist23rus
Эксперт
Сообщения: 2261
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Метод OpenRecord

Сообщение jurist23rus » Пн апр 17, 2017 2:26 pm

Зря я на OpenRecord бочку катил. Он тут действительно не причём. Запись создаёт окно редактирования записи.

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

Fm := CreateForm (Self.AsS['Текст1']);
Fm.OpenRecord (Self.AsI['Число2']);
if Fm.EditWindow.ShowModal = mrOk then Fm.Post;

Нажимаем Ok и запись создана, даже append не нужен. Если в поле Число2 ввёл цифру и угадал с ID существующей записи - откроет её, не угадал - создаст новую и откроет окно редактирования записи.
Вложения
OPENRECORD.ZIP
(45.96 КБ) 12 скачиваний
Destiny is a very convenient word for those who never take decisions.

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

Re: Метод OpenRecord

Сообщение admin » Пн апр 17, 2017 3:17 pm

На самом деле даже не окно редактирования, а действия пользователя, когда он начинает вводить что-нибудь в поле. В этот момент если запись не в редактировании, то она автоматически переводится в этот режим (или происходит автоматическая вставка записи). Так настроены компоненты доступа к данным.

jurist23rus
Эксперт
Сообщения: 2261
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Метод OpenRecord

Сообщение jurist23rus » Вс апр 23, 2017 6:29 pm

Не могу победить метод OpenRecords.

OpenRecords (Filter: String; SelectCondition: Boolean)
Что за параметр SelectCondition о котором в справке ничего не написано?
Destiny is a very convenient word for those who never take decisions.