Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование метода Locate у TClientDataSet [D5, MSSQL]


harisma ©   (2008-03-31 12:33:00) 

Как выполнить Locate по значению поля, которое содержит символ ' (#39)?
Вызов происходит так:

cdsGroup.Locate('F1', VarArrayOf([Value]), [loCaseInsensitive, loPartialKey])


Value получаем считыванием значения с контрола формы (TEdit.Text), куда было введено слово 'зв'язок'.

Если подставить это значение как есть - то получим следующую ошибку:

"Invalid filter expression character: 'я'

Что делать? Каким образом следует предварительно обработать введенное значение, чтобы метод Locate корректно отработал? (в табличке строка чс таким значением в поле F1 существует)


Loginov Dmitry   (2008-03-31 23:39:00) [1]

> Value получаем считыванием значения с контрола формы (TEdit.Text)
> , куда было введено слово 'зв'язок'.
>
> Если подставить это значение как есть - то получим следующую
> ошибку


TClientDataSet крайне чувствителен к наличию апострофа (и к одинарному символу двойной кавычки). Байт FF тут непричем.


Виталий Панасенко(дом)   (2008-03-31 14:25:00) [2]

а, но при использовании VarArryaOf - не находит
 if not cds.Locate('F1', VarArrayOf([Edit1.Text]), [loCaseInsensitive, loPartialKey]) then
  ShowMessage('Not found')


а так
 if not cds.Locate('F1', Edit1.Text, [loCaseInsensitive, loPartialKey]) then
  ShowMessage('Not found')

без проблем


Виталий Панасенко(дом)   (2008-03-31 14:19:00) [3]

у меня в Д7 находит без проблем..можливо, глюк в Д5 ?


www   (2008-03-31 13:54:00) [4]

это проблема буквы "я", увы
тяжелое наследие кодировки FF


clickmaker   (2008-03-31 12:54:00) [5]

а в отладчике если зайти в Locate, на какой строке ошибка?


Наверх

Титульная страница Поиск, карта сайта Написать письмо