Форум: "Начинающим";
Текущий архив: 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