|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблема при выполнении запроса
вот код:
Код:
ADOQuery2.SQL.Text:='select fam from aaa where Code="'+edit3.Text+'"'; ADOQuery2.ExecSQL; ADOQuery2.SQL.Text:='select * from aaa'; ADOQuery2.Active:=False; ADOQuery2.Active:=True; lmikle: пользуемся тегами!!! Пишу в едит3 порядковый номер,вывожу в DBGrid. Возникает ошибка:"несоответствие типов данных в выражении...." Помогите плиз |
#2
|
|||
|
|||
Ну да. У тебя какой тип поля Code?
Даже если строка, то там все-равно надо одинарными кавычками обрамляьб значение. |
#3
|
|||
|
|||
Вообще в таких случаях следует пользоваться параметрами:
Код:
ADOQuery2.SQL.Text:='select fam from aaa where Code=:Code'; ADOQuery2.Parameters.ParamValues['Code'] := Edit3.Text; ADOQuery2.ExecSQL; ADOQuery2.SQL.Text:='select * from aaa'; ADOQuery2.Active:=False; ADOQuery2.Active:=True; Только непонятно, что у вас тут просходит. Вы делаете выборку из таблицы 'aaa' в никуда, потом сразу меняете запрос и выбираете все данные из таблицы. Зачем тогда первый запрос? |
#4
|
||||
|
||||
Код:
ADOQuery2.SQL.Text:='select fam from aaa where Code=:Code'; ADOQuery2.Parameters.ParamValues['Code'] := Edit3.Text; ADOQuery2.ExecSQL; Если предполагается получить fam из ADOQuery2 то надо ADOQuery2.Open или ADOQuery2.Active := True; Так ведь не похоже на то, т.к. дальше-то все это героически убивается. Код:
ADOQuery2.SQL.Text:='select * from aaa'; ADOQuery2.Active:=False; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
Код:
ADOQuery2.SQL.Text:='select fam from aaa where Code=:Code'; ADOQuery2.Parameters.ParamValues['Code'] := Edit3.Text; ADOQuery2.ExecSQL; Если предполагается получить fam из ADOQuery2 то надо ADOQuery2.Open или ADOQuery2.Active := True; Так ведь не похоже на то, т.к. дальше-то все это героически убивается. Код:
ADOQuery2.SQL.Text:='select * from aaa'; ADOQuery2.Active:=False; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
Прошу прощения, что ввёл в заблуждение этим запросом. Работает вариант, предложенный lmikle и Kapitoshka438. Тогда в чём разница между SELECT и ADOQuery2.Parameters? Суть вопроса : надо организовать поиск по порядковому номеру, который вводит юзер.
Страдалецъ - спасибо за замечание, всё переделал |
#7
|
|||
|
|||
Цитата:
А запрос вот такой. Код:
with aaa do begin Close; SQL.Clear SQL.Add('Select fam From aaa Where Code=:Code'); Parameters.ParamByName('Code').Value := Edit3.Text; Open; end; |
#8
|
|||
|
|||
Строку запроса можно сформировать, как сумму строк. Но при этом строка запроса должна в итоге быть синтаксически правильной. Например, правильный запрос должен выглядеть так:
Код:
ADOQuery2.SQL.Text:='select fam from aaa where Code='''+edit3.Text+'''; // Здесь все кавычки одинарные (их по три штуки) Код:
ADOQuery2.SQL.Text:='select fam from aaa where Code=:Code А первый способ нужно использовать, если вы меняете таблицы, из которых происходит выборка, т.к. их нельзя посылать в запрос через параметры. Код:
ADOQuery2.SQL.Text:='select fam from ''' + edit3.Text + ''' where ...'; |