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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2013, 01:04   #1
andrei4991
 
Регистрация: 31.05.2013
Сообщений: 5
По умолчанию no sql statement available

Делаю курсач. Такая проблема, создается библиотека в dbgrid и нужно выдавать талон. Когда открываешь форму талона там можно ввести ФИО, адрес и тд. и по запросу через TDBLookupComboBox в таблицу dbgrid нужно выдать книгу. Но у меня не получается , вылазит ошибка "qur1:no sql statement available".
Вложения
Тип файла: rar Zadacha.rar (849.0 Кб, 6 просмотров)
andrei4991 вне форума Ответить с цитированием
Старый 31.05.2013, 06:49   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Так Вы на свой запрос-то внимательно поглядите:

Код:
     try
          Qry1.Active:=false;
          Qry1.ParamByName('Name').AsString:=dblkcbb1.Text;
          Qry1.Active:=true;

     except
        on error: EDatabaseError do begin
           MessageDlg('Ïðè âûïîëíåíèè çàïðîñà ïðîèçîøëà îøèáêà:'+#13+#13+
           error.Message ,mtError,[mbOK],0);
        end;
     end;
Ничего не забыли, как думаете?

Подсказка: чтоб запрос выполнился, мало передать в него только параметр
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 31.05.2013, 11:51   #3
andrei4991
 
Регистрация: 31.05.2013
Сообщений: 5
По умолчанию

Даже и не знаю... В другой задаче код такой же, все работает.
andrei4991 вне форума Ответить с цитированием
Старый 31.05.2013, 12:09   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

Ну тогда все в порядке.
eval вне форума Ответить с цитированием
Старый 31.05.2013, 12:45   #5
andrei4991
 
Регистрация: 31.05.2013
Сообщений: 5
По умолчанию

Почему тогда ошибка вылазит?
andrei4991 вне форума Ответить с цитированием
Старый 31.05.2013, 12:58   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

а почему её не вылазить то?
Цитата:
Код:
Qry1.Active:=false;
Qry1.ParamByName('Name').AsString:=dblkcbb1.Text;
Qry1.Active:=true;
а сам запрос то где??
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 31.05.2013, 13:08   #7
andrei4991
 
Регистрация: 31.05.2013
Сообщений: 5
По умолчанию

Это и есть запрос.
andrei4991 вне форума Ответить с цитированием
Старый 31.05.2013, 13:11   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

Ну тогда все в порядке.
eval вне форума Ответить с цитированием
Старый 31.05.2013, 13:23   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
а сам запрос то где??
В принципе так можно делать. Запрос задан каким-то способом и потом не меняется. Закрываем квери, меняем значения параметров, открываем. Все Ok. Но лучше во избежание ошибок так не делать, задавая текст запроса каждый раз заново. Исходник не смотрел, может там действительно запрос вообще не задан
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 31.05.2013 в 13:26.
Аватар вне форума Ответить с цитированием
Старый 31.05.2013, 13:45   #10
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Исходник не смотрел, может там действительно запрос вообще не задан
Я смотрел - он действительно не задан. Поле SQL.Text абсолютно пустое что в свойствах объекта, что в программе.

andrei4991, запрос представляет из себя текст вида:

Код:
SELECT <список полей> FROM <таблица> WHERE <условие отбора>
Условие отбора может быть как напрямую задано типа:

Код:
WHERE <поле>=<значение>
так и через параметр:

Код:
WHERE <поле>=:<имя параметра>
Все это добро хранится в свойстве SQL.Text компонента Query и может задаваться как в коде программы

Код:
Query1.SQL.Text:='<текст запроса>';
так и в свойствах самого компонента на форме.

В Вашем случае имеется параметр, но нет текста самого запроса, на что и ругается СУБД при попытке его выполнить (то есть выполнить команду qry.Open).

Цитата:
В другой задаче код такой же, все работает.
Вероятно, запрос в той задаче прописан в свойстве SQL объекта Query, а не в коде, потому там и работает.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
empty sql statement Dozent БД в Delphi 2 19.02.2013 10:25
Ошибка "Empty SQL Statement" Alginsky БД в Delphi 12 30.01.2013 22:47
Ошибка before statement NARKOM JavaScript, Ajax 0 27.09.2011 09:12
No SQL statement available MixanMM БД в Delphi 2 07.06.2011 07:53
SQL:Statement too long Ks2010 БД в Delphi 44 21.07.2010 18:16