| 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; |  
  |  
  
Просто супер!!! Все работает. 
Огромное человекческое спасибо  
  
ЗЫ: Да, в дельфях проблем вообще не было...  | 
  | 
| Георгий | 
| Отправлено: 25.09.2003, 21:43 | 
 
 
 | 
  
Почетный железнодорожник 
 
Группа: Модератор 
Сообщений: 874 
  
  
 | 
 Эх... Конечно все заработало... Иначе и быть не могло... Но в следующий раз учти, что си — это в первую очередь работа с памятью, а так как ты с паскаля пересел, то лучше используй чистый C++ т.е. классы, классы и ещё раз классы, а указатели пока не трогай.  | 
  |