![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
игнорирование регистра в запросе [D7, InterBase 1.0.1.340]
kubatura © (2007-05-17 15:58:00)в наличии имеется:
DataModule2.IBQuery1.SQL.Add('select * from FL');
DataModule2.IBQuery1.SQL.Add('where FAM_FL like :fam and NAME_FL like :nam and OTCH_FL like :otc');
и БД где в столбцах FAM_FL NAME_FL OTCH_FL встречаются значения полей содержащие символы разных регистров...
каким образом можно игнорировать регистр при поиске нужных значений???
Заранее премного благодарен!
phar (2007-06-01 19:34:00) [1]А ошибка возникает в твоем случае возникает при попытке IB перекодировать
СharacterSet клиента в СharacterSet базы. По умолчанию и база и клиент имеют СharacterSet=NONE. СharacterSet = NONE(неизвестный) нельзя перекодировать ни в какой другой, поэтому при попытке перекодирования выскакивает ошибка. Поскольку ты задал для базы СharacterSet WIN1251 для клиента надо задать "совместимый" СharacterSet. Как это сделать я описал выше
phar (2007-06-01 19:20:00) [2]Попробуй указать явно в параметрах TIBDatabase кодировку.
Либо через Object Inspector открыть Params и добавить строку lc_ctype=WIN1251
Либо в момент исполнения кода, перед запросом что-то вроде:
IBDatabase1.Params.Add('lc_ctype=WIN1251');
kubatura (2007-05-28 16:58:00) [3]но я не вставляю никакие данные!!!! ошибка выскакивает на запросе IBQuery!!!
pavel_guzhanov (2007-05-28 15:49:00) [4]
> arithmetic exception, numeric overflow, or string truncation
> Cannot transliterate character between character sets
Эта ошибка чаще всего возникает, если ты пытаешься вставить в поле данные, большие, чем размер поля.
kubatura (2007-05-28 14:59:00) [5]повторю вопрос- что это за ошибка? в каких случаях она возникает???
kubatura (2007-05-28 09:14:00) [6]собственно сабж...
kubatura (2007-05-25 11:19:00) [7]так... создал новую базу данных в кодировке win1251, заново загнал туда все данные... но теперь при попытке поиска выскакивает ошибка:
"arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets."
Это что за зверь и с чем его едят???
Заранее спасибо!!!
kubatura (2007-05-25 08:58:00) [8]хех... а колыбельную компьютеру на ночь не надо петь? :-)))))))
Anatoly Podgoretsky (2007-05-24 16:40:00) [9]> kubatura (24.05.2007 16:00:50) [50]
Это тебя надо спросить, попробуй человеческим языком, а не машинным объяснить свою часть WHERE, примерно так
Если поле равно и ...
kubatura (2007-05-24 16:00:00) [10]что не так-то?????? :-((((
Anatoly Podgoretsky (2007-05-24 15:48:00) [11]> kubatura (24.05.2007 15:36:47) [47]
Это переменные, а в запросе поля.
kubatura (2007-05-24 15:44:00) [12]мда... пофиг ей все или не все поля одной кодировки... не пашет хоть ты тресни :-(((
kubatura (2007-05-24 15:36:00) [13]это данные по которых проводится отбор
fam := ANSIUpperCase(Form1.LabeledEdit28.Text);
nam := ANSIUpperCase(Form1.LabeledEdit29.Text);
otc := ANSIUpperCase(Form1.LabeledEdit30.Text);
DataModule2.IBQuery1.SQL.Add('select * from FL');
а формат полей в таблице
FAM_FL VARCHAR(60) CHARACTER SET WIN1251,
NAME_FL VARCHAR(60) CHARACTER SET WIN1251,
OTCH_FL VARCHAR(60) CHARACTER SET WIN1251,
кстати поля в таблице могуть иметь разную кодировку или вся таблица должна быть в одной кодировке???
Anatoly Podgoretsky (2007-05-24 15:16:00) [14]Я тоже, все так, а вот с данными возможно не так, разве что первое условие бессмысленная (если только не особые настройки).
kubatura (2007-05-24 15:13:00) [15]глаз уже замылился... не могу понять что не так с запросом???? :-(((
Anatoly Podgoretsky (2007-05-24 13:59:00) [16]Что ни так с запросом, криминала нет
stone (2007-05-24 13:00:00) [17]
> DataModule2.IBQuery1.SQL.Add('where FILENAME=filename and
> Upper(FAM_FL)=fam and Upper(NAME_FL)=nam and Upper(OTCH_FL)=otc');
>
ты на свой запрос внимательно посмотри. только очень внимательно...
kubatura (2007-05-24 11:55:00) [18]собственно повторяю вопрос...
kubatura (2007-05-24 09:00:00) [19]
> регистр не привел (если надо было)
тут не надо регистра...
> у параметра % присутствует?
да даже простое равенство не работает...
DataModule2.IBQuery1.SQL.Add('where FILENAME=filename and Upper(FAM_FL)=fam and Upper(NAME_FL)=nam and Upper(OTCH_FL)=otc');
stone (2007-05-23 18:25:00) [20]
> все равно не ищет! в чем может быть дело???
> FILENAME like :filename
регистр не привел (если надо было)
> like
у параметра % присутствует?