Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.052 c
4-1168522359
Cj
2007-01-11 16:32
2007.06.24
Приостановка процесса


2-1180707150
AndrewBB
2007-06-01 18:12
2007.06.24
Битовые строки


6-1164965704
Novic
2006-12-01 12:35
2007.06.24
Запустить самостоятельный процесс на сервере


15-1180467051
Ricko
2007-05-29 23:30
2007.06.24
Помогите вспомнить


15-1179773449
Астроном
2007-05-21 22:50
2007.06.24
Фотография воды на Марсе...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский