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

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

где ошибка ? [D7]


Golik ©   (2006-10-30 19:40:00) 

datamodule3.ADOQuery1.SQL.Text := 'select * from Arenda where 1=1';
if CheckBox1.Checked =true then
datamodule3.ADOQuery1.SQL.Add('and комнат =:koll');
if CheckBox2.Checked =true then
datamodule3.ADOQuery1.SQL.Add('and комнат =:kol or комнат =:koll ');
datamodule3.ADOQuery1.Parameters.Clear;
datamodule3.ADOQuery1.Parameters.ParseSQL(datamodule3.ADOQuery1.SQL.Text,true);
if CheckBox1.Checked =true then
 datamodule3.ADOQuery1.Parameters.ParamByName('koll').Value:='1';
if CheckBox2.Checked =true then
 datamodule3.ADOQuery1.Parameters.ParamByName('kol').Value:='2';
datamodule3.ADOQuery1.open;

end;


выдает ошибку "неправильно определен объект Parametr , предоставленны несовместимые или неполные данные"

суть запроса такая:
если отмечен 1 чекбокс то запрос выдает 1-комнатные квартиры, если 2 то 2-х комнатные, а если оба сразу то должы выдаваться и 1-е и 2-е квартиры!


Golik   (2006-10-30 23:03:00) [1]


var grpOpen:boolean;
begin
datamodule3.ADOQuery1.SQL.Text := 'select * from Arenda where 1=1';
grpOpen:=false;

if suiCheckBox11.Checked  then
begin
if grpOpen then datamodule3.ADOQuery1.SQL.Add('or')
 else datamodule3.ADOQuery1.SQL.Add('and (');
datamodule3.ADOQuery1.SQL.Add('комнат = 1');
grpOpen:=true;
end;

if suiCheckBox12.Checked then
begin
if grpOpen then datamodule3.ADOQuery1.SQL.Add('or')
 else datamodule3.ADOQuery1.SQL.Add('and (');
datamodule3.ADOQuery1.SQL.Add('комнат = 2');
grpOpen:=true;
end;

if suiCheckBox13.Checked then
begin
if grpOpen then datamodule3.ADOQuery1.SQL.Add('or')
 else datamodule3.ADOQuery1.SQL.Add('and (');
datamodule3.ADOQuery1.SQL.Add('комнат = 3');
grpOpen:=true;
end;
if suiCheckBox14.Checked then
begin
if grpOpen then datamodule3.ADOQuery1.SQL.Add('or')
 else datamodule3.ADOQuery1.SQL.Add('and (');
datamodule3.ADOQuery1.SQL.Add('комнат = 4');
grpOpen:=true;
end;

 if suiCheckBox15.Checked then
begin
if grpOpen then datamodule3.ADOQuery1.SQL.Add('or')
 else datamodule3.ADOQuery1.SQL.Add('and (');
datamodule3.ADOQuery1.SQL.Add('комнат = 5');
grpOpen:=true;
end;



все работает!
но если добавить в этот код этот кусок

 if suiCheckBox2.Checked then
begin
if grpOpen then datamodule3.ADOQuery1.SQL.Add('or')
 else datamodule3.ADOQuery1.SQL.Add('and (');
datamodule3.ADOQuery1.SQL.Add('Raion = 1');
grpOpen:=true;
end;

то эффекта никакого нет ! почему ????


Anatoly Podgoretsky   (2006-10-30 22:49:00) [2]

datamodule3.ADOQuery1.SQL.Text := 'select * from Arenda where 1=1';

Это еще зачем?

datamodule3.ADOQuery1.SQL.Add('and комнат =: kolland  комнат =: kolor комнат =: koll');

Вот это уже серьезнее, третьему параметру не присвоено значение.


Anatoly Podgoretsky   (2006-10-30 22:46:00) [3]

> Golik  (30.10.2006 22:20:04)  [4]

А можно ли строку считать числом, никто тогда не мешает записать Ю


Leonid Troyanovsky   (2006-10-30 22:45:00) [4]


> Desdechado ©   (30.10.06 22:42) [5]

> но, думаю, клиенты не извращенцы, да и больше 9 комнат редко
> просят :)


Смешно будет, если спросят.
Я б не взялся объясняться.

--
Regards, LVT.


Desdechado   (2006-10-30 22:42:00) [5]

может, если число шестнадцатиричное
но, думаю, клиенты не извращенцы, да и больше 9 комнат редко просят :)

ЗЫ не на то обращаешь внимание


Golik   (2006-10-30 22:20:00) [6]

а что число комнат не может задаваться строкой в БД ?


MikePetrichenko   (2006-10-30 20:41:00) [7]


> где ошибка ?

В ДНК


Desdechado   (2006-10-30 20:34:00) [8]

к сути вопроса не относится, но все же:
1. if CheckBox2.Checked =true - архаизм
2. Value:='2'; - неужто число комнат задается строкой в БД?
3. and комнат =:koll and комнат =:kol or комнат =:koll - это вообще-то 3 параметра, причем явно описанное тобой условие не сочетается с этим предикатом


Anatoly Podgoretsky   (2006-10-30 20:14:00) [9]

В какой строке?


Наверх

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