C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Фильтр в БД
creater
  Отправлено: 25.09.2003, 06:38


Станционный диспетчер

Группа: Участник
Сообщений: 120



Народ подскажите насчет фильтра?!

Есть БД, которую при выборе определенного пункта меню нужно отображать в соответствии с фильтром.

Фильтр срабатывает только один раз и в StaticText1 отображается выбранный пункт меню (вместо того чтобы его отображать вместе со словом Дополнение), а после повторного выбора того же пункта отображается "Дополнение | Выбранный пункт меню,
(именно с одной кавычкой) и фильтр уже не работает.

Есть функция которая вызывается при выборе пункта меню.
Функции передается параметр присвоенный определенной записи БД.

char *metka;
AnsiString m_sql;

void __fastcall update_my_tablya(char *met)
{
metka = strcat(met, "\"");
m_sql = strcat("S_MNU=\"", metka);
Form1->DBISAMTable1->Filtered=false;
Form1->DBISAMTable1->Filter = m_sql;
Form1->DBISAMTable1->Filtered=true;
}

void __fastcall TForm1::N11Click(TObject *Sender)
{
update_my_tablya("101");
Form1->StaticText1->Caption=" Дополнение |"+Form1->N11->Caption;
}

S_MNU — поле БД

Подскажите в чем пожет быть проблема?

Конечно есть большое предположение относительно типа переменных, но что-то ничего не получается.

Заранее большое спасибо.
Георгий
Отправлено: 25.09.2003, 08:53


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



возможно имеет место не корректная работа с памятью.
мне не нравится:
QUOTE
metka = strcat(met, "\"");
m_sql = strcat("S_MNU=\"", metka);

попробуй заменить на:
CODE
AnsiString metka;
metka=AnsiString(met)+"\"";
m_sql=AnsiString("S_MNU=\"")+metka;
creater
Отправлено: 25.09.2003, 11:37


Станционный диспетчер

Группа: Участник
Сообщений: 120



QUOTE (Георгий @ 25/09/2003, 09:55)
возможно имеет место не корректная работа с памятью.
мне не нравится:
QUOTE
metka = strcat(met, "\"");
m_sql = strcat("S_MNU=\"", metka);

попробуй заменить на:
CODE
AnsiString metka;
metka=AnsiString(met)+"\"";
m_sql=AnsiString("S_MNU=\"")+metka;

Просто супер!!! Все работает.
Огромное человекческое спасибо biggrin.gif

ЗЫ: Да, в дельфях проблем вообще не было...
Георгий
Отправлено: 25.09.2003, 21:43


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



Эх... Конечно все заработало... Иначе и быть не могло... Но в следующий раз учти, что си — это в первую очередь работа с памятью, а так как ты с паскаля пересел, то лучше используй чистый C++ т.е. классы, классы и ещё раз классы, а указатели пока не трогай.

Вернуться в Работа с базами данных в C++Builder