Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.24;
Скачать: CL | DM;

Вниз

игнорирование регистра в запросе   Найти похожие ветки 

 
kubatura ©   (2007-05-17 15:58) [0]

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

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

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


 
Sergey13 ©   (2007-05-17 16:00) [1]

> InterBase 1.0.1.340

Что за зверь?

> каким образом можно игнорировать регистр при поиске нужных значений???
Так приведи их к одному регисту. Например upper.


 
Val ©   (2007-05-17 16:00) [2]

см. серверные функции приведения строковых сначений к верхнему либо нижнему регистру.


 
kubatura ©   (2007-05-17 16:08) [3]

пробовал менять на
DataModule2.IBQuery1.SQL.Add("where FAM_FL like upper(:fam) and NAME_FL like upper(:nam) and OTCH_FL like upper(:otc)");

ошибку выдает....

> InterBase 1.0.1.340

Что за зверь?-стандартный на диске с D7 шел...


 
Jan1   (2007-05-17 16:10) [4]


> ошибку выдает....

ошибка три точки называется?


 
Sergey13 ©   (2007-05-17 16:16) [5]

> [3] kubatura ©   (17.05.07 16:08)

> где в столбцах FAM_FL NAME_FL OTCH_FL встречаются значения
> полей содержащие символы разных регистров

> FAM_FL like upper(:fam)

Встречаются в "столбцах" а выравниваешь параметр. Почему?


 
kubatura ©   (2007-05-17 16:19) [6]

потому что торможу и конец рабочего дня... подскажи плыз как сделать?


 
Val ©   (2007-05-17 16:20) [7]

все взять и поделить.


 
kubatura ©   (2007-05-17 16:21) [8]

??????


 
Val ©   (2007-05-17 16:24) [9]

шариков, из собачьего сердца. о радикальных методах.
смотри - тебе надо маленькие буковки с большими сравнить - как сделать, чтобы была пофиг их высота? уровнять.


 
Sergey13 ©   (2007-05-17 16:25) [10]

> [6] kubatura ©   (17.05.07 16:19)

where upper(FAM_FL) like :fam

Параметру ессно тоже предавать "верхнее" значение.


 
kubatura ©   (2007-05-17 16:27) [11]

fam := UpperCase(Form1.LabeledEdit28.Text);
nam := UpperCase(Form1.LabeledEdit29.Text);
otc := UpperCase(Form1.LabeledEdit30.Text);

DataModule2.IBQuery1.SQL.Add("where 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 := fam;
DataModule2.IBQuery1.Params[1].AsString := nam;
DataModule2.IBQuery1.Params[2].AsString := otc;

один фиг не пашет :-(((


 
Val ©   (2007-05-17 16:29) [12]

а не в кириллице ли заковыка?


 
kubatura ©   (2007-05-17 16:30) [13]

fam := AnsiUpperCase(Form1.LabeledEdit28.Text);
nam := AnsiUpperCase(Form1.LabeledEdit29.Text);
otc := AnsiUpperCase(Form1.LabeledEdit30.Text);

тоже пробовал... не пашет...


 
Sergey13 ©   (2007-05-17 16:30) [14]

> [11] kubatura ©   (17.05.07 16:27)

Буквы русские? Тогда UpperCase не подойдет. Надо ANSIUpperCase.


 
kubatura ©   (2007-05-17 16:36) [15]

Sergey13 ©   (17.05.07 16:30) [14]

пробовал уже... не работает :-(((


 
Val ©   (2007-05-17 16:38) [16]

1. я имел ввиду проблемы сервера с кириллицей. с латиницей - проблемы есть?
2. зачем "поднимать" параметры на клиенте, а поле в запросе?


 
Val ©   (2007-05-17 16:39) [17]

кроме того, неплохо бы и пробельчики посечь.


 
kubatura ©   (2007-05-17 16:45) [18]

Val ©   (17.05.07 16:38) [16]

Юзаю:

IBDatabase
IBTransaction
IBQuery

подключаюсь не через сервер ИБ а напрямую к GDB файлу...

пробелы тут непричем... когда в том же самом регистре как в базе забито ищешь все находит... чуть хоть одной буквы регистр сменил и всё... не находит ничего...


 
Jan1   (2007-05-17 16:47) [19]


> пробелы тут непричем... когда в том же самом регистре как
> в базе забито ищешь все находит... чуть хоть одной буквы
> регистр сменил и всё... не находит ничего...

читал?
http://www.ibase.ru/devinfo/ibrusfaq.htm


 
Desdechado ©   (2007-05-17 16:48) [20]

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

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


 
Val ©   (2007-05-17 17:03) [21]

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


 
kubatura ©   (2007-05-17 17:07) [22]

Jan1   (17.05.07 16:47) [19]

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


 
Jan1   (2007-05-17 17:32) [23]

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


 
Jan1   (2007-05-17 17:33) [24]

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


 
kubatura ©   (2007-05-18 09:24) [25]

пишу

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"

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


 
Sergey13 ©   (2007-05-18 09:46) [26]

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

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

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


 
kubatura ©   (2007-05-18 10:15) [27]

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


 
kubatura ©   (2007-05-18 10:16) [28]

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

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


 
Sergey13 ©   (2007-05-18 10:19) [29]

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

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


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

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


 
Sergey13 ©   (2007-05-18 10:26) [31]

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

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


 
kubatura ©   (2007-05-18 10:30) [32]

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

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


 
Sergey13 ©   (2007-05-18 10:44) [33]

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

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


 
kubatura ©   (2007-05-18 16:23) [34]

делаю
"
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;
"

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


 
kubatura ©   (2007-05-18 16:31) [35]

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


 
Sergey13 ©   (2007-05-18 16:34) [36]

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

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

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


 
kubatura ©   (2007-05-18 16:39) [37]

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


 
Sergey13 ©   (2007-05-18 16:48) [38]

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


 
kubatura ©   (2007-05-23 18:11) [39]

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

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;

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


 
stone ©   (2007-05-23 18:25) [40]


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


> FILENAME like :filename

регистр не привел (если надо было)


> like

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



Страницы: 1 2 вся ветка

Текущий архив: 2007.06.24;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.015 c
2-1180932674
vegarulez
2007-06-04 08:51
2007.06.24
Вопрос про Delay


15-1180078735
iXT
2007-05-25 11:38
2007.06.24
Bitmap(16*16)


8-1160000268
Владимир
2006-10-05 02:17
2007.06.24
Слайдшоу на DVD


2-1180589575
Slavutich
2007-05-31 09:32
2007.06.24
Экспорт данных из Excel фаила в MySQL


2-1180981765
Zesik
2007-06-04 22:29
2007.06.24
Видимость формы