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

 
Не понятная ошибка с фильтрами, Paradox/Delphi
full_lamer
Отправлено: 02.06.2005, 10:35


Машинист паровоза

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



доброго времени суток!
есть такая проблема: когда нижеприведенная строка начинает исполняться дельфи сообщает об ошибке: "Invalid filter expression character: '.'".
CODE

Data_mod.Spisok_nakladTable.Filter:='Data_nakladn >= ' + MaskEdit1.Text + ' and Data_nakladn <= ' + MaskEdit2.Text +  ' and Kod_otd= ' + IntToStr(Number_otdela);

подскажите где ошибка или я что то не понимаю?
спасибо.
Semen
Отправлено: 02.06.2005, 10:47


Ученик-кочегар

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



Возьми дату в апострофы — "'+Data+'"
Data_mod.Spisok_nakladTable.Filter:='Data_nakladn>=" ' + MaskEdit1.Text + '" and Data_nakladn <=" ' + MaskEdit2.Text + '" and Kod_otd= ' + IntToStr(Number_otdela);
Guest
Отправлено: 02.06.2005, 10:48


Не зарегистрирован







А можно увидеть строку после выполнения конкатенаций (так же как её видит фильтр)?
Semen
Отправлено: 02.06.2005, 10:49


Ученик-кочегар

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



и проверь формат датаы т.к у тебя MaskEdit1.Text
** full_lamer
Отправлено: 02.06.2005, 10:58


Не зарегистрирован







вот так должен по идеи видит ее фильтр:
CODE
'Data_nakladn >= 19.05.2005 and Data_nakladn <= 02.06.2005 and Kod_otd= 1'

когда я ему в инспекторе предлагаю он его съедает, а в коде плюется, и кричит ошибка...

Я тож сначала думал форматы даты, но на это он тоже плюется:
CODE
Data_mod.Spisok_nakladTable.Filter := 'Data_nakladn >= ' + DateToStr(Date());
Admin
Отправлено: 02.06.2005, 11:01


Владимир

Группа: Администратор
Сообщений: 1190



Попробуйте у строковых значений поставить " (двойные кавычки)
что-то типа:

CODE
Data_mod.Spisok_nakladTable.Filter:='Data_nakladn >= "' + MaskEdit1.Text + '" and Data_nakladn <= "' + MaskEdit2.Text + '" and Kod_otd= "' + IntToStr(Number_otdela)+ '"';


Отредактировано Admin — 02/06/2005, 11:02
** full_lamer
Отправлено: 02.06.2005, 11:06


Не зарегистрирован







2Admin
так тоже делал, но при этом он ругается уже на кавычки...

а ни кто не помнит ASCII код апострофа?
Guest
Отправлено: 02.06.2005, 11:12


Не зарегистрирован







вот так должен по идеи видит ее фильтр: ......
А если без идеи

ShowMessage ("Data_nakladn>= " + MaskEdit1.Text + " and Data_nakladn <= " + MaskEdit2.Text + " and Kod_otd= " + IntToStr(Number_otdela));

А типы полей (как заметил Admin) правильные? Date и Num?
** avtoritet
Отправлено: 02.06.2005, 11:16


Не зарегистрирован







Исправь:
Data_mod.Spisok_nakladTable.Filter := 'Data_nakladn>= ' + DateToStr(Date());
На:
Data_mod.Spisok_nakladTable.Filter := "Data_nakladn>= "+"'"+Date()+"'";
Исходя из своего опыта — это должно работать! Удачи!




Guest
Отправлено: 02.06.2005, 11:20


Не зарегистрирован







QUOTE

а ни кто не помнит ASCII код апострофа?

39 0x27
Guest
Отправлено: 02.06.2005, 11:20


Не зарегистрирован







или 96 0x60
** avtoritet
Отправлено: 02.06.2005, 12:32


Не зарегистрирован







to full_lamer:
Ты хоть расскажи нам, как там у тебЯ дела обстоят по этому вопросу!
Нам уж тоже стало интересно!
AVC
Отправлено: 02.06.2005, 12:57


Ветеран

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



А еще лучше — прицепите к сообщению свой файл парадоксовский (или несколько несекретных строк)
** full_lamer
Отправлено: 02.06.2005, 14:04


Не зарегистрирован







погодите пару минут... я отъезжал пообедать...
Guest
Отправлено: 02.06.2005, 14:13


Не зарегистрирован







2avtoritet
это Дельфи не билдер...

2All
короче, дело было в следующем, найдите 4 отличия от предыдущего кода:
CODE
Data_mod.Spisok_nakladTable.Filter:='Data_nakladn >=' + chr (39) + MaskEdit1.Text + chr (39) + ' and Data_nakladn <= ' + chr (39) +  MaskEdit2.Text + chr (39) + ' and Kod_otd = ' + IntToStr(Number_otdela);


вообщем я так и подозревал...
все спасибо.

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