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 встречаются значения полей содержащие символы разных регистров...

каким образом можно игнорировать регистр при поиске нужных значений???

Заранее премного благодарен!


kubatura   (2007-05-23 18:11:00) [21]

да что за нафиг-то?????? :-((((

collate в системной таблице изменил на 1, теперь таблица выглядит как:

   FAM_FL    VARCHAR(60) CHARACTER SET WIN1251,
   NAME_FL   VARCHAR(60) CHARACTER SET WIN1251,
   OTCH_FL   VARCHAR(60) CHARACTER SET WIN1251,

в коде проги написал :

fam := ANSIUpperCase(Form1.LabeledEdit28.Text);
nam := ANSIUpperCase(Form1.LabeledEdit29.Text);
otc := ANSIUpperCase(Form1.LabeledEdit30.Text);
DataModule2.IBQuery1.SQL.Add('select * from FL');
DataModule2.IBQuery1.SQL.Add('where FILENAME like :filename and Upper(FAM_FL) like :fam and Upper(NAME_FL) like :nam and Upper(OTCH_FL) like :otc');
DataModule2.IBQuery1.Prepare;
DataModule2.IBQuery1.Params[0].AsString := filename;
DataModule2.IBQuery1.Params[1].AsString := fam;
DataModule2.IBQuery1.Params[2].AsString := nam;
DataModule2.IBQuery1.Params[3].AsString := otc;
DataModule2.IBQuery1.Open;

все равно не ищет! в чем может быть дело???


Sergey13   (2007-05-18 16:48:00) [22]

Я вроде с ibexpert.com качал


kubatura   (2007-05-18 16:39:00) [23]

тока платные линки на IBExpert нашел... кинь если есть на мыл его а???


Sergey13   (2007-05-18 16:34:00) [24]

> [34] kubatura ©   (18.05.07 16:23)

Я вообще то не думал, что ты для перегона данных прогу будешь писать. Я предполагал это сделать в, например, IBExpert.

зы: и прекрати уже использовать IBTable. Не хорошо это. IBDataSet - путь к светлому будущему.


kubatura   (2007-05-18 16:31:00) [25]

таблица для IBTable естественно указана другая... не FL....


kubatura   (2007-05-18 16:23:00) [26]

делаю
"
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('select * from FL');
IBQuery1.Open;
IBTable1.Active := True;
While not IBQuery1.Eof
do
 begin
filename := IBQuery1.FieldByName('FILENAME').AsString;
iddok := IBQuery1.FieldByName('IDDOK').AsString;
fam_fl := IBQuery1.FieldByName('FAM_FL').AsString;
name_fl := IBQuery1.FieldByName('NAME_FL').AsString;
otch_fl := IBQuery1.FieldByName('OTCH_FL').AsString;
famlat := IBQuery1.FieldByName('FAMLAT').AsString;
namelat := IBQuery1.FieldByName('NAMELAT').AsString;
otchlat := IBQuery1.FieldByName('OTCHLAT').AsString;
sex := IBQuery1.FieldByName('sex').AsString;

   IBTable1.Insert;
   IBTable1.Fields[0].AsString := filename;
   IBTable1.Fields[1].AsString := iddok;
   IBTable1.Fields[3].AsString := fam_fl;
   IBTable1.Fields[4].AsString := name_fl;
   IBTable1.Fields[5].AsString := otch_fl;
   IBTable1.Fields[6].AsString := famlat;
   IBTable1.Fields[7].AsString := namelat;
   IBTable1.Fields[8].AsString := otchlat;
   IBTable1.Fields[9].AsString := sex;
   IBTable1.Post;
IBQuery1.Next;
 end;
"

не выходит каменный цветок...
что не так????


Sergey13   (2007-05-18 10:44:00) [27]

> [32] kubatura ©   (18.05.07 10:30)

А  [26] Sergey13 ©   (18.05.07 09:46)
на размышления не наводит? Там вроде понятно алгоритм описан. Делов то на 10 минут неспешной работы.


kubatura   (2007-05-18 10:30:00) [28]

тогда если не сложно подскажи как проще всего перегнать данные из одной таблицы в другую????

Заранее спасибо!


Sergey13   (2007-05-18 10:26:00) [29]

> [30] kubatura ©   (18.05.07 10:21)

Да фиг его знает. У тебя и у автора статьи разные машины и другие условия.


kubatura   (2007-05-18 10:21:00) [30]

"если вы точно знаете что хотите сделать"
я точно знаю что хочу сделать...
также в наличии есть точный пример из вышеуказанной статьи...
я просто задаю вопрос почему выскакивает данная ошибка????


Sergey13   (2007-05-18 10:19:00) [31]

> [28] kubatura ©   (18.05.07 10:16)

Если ты такой знаток, как описано в цитате, то почему у тебя вообще возникают такие проблемы?


kubatura   (2007-05-18 10:16:00) [32]

а то что написано в статье это неправда????

"
примечание: изменение системных таблиц является нормальной операцией, если вы точно знаете что хотите сделать, и ознакомились с разделом System Tables в книге InterBase Language Reference. InterBase может выполнять изменение структуры таблиц, типов полей и т.п. операции, однако для них нет соответствующих команд SQL - они просто не определены в стандарте.
"


kubatura   (2007-05-18 10:15:00) [33]

ну а всё же? почему такая ошибка выскакивает???


Sergey13   (2007-05-18 09:46:00) [34]

> [25] kubatura ©   (18.05.07 09:24)

Не надо работать с системными таблицами напрямую. Особенно без опыта.

Пересоздай поля в таблице (или всю таблицу). По принципу: создал новое временное поле, перегнал в него данные из старого, удалил старое, пересоздал старое, перегнал туда из временного, удалилд временное.


kubatura   (2007-05-18 09:24:00) [35]

пишу

UPDATE RDB$RELATION_FIELDS
SET RDB$COLLATION_ID = 1
WHERE (RDB$FIELD_NAME = 'FAM_FL') and (RDB$RELATION_NAME = 'FL')

выскакивает ошибка
"unsuccessful metadata update
FL
Implementation of text subtype 256 not located"

в чем может быть дело???


Jan1   (2007-05-17 17:33:00) [36]

читай там же:
Как сменить COLLATE на работающей базе данных


Jan1   (2007-05-17 17:32:00) [37]

upper(field1 collate win1251) не канает?


kubatura   (2007-05-17 17:07:00) [38]

Jan1   (17.05.07 16:47) [19]

мдаааааааааа... на самом деле как NONE кодировка была :-((( неделю загонял туда инфу... и что теперь заново всё нужно в win1251 заливать???


Val   (2007-05-17 17:03:00) [39]

>пробелы тут непричем...
тут, возможно, действительно - не причем.


Desdechado   (2007-05-17 16:48:00) [40]

> InterBase 1.0.1.340 Что за зверь?
> -стандартный на диске с D7 шел...
Не было таких. Видно, ты перепутал версию утилиты какой-то для доступа к IB.

> where upper(FAM_FL) like :fam
Помнится, UPPER не работала с кириллицей в IB. По крайней мере, надо правильно указывать COLLATE


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

Наверх

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