![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
игнорирование регистра в запросе [D7, InterBase 1.0.1.340]
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