Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];

Вниз

Динамический запрос к таблице 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.04 c
1-1092847643
Aleksandr.
2004-08-18 20:47
2004.09.05
Как указатель превратить в строку?


11-1080221274
user
2004-03-25 16:27
2004.09.05
Как поднять скрол в верхнюю позицию не мышкой а програмно?


1-1093234634
Fynjy1984
2004-08-23 08:17
2004.09.05
Проблема с разделителем


8-1087747242
Илья
2004-06-20 20:00
2004.09.05
MIDI - работа на низком уровне


14-1092725104
CRACKISH
2004-08-17 10:45
2004.09.05
ADO?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский