Перейти к содержанию
Fire Monkey от А до Я
  • 0

Ошибка QuotedStr


ulansaran

Вопрос

Здравствуйте! Решил обратиться к вам за советом. Суть такая. 
У меня есть разработанное приложение, которое я в последний раз дорабатывал в Rad Studio 8, под android. В общем после я с этим приложением работал два года. Было работоспособное проверенное приложение.
Недавно установил Rad Studio 10 Tokyo 10.2 и в моем приложении возникли проблемы с фильтрами.
Именно в данном коде, как я понял, на QuotedStr возникает ошибка "не соответствие типов в выражении":

s:=Edit5.Text; 
Child.Filtered:=false;
Child.Filter:='CHILDFAM='+ QuotedStr(s);
Child.Filtered:=True;

Раньше такого не было, всё работало. Тип переменной s:string, в базе данных CHILDFAM:text, ничего не менял!
В чем может быть подвох? Как исправить ошибку?

ошибка.png

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
20 минут назад, Barbanel сказал:

Поясните, что такое Child и что за свойство Filter?
Их типы?

Child - это имя компонента TFDTable.

Свойство Filter - наиболее часто используемый способ фильтрации записей, имеет тип String.

Можно было бы фильтровать записи базы данных по SQL-запросам, но хочется и с этой ошибкой разобраться!

Ссылка на комментарий
  • 0
В 18.09.2018 в 16:01, Barbanel сказал:

Понял. FireDac не использовал.
Ошибка возникает на какой строке?
Полагаю что здесь -> Child.Filtered:=True;

Покажите значение Filter в момент ошибки.

Идет поиск человека в базе данных по фамилии, например, "Иванов". Ввожу в поле ввода Edit данное строковое значение, и, .... ошибка!

Ссылка на комментарий
  • 0

Ошибка "Type mismatch" означает несоответствие типов.
Либо фильтр неправильно настроен, либо поле имеет другой тип.
Если поле всетаки строковое - посмотрите тип поля (String/WideString) и кодировку, если указана.
Посмотрите также, что возвращает источник данных (query или что у вас источником является) по по этому полю.

PS еще можно писать так:
Child.Filter := 'CHILDFAM=' + s.QuotedString;

Ссылка на комментарий
  • 0

для начала вообще просто строку написать хардкодом, без переменных

'CHILDFAM=''значение'' '

потом еще 2 раза проверить тип поля 

Ссылка на комментарий
  • 0
3 часа назад, Barbanel сказал:

Повторюсь:
Ошибка возникает на какой строке?

Как я думаю, на этой:

Child.Filter:='CHILDFAM='+ QuotedStr(s);

Все, что-вы мне сообщили, я опробую. Позже отпишусь! Спасибо!

Ссылка на комментарий
  • 0

http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.SysUtils.QuotedStr

Возможно : "Примечание. При работе с многобайтовыми системами символов ( MBCS) вместо этого используйте AnsiQuotedStr ." ?

Ссылка на комментарий
  • 0

В общем ошибка остается! С типами полей у меня всё нормально, было работоспособное приложение до перехода на Rad Studio 10.2 Tokyo . Ничего нигде не менял! Решил вместо фильтра с QuotedStr использовать SQL-запросы для поиска человека по фамилии:

   s:=Edit5.Text;
   FDQuery.SQL.Text:='select * from CHILD where CHILDFAM=(:CHILDFAM)';
   FDQuery.ParamByName('CHILDFAM').AsString:=s;
   FDQuery.Open;

Так всё работает!

Всем спасибо за поддержку!

Изменено пользователем ulansaran
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...