• 0
ulansaran

Ошибка QuotedStr

Вопросы

Здравствуйте! Решил обратиться к вам за советом. Суть такая. 
У меня есть разработанное приложение, которое я в последний раз дорабатывал в 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 ответов на этот вопрос

  • 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
20 минут назад, Barbanel сказал:

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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