1 (edited by alamsho 2017-10-30 16:38:40)

Topic: Поиск

Имеем следующее.
[BaseTwo]
isdictionary=0
^id_Base=Base
>id_mayub=mayub

[mayub]
isdictionary=0
_invalid=TEXT

[Base]
isdictionary=0
_name=TEXT
_surname=TEXT

В таблице mayub имеется текстовое поле invalid со значениями 'Гурухи I', 'Гурухи II' и 'Гурухи III'. На русском языке это Группа I, Группа II и Группа III.
Суть программы в том что каждый пациент проходит обследование и получает инвалидность (первая, вторая или третья группа инвалидности). Также через некоторое время он опять проходит обследование и получает уже другую группу инвалидности или остается на той же группе. Например была первая, далее стала вторая.
Итак, на форме Form1 имеется Edit11, Edit22, ComboBox9 и кнопка Search1.
Edit11 - Tablename (Base), Fieldname (name)
Edit22 - Tablename (Base), Fieldname (surname)
ComboBox9 - Tablename (BaseTwo.id_mayub), Fieldname (invalid)

Search1 производит поиск таблицы Base по полям Edit11, Edit22, ComboBox9 и выводит результаты в TableGrid1.
Объясню проблему на примере.
Иван Иванов  Группа I   - первое обследование
                     Группа II  -  второе обследование
Петр Петров   Группа I  -  первое обследование
                     Группа III  -  второе обследование
                     Группа II  -  третье обследование

При поиске на таблице выводится:
1. Иван Иванов
2. Петр Петров
Если выбрать в ComboBox9 Группа I и производить поиск то в таблицу выводится:
1. Иван Иванов
2. Петр Петров
А надо чтобы поиск производился по последнему обследованию, т.е. на моем примере ничего не должно выводится.
Если выбрать Группа II то должен быть:
1. Иван Иванов
2. Петр Петров
У обоих по последнему обследованию группа 2.
Надеюсь смог объяснить.
Помогите с реализацией.
Может быть SQL запросом? Я не очень силен в этом. Подтолкните в нужную сторону.

Re: Поиск

Пожалуйста приложите ваш проект (zip файл без exe и dll), без проекта довольно трудно все это представить в голове.

Dmitry.

Re: Поиск

DriveSoft wrote:

Пожалуйста приложите ваш проект (zip файл без exe и dll), без проекта довольно трудно все это представить в голове.

Проект прилагается.

Post's attachments

Attachment icon КАТС.zip 442.02 kb, 393 downloads since 2017-10-30 

Re: Поиск

Такой поиск можно сделать только с помощью SQL запроса, используйте кнопку с действием "SQL запрос"
также на форме расположите ComboBox1, где можно выбрать группу

SELECT
    Base.surname,
    (SELECT mb.invalid FROM BaseTwo BT 
     LEFT OUTER JOIN mayub mb ON mb.id=BT.id_mayub 
     WHERE BT.id_Base = Base.id 
     ORDER BY BT.incomedate DESC LIMIT 1
     ) 
     
FROM Base   

WHERE    
    CASE WHEN {ComboBox1} <> -1 THEN 
     (SELECT mb.id FROM BaseTwo BT 
     LEFT OUTER JOIN mayub mb ON mb.id=BT.id_mayub 
     WHERE BT.id_Base = Base.id 
     ORDER BY BT.incomedate DESC LIMIT 1
     ) = {ComboBox1} else 1=1 END 
Dmitry.

Re: Поиск

спасибо работает, а почему вы сортировали по BT.incomedate, мне надо по BT.id. Хотя и так работает. Я изменил на BT.id на всякий случай если вдруг пользователь ошибиться с датой.

Re: Поиск

alamsho wrote:

спасибо работает, а почему вы сортировали по BT.incomedate, мне надо по BT.id. Хотя и так работает. Я изменил на BT.id на всякий случай если вдруг пользователь ошибиться с датой.

Можно и по id

Dmitry.