Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Like в Access [D7, XP]


Страницы:   1 2

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-)
Это шутка такая - ошибка в программе.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо