![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Like в Access [D7, XP]
DimonS © (2007-03-13 09:42:00)Доброго времени суток.
Есть такой запрос:
ADOAuto.Close;
ADOAuto.SQL.Clear;
ADOAuto.SQL.Add('select * from Autos where StateNo Like "*463*"');
ADOAuto.Open;
к БД Access.
Ошибка: слишком мало параметров, требуется 1.
Но если этот запрос выполнить непосредственно в mdb-файле, то выполняется запросто.
Где зарыта ошибка?
sniknik (2007-03-15 10:50:00) [1]> Почему - незнаю.
про 17-ю строку уже знаеш? ну вот.
программу в которой можно проверить предлагал? ... про различия в подключениях обьяснял?
блин, несколько вариантов всего, проверить... выполнил, посмотрел который работает... и знаеш ужо.
DimonS (2007-03-15 09:31:00) [2]
> > Вот такая конструкция сработала:
> значит должна была сработать и замена посоветованная в [2]
Как ни странно, просто так в запросе та конструкция неработала. Заработало все только через параметры. Почему - незнаю.
sniknik (2007-03-15 09:04:00) [3]> Вот такая конструкция сработала:
значит должна была сработать и замена посоветованная в [2]
> надо привести поле и переменную к одному регистру.
для access без надобности. там наоборот проблема сделать регистрозависимый поиск... (проблемка вернее, надо функцией пользоваться с бинарным сравнением, но для тех кто не знает...)
DimonS (2007-03-15 09:02:00) [4]
> Пока юзер не ввел букву. Для того, чтобы и буквы кушало
> нормально, надо привести поле и переменную к одному регистру.
>
Проверил, работает и с буквами, причем нечувствительно к регистру. Так что хеппи енд :)
Спасибо всем, кто откликнулся!
Sergey13 (2007-03-15 08:48:00) [5]> [30] DimonS © (15.03.07 02:48)
> Вот такая конструкция сработала:
Это временно. 8-)
Пока юзер не ввел букву. Для того, чтобы и буквы кушало нормально, надо привести поле и переменную к одному регистру.
DimonS (2007-03-15 02:48:00) [6]Все, нашел нужную комбинацию :)
Вот такая конструкция сработала:
ADOAuto.SQL.Add('select * from Autos where StateNo Like :D');
ADOAuto.Parameters.ParamValues['D']:='%463%';
DimonS (2007-03-14 13:56:00) [7]Спасибо всем, кто ответил. Завтра проверю, если заработает какой-то из вариантов отпишу сюда.
Sergey13 (2007-03-14 13:40:00) [8]> [25] DimonS © (14.03.07 13:26)
Не ошибаешься.
DimonS (2007-03-14 13:28:00) [9]
> Плохиш © (14.03.07 13:26) [24]
> ADOAuto.SQL.Text := 'select * from Autos where StateNo Like
> "%%463%%"';
>
> Этот запрос работает.
Опа, а вот это попробую завтра! Спасибо за совет, что-то просто неподумал в этом направлении :).
Плохиш (2007-03-14 13:27:00) [10]
> Плохиш © (14.03.07 13:26) [24]
Пардон, знак процента по одному разу спереди и сзади :-)
DimonS (2007-03-14 13:26:00) [11]
> Если Like без звездочек прокатывает, попробуй через параметры
> (вроде говорили уже про это).
Хм... Это что-то типа ..... Like :Param?
А параметру присвоить значение *463*? Или я ошибаюсь?
Плохиш (2007-03-14 13:26:00) [12]
ADOAuto.SQL.Text := 'select * from Autos where StateNo Like "%%463%%"';
Этот запрос работает.
Sergey13 (2007-03-14 13:15:00) [13]> [22] DimonS © (14.03.07 13:10)
Если Like без звездочек прокатывает, попробуй через параметры (вроде говорили уже про это).
DimonS (2007-03-14 13:10:00) [14]Ну что, неужели никто не общался ниразу с Access? Или не делал такие запросы? Сегодня еще с пол-часа потыкал, ошибка та же выскакивает...
MsGuns (2007-03-14 08:59:00) [15]>DrPass © (13.03.07 22:36) [19]
>Ммм... а ты в исходники ADOQuery не заглядывал?
Где уж нам уж выйти замуж ;)
И чем таким концептуальным этот квери отличается от TCustomADODataSet ?
Тот же чувак, только стриженый под панка ;)
DimonS (2007-03-14 00:27:00) [16]
> Мне вот непонятно до неприличности, а что, попробовать "тыком"
> не пришло в голову ?
Вчера этим "тыком" часа 2 занимался. Если бы этот "тык" помог, стал бы я здесь спрашивать...
> Anatoly Podgoretsky © (13.03.07 20:15) [17]
> Во второй семнадцатой или в третей семнадцатой.
Хорош подкалывать, незнал я этой шутки :)
DrPass (2007-03-13 22:36:00) [17]
> MsGuns © (13.03.07 21:20) [18]
> Глупостив не надо, а ? Даже в виде шутки юмора
Ммм... а ты в исходники ADOQuery не заглядывал?
MsGuns (2007-03-13 21:20:00) [18]>DrPass © (13.03.07 11:41) [10]
>между TADOQuery и TADODataset разница только в наличии свойства SQL и метода ExecSQL у первого :)
Глупостив не надо, а ? Даже в виде шутки юмора.
По сабжу:
Мне вот непонятно до неприличности, а что, попробовать "тыком" не пришло в голову ? Тем более, что там всего-то 4 (четыре) варианта.
ODBC или OLE DB не суть важно, тем более, что, как верно заметил Sniknik, все это в итоге работает через одно "очко".
Anatoly Podgoretsky (2007-03-13 20:15:00) [19]> DimonS (13.03.2007 15:48:15) [15]
> В какой 17-й строке посмотерть?
Во второй семнадцатой или в третей семнадцатой.
Sergey13 (2007-03-13 15:52:00) [20]> [15] DimonS © (13.03.07 15:48)
Кто-ж знает-то кроме тебя, какая строка у тебя 17-я! 8-)
Это шутка такая - ошибка в программе.