Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Динамический запрос к таблице acess   Найти похожие ветки 

 
Leons   (2004-08-09 13:55) [0]

Не работает динамический запрос. Хотя вроде все верно. Пишет неправильно определен объект Параметр... Как его тогда правильно определить? Где и что поставить?
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
k:=Edit1.Text;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("SELECT * FROM Kods where like:=k");
Memo1.Lines:=ADOQuery1.SQL;
ADOQuery1.Active:=true;
end;


 
Sergey13 ©   (2004-08-09 14:01) [1]

LIKE :k
И :к определить перед выполнением запроса.


 
Leons   (2004-08-09 14:02) [2]

А где нужно и как определить k


 
Sergey13 ©   (2004-08-09 14:04) [3]

А что такое :k? Переменная? Чему равна и какого типа?


 
Соловьев ©   (2004-08-09 14:07) [4]

TADOQuery.Parameters+F1


 
Leons   (2004-08-09 14:13) [5]

TADOQuery.Parameters+F1 Не нашел блин ни чего.
k - переменная. Тип - string. Присваивается ей значение edit


 
Leons   (2004-08-09 14:16) [6]

Параметр сделал в TADOQuery, назвал kod, тип - ftString, но как и куда в мой код вставить?


 
Соловьев ©   (2004-08-09 14:19) [7]

TADOQuery+F1
->Using ADO datasets->Using TADODataSet->Using parameters in queries


 
46_55_41_44 ©   (2004-08-09 14:21) [8]

Сделай вот так:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
k:=Edit1.Text;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("SELECT * FROM Kods where Поле1 like:k");
ADOQuery1.Parameters.ParamValues["K"] := k;
ADOQuery1.Active:=true;
end;

С помощью этого запроса ты получишь все записи в таблице Kods,  поле Поле1 которого похоже на к (Edit1.Text)...
Да кстати не путать К, которое ты ввел в Edit1, с К как параметр. Это две разные вещи!!!


 
Sergey13 ©   (2004-08-09 14:21) [9]

2[5] Leons   (09.08.04 14:13)
>k - переменная. Тип - string. Присваивается ей значение edit
к - должна быть переменной ЗАПРОСА (она же параметр) а не локальной переменной твоей программы. Запрос выполняется на сервере и о твоих переменных не знает.

>Хотя вроде все верно.
Все не верно. 8-)


 
Sergey13 ©   (2004-08-09 14:26) [10]

2[8] 46_55_41_44 ©   (09.08.04 14:21)
>С помощью этого запроса ты получишь все записи в таблице Kods,  поле Поле1 которого похоже на к (Edit1.Text)...
Вряд ли? Скорее точно равно.


 
46_55_41_44 ©   (2004-08-09 14:28) [11]


> Вряд ли? Скорее точно равно.

нет... именно похоже )))


 
Leons   (2004-08-09 14:29) [12]

46_55_41_44.

Сделал, но ругается типа параметр К не определен.


 
Соловьев ©   (2004-08-09 14:30) [13]


> нет... именно похоже )))

точно.

> Сделал, но ругается типа параметр К не определен.

между like и :k есть пробел?


 
Leons   (2004-08-09 14:32) [14]

Пробел есть, но ругается.


 
46_55_41_44 ©   (2004-08-09 14:33) [15]

Слушай допиши ВОТ это:
ADOQuery1.Parameters.ParamValues["K"] := k;
Я же тебе написал... А "к" не должна быть пустой строкой!!!!


 
Соловьев ©   (2004-08-09 14:33) [16]

кликни в инспекторе обьектов ADOQuery в поле Parameters - есть параметр k?


 
Sergey13 ©   (2004-08-09 14:33) [17]

211] 46_55_41_44 ©   (09.08.04 14:28)
>нет... именно похоже )))
А мне кажется для "похоже" не хватает некоторых символов. Хотя, с аксес я не работал, но сумнительно чтой-то.


 
46_55_41_44 ©   (2004-08-09 14:35) [18]


> Соловьев ©   (09.08.04 14:33) [16]
> кликни в инспекторе обьектов ADOQuery в поле Parameters
> - есть параметр k?

Он же программно добавляет этот параметр!!! параметр не может там быть!!!


 
Leons   (2004-08-09 14:36) [19]

ADOQuery1.Parameters.ParamValues["K"] := k;
К - есть в Parameters, все равно ругается.
Вот весь код на последний момент

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
 k:string;
begin
k:=Edit1.Text;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.Parameters.ParamValues["K"] := k;
ADOQuery1.SQL.Add("SELECT * FROM Kods where Kod like :k");
Memo1.Lines:=ADOQuery1.SQL;
ADOQuery1.Active:=true;
end;


 
Соловьев ©   (2004-08-09 14:37) [20]


> ADOQuery1.Parameters.ParamValues["K"] := k;
> ADOQuery1.SQL.Add("SELECT * FROM Kods where Kod like :k");

поменять местами


> Он же программно добавляет этот параметр!!! параметр не
> может там быть!!!

да, это я прогнал)


 
Соловьев ©   (2004-08-09 14:38) [21]


> А мне кажется для "похоже" не хватает некоторых символов.
> Хотя, с аксес я не работал, но сумнительно чтой-то.

для того чтобы искать в строке на "похоже" надо добавлять символы % или * в зависимости от провайдера


 
Leons   (2004-08-09 14:49) [22]

Все мои манипуляции с параметрами и сменами мест строк кода ни чего не дали. Все равно пишет - параметр К не найден.


 
Sergey13 ©   (2004-08-09 14:53) [23]

2[21] Соловьев ©   (09.08.04 14:38)
И я про то-же.

2[22] Leons   (09.08.04 14:49)
А не надо в АДО (я не работал с ним) делать нечто вроде Add(Delete)Parameter? В ДОА например надо.


 
Соловьев ©   (2004-08-09 14:53) [24]

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
k:string;
begin
k:=Edit1.Text;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("SELECT * FROM Kods where Kod like :k");
ADOQuery1.Parameters.ParamByName("K").Value := Edit1.Text;
Memo1.Lines:=ADOQuery1.SQL;
ADOQuery1.Active:=true;
end;


 
46_55_41_44 ©   (2004-08-09 15:02) [25]

Какого типа у тебя поле Kod?


 
Leons   (2004-08-09 15:10) [26]

Тип поля - текстовый.


 
46_55_41_44 ©   (2004-08-09 15:18) [27]

попробуй вот так:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
k:string;
begin
k:=Edit1.Text;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("SELECT * FROM Kods where Kod like :k");
ADOQuery1.Parameters.ParamByName("K").Value := #39 + Edit1.Text + #39;
Memo1.Lines:=ADOQuery1.SQL;
ADOQuery1.Active:=true;
end;


 
Leons   (2004-08-09 15:27) [28]

Теперь не ругается, но результат выборки отсутствует.


 
46_55_41_44 ©   (2004-08-09 15:30) [29]

Так... вот сдвинулись с места!
Просто набери такое значение в Edit1.Text, на которое хоть что-то похоже в  поле! ))))
А потом вместо:
ADOQuery1.Parameters.ParamByName("K").Value := #39 + Edit1.Text + #39;
Сделай
ADOQuery1.Parameters.ParamByName("K").Value := #39 + "%" + Edit1.Text + "%" + #39;


 
Leons   (2004-08-09 15:33) [30]

Изменил. Но все равно результат выборки равен 0. Значение брал, которое точно есть.


 
Sergey13 ©   (2004-08-09 15:38) [31]

2[30] Leons   (09.08.04 15:33)
С учетом регистра?


 
46_55_41_44 ©   (2004-08-09 15:39) [32]

Слушай, чего ты мучаешься?
Сделай вот так:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("SELECT * FROM Kods where Kod like " + #39 + "%" + Edit1.Text + "%" + #39; );
Memo1.Lines:=ADOQuery1.SQL;
ADOQuery1.Active:=true;
end;
и все... никаких тебе параметров не надо!!!!!1


 
Соловьев ©   (2004-08-09 15:39) [33]


> DOQuery1.Parameters.ParamByName("K").Value := #39 + Edit1.Text
> + #39;
> Сделай
> ADOQuery1.Parameters.ParamByName("K").Value := #39 + "%"
> + Edit1.Text + "%" + #39;

бред седой кобылы
Если параметры используешь - не надо обрамлять значение кавычками для строковых полей.


 
46_55_41_44 ©   (2004-08-09 15:41) [34]

сделай как показал в этом примере - 46_55_41_44 ©   (09.08.04 15:39) [32]
и скажи ответ!


 
Leons   (2004-08-09 15:44) [35]

Работает на УРА. ОГРОМНОЕ СПАСИБО 46_55_41_44

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("SELECT * FROM Kods where Kod like " + #39 + "%" + Edit1.Text + "%" + #39; );
Memo1.Lines:=ADOQuery1.SQL;
ADOQuery1.Active:=true;
end;
и все... никаких тебе параметров не надо!!!!!1


 
Sergey13 ©   (2004-08-09 15:50) [36]

2[35] Leons   (09.08.04 15:44)
Ну для аксеса то это по барабану вроде, что с ними что без них. Но разобраться то не мешало бы.



Страницы: 1 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.044 c
3-1091984810
Shade
2004-08-08 21:06
2004.09.05
Распечатка в строку в FastReports.


8-1087143736
Karol
2004-06-13 20:22
2004.09.05
Задать движение точки по эллипсу на форме


4-1090302822
acidman
2004-07-20 09:53
2004.09.05
LPT под win2k/XP/NT


1-1092748837
wicked
2004-08-17 17:20
2004.09.05
компоненты c++builder в delphi....


1-1092834830
Phoenix
2004-08-18 17:13
2004.09.05
Индивидуальные иконки в TreeView