Поиск "таблица в таблице"

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 258
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 19 раз

Поиск "таблица в таблице"

Сообщение SergioRaguzini »

Привет Всем!

Ситуация: в экранной форме редактирования записи таблицы пациентов (PAT:) необходимо организовать поиск пациентов в этой же таблице.
Например, в мед.учреждении заполняется анкета на сопровождающего к уже оформленному (госпитализированному) пациенту.
Т.е. при добавлении(редакт-и) новой записи сопровождающего, указаывается некий признак "сопровождающий", а далее из этой(!) же таблицы выбирается лицо который был раньше оформлен и которого сопровождают, например "мать/ребенок"
Таблица имеет уник. autonumber-ключ по id-записи
Т.к. при таком поиске сдвигается указатель записи, то решаю вопрос с предварительным сохранением значения редактируемой записи (save::PAT:RECORD = PAT:RECORD) и указателя (saveNumber:Patients) в переменных перед операцией поиска, используя при этом POINTER, POSITION или просто уникальный id-записи и восстанавливая потом после поиска истинные значения и указатель, например:

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

         GET(Patients, saveNumber:Patients)        ! восстановить указатель
               PAT:RECORD = save::PAT:RECORD         ! и значения записи
в DCT, в свойствах таблицы пациентов активно "Open in Current Thread"

Если создавать перед вызовом пр-ры редактирования очередь (или в in-memory) уже оформленных пациентов в которой потом осуществлять поиск , то, если таких записей становится значительное кол-во, то это уже заметно подтормаживает вызов пр-ры редактирования

Вроде бы вышеприведенный "костыль" работает, однако, хотел бы узнать, может есть что-то более оптимальное, или что в такой ситуации лучше (POINTER, POSITION и т.д.)?

Спасибо
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 478
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 126 раз
Поблагодарили: 9 раз

Поиск "таблица в таблице"

Сообщение ingasoftplus »

alias?
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 258
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 19 раз

Поиск "таблица в таблице"

Сообщение SergioRaguzini »

ingasoftplus писал(а): 22 Август 2025, 9:53alias?
Спасибо за отклик

но ведь Alias-таблицу тоже ведь нужно заполнить данными, а вот тут потеря времени, если только не отслеживать ее синхронно?
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 478
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 126 раз
Поблагодарили: 9 раз

Поиск "таблица в таблице"

Сообщение ingasoftplus »

alias это просто зеркало существующей таблицы, но с другим именем и буфером. не понятно про Заполнить таблицу... Работайте с alias просто как с другой таблицей...
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2644
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 28 раз

Поиск "таблица в таблице"

Сообщение Губин Игорь »

SergioRaguzini писал(а): 22 Август 2025, 10:00 но ведь Alias-таблицу тоже ведь нужно заполнить данными, а вот тут потеря времени, если только не отслеживать ее синхронно?
Если посмотрите, то Alias в словаре в самой программе порождает ещё одну независимую таблицу но с тем же именем файла. Т.е., с таблицами можно работать одновременно, "не портя" позиционирование, но данные будут общими.

У меня для работы со сложными структурами данных, порой, доходит до десятка алиасов на файл
Это я только кажусь дураком! На самом деле я полный идиот!
Ответить