Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите дальше организовать поиск / 6 сообщений из 6, страница 1 из 1
20.09.2006, 16:56
    #34000639
seeerg_23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите дальше организовать поиск
Есть несколько Edit-ов. В них вводятся данные для поиска. Ввводятся в любом порядке: в несколько подряд, в какой-то 1, либо во все сразу, либо через 1 - как угодно! Я думаю проблема в расположении Where: если where поставить внутри if{poisk = poisk + " where (fio='" + TextBox1.Text + "')"; }, то поиск будет работать толь по 1 Эдиту, а нужно (я думаю) до if{}.
char poisk;
//poisk="where (fio='" + Edit1.Text + "')";-так тоже толь 1 Эдит работает в поиске.
//нужно что-то типа этого poisk="where(" ")"; или ещё как-то....
posk = "";
//если 1 не пуст
if (Edit1.Text != "")
{
poisk = poisk + " and (fio='" + Edit1.Text + "')";
}
//если 2 не пуст
if (Edit2.Text != "")
{
poisk = poisk + " and (adres='" + Edit2.Text + "')";
}
Подскажите, плз, как правильно организовать поиск? что добавить?
...
Рейтинг: 0 / 0
20.09.2006, 17:16
    #34000741
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите дальше организовать поиск
Например, заведи признак пустоты фильтра.
Кусок из заполнения фильтра таблицы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    if( CBSelected->Checked )
    {
        Filter="IsSelected";
        FilterNotEmpty=true;
    }

    if( CBHideArrItems->Checked )
    {
        if( FilterNotEmpty )
        {
            Filter+=" AND NOT IsArrayElement";
        }
        else
        {
            Filter="NOT IsArrayElement";
            FilterNotEmpty=true;
        }
    }

// .....

    Table->Filter=Filter;
    Table->Filtered=FilterNotEmpty;
Думаю, идея понятна...
...
Рейтинг: 0 / 0
20.09.2006, 17:58
    #34000904
seeerg_23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите дальше организовать поиск
не совсем. Конкретно к моему примеру, что сделать? Совсем запутался.
...
Рейтинг: 0 / 0
20.09.2006, 18:13
    #34000957
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите дальше организовать поиск
seeerg_23не совсем. Конкретно к моему примеру, что сделать? Совсем запутался.
Для первого Edita'a можно просто:

Код: plaintext
1.
2.
3.
4.
5.
if( Edit1->Text != "" )
{
    Filter = "условие1" ;
    FilterNotEmpty = true;
}

для остальных - дополнительная проверка пустоты фильтра
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    if( Editn->Text != "" )
    {
        if( FilterNotEmpty )
        {
            Filter += " AND условие2";
        }
        else
        {
             Filter = "условие2" ;
             FilterNotEmpty = true;
        }
    }

И лучше давать осмысленные имена контролам, надо думать о тех, кому,
возможно, придётся сопровождать код, да и вообще нечего бардак в исходниках устраивать ))
...
Рейтинг: 0 / 0
20.09.2006, 18:29
    #34001027
seeerg_23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите дальше организовать поиск
а Filter что за параметр? я так не писал, поэтому, если можно, расскажите поподробнее, где? что? и как? Плз!!!
...
Рейтинг: 0 / 0
20.09.2006, 18:33
    #34001035
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите дальше организовать поиск
seeerg_23а Filter что за параметр? я так не писал, поэтому, если можно, расскажите поподробнее, где? что? и как? Плз!!!
Ну, это аналог вашего poisk. Обычный AnsiString, который потом присваивается свойству Filter таблицы.
Это просто более подходящее имя для такой переменной.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите дальше организовать поиск / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]