Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2007, 21:33   #1
EVG44
 
Регистрация: 20.10.2007
Сообщений: 4
По умолчанию Не работает SQL запрос

Прошу подсказать в чем ошибка. Имеется таблица Citr, нужно подсчитать сколько записей находится в поле статья
соответствуюших значению введенному в ComboBox1. компилируется без ошибок, может быть ошибка гдето в отображении.
Привожу процедуру полностью
procedure TForm1.BitBtn2Click(Sender: TObject);
var
os: string; //поле ввода
begin
os:=form1.ComboBox1.Text;
Form1.ADOQuery2.Active:=False;
Form1.ADOQuery2.SQL.Clear;
Form1.ADOQuery2.SQL.ADD('SELECT COUNT(*)');
Form1.ADOQuery2.SQL.ADD('FROM Citr');
Form1.ADOQuery2.SQL.ADD ('WHERE Статья LIKE '''+os+'''');
Form1.ADOQuery2.Open;
if form1.ADOQuery2.RecordCount <> 0 then
StatusBar1.Panels[1].Text := ADOQuery2.Fields[1].AsString;
if form1.ADOQuery2.RecordCount <> 0 then
StatusBar1.Panels[0].Text := 'Статья: ' + os
else begin
ShowMessage('По Вашему запросу ничего не найдено.');
end;
end;
EVG44 вне форума Ответить с цитированием
Старый 21.10.2007, 01:57   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
компилируется без ошибок
Так компилятор SQL не проверяет, это для него просто строковые переменные.
А насчет того, что SQL ничего не находит? Уже сколько раз говорил - дабы избежать лишнего геморроя, не используйте русские названия таблиц и полей в них...
Цитата:
if form1.ADOQuery2.RecordCount <> 0 then
А что, RecordCount бывает меньше нуля???
Цитата:
os:=form1.ComboBox1.Text;
Скорее всего так:
os:='%'+form1.ComboBox1.Text+'%';
а вот в вашем варианте оператор LIKE практически и не работает.

Последний раз редактировалось mihali4; 21.10.2007 в 02:17.
mihali4 вне форума Ответить с цитированием
Старый 21.10.2007, 09:27   #3
EVG44
 
Регистрация: 20.10.2007
Сообщений: 4
По умолчанию

Заменил поле 'Статья'на 'Stat' исправил как Вы рекомендовали os.Пишет:
Попытка выполнить запрос, который не включает указанное выражение 'Stat' как часть
статистической функции или группы.
EVG44 вне форума Ответить с цитированием
Старый 21.10.2007, 11:02   #4
EVG44
 
Регистрация: 20.10.2007
Сообщений: 4
По умолчанию

Извиняюсь, Заменил поле 'Статья'на 'Statija' исправил os как Вы рекомендовали.Пишет:
параметр Statija не имеет значения по умолчанию. Но у меня значение по умолчанию установлено на os.
EVG44 вне форума Ответить с цитированием
Старый 21.10.2007, 22:28   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Проверил у себя (на DBDEMOS):
Код:
var os: string;
begin
os:='%e%';
Query1.Close;
Query1.SQL.Text:='';
Query1.SQL.Add('select count(*)');
Query1.SQL.Add('from clients');
Query1.SQL.Add('where first_name like'''+os+'''');
Query1.Open;
end;
Отрабатывает нормально...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает перекрестный запрос Unlimit БД в Delphi 2 15.05.2008 18:26
Не работает MS-SQL-запрос pkv БД в Delphi 7 01.11.2007 14:32
Не работает запрос Prisian БД в Delphi 1 30.08.2007 17:33
sql запрос работает неверно :( Vasya БД в Delphi 4 26.08.2007 14:59
Запрос неправильно работает... yulia БД в Delphi 0 27.05.2007 20:41