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

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

игнорирование регистра в запросе [D7, InterBase 1.0.1.340]


Страницы:   1 2 3

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

у параметра % присутствует?


Страницы:   1 2 3

Наверх

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