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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2013, 19:22   #1
Alginsky
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 30
По умолчанию Ошибка "Empty SQL Statement"

Есть программа сделано на делфи.(кем то сделан) теперь я почти все исправил. только вот там есть функция "фильтрация"(CheckBox). Подключил базу (по моему основан на InterBase. Формать базы *.GDB) поставил галочку на фильтрацию и ничего не происходит, потом убираю галочку вылазит ошибка "Empty SQL Statement" и все база отключаеться и фиг подключишь. Надо перезагрузить что бы включить базу. Как решить эту проблему помогите??

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

Цитата:
Empty SQL Statement
Пустое выражение SQL-запроса. Или попросту - пустой SQL-запрос. Типа как просто слово SELECT вместо SELECT * FROM TABLE ... (возможно, так и есть)

Рассказывайте, как базу подключали (то есть какой путь до сервера писали, до базы). Если возможно - скриншоты чудо-программы в студию.

До того, как галочку на Фильтрацию ставите - все работает или как? Как в идеале должно работать, что фильтровать?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 30.01.2013, 19:51   #3
Alginsky
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 30
По умолчанию





Вот его код
Код:
procedure Tmainform.FilterCancelClick(Sender: TObject);
begin
       case TablesSelector.TabIndex of
       0:begin
               if FilterCancel.Checked=false then
               begin
                      dtm.awaretypes.Close;
                      dtm.awaretypes.SelectSQL.Clear;
                      dtm.awaretypes.SelectSQL.Add(SQL1);
                      dtm.awaretypes.Open;
                      F1:=false;
                      FilterCancel.Checked:=F1;
               end;
         end;
       1:      if FilterCancel.Checked=false then
               begin
                      dtm.wares.Close;
                      dtm.wares.SelectSQL.Clear;
                      dtm.wares.SelectSQL.Add(SQL2);
                      dtm.wares.Open;
                      F2:=false;
                      FilterCancel.Checked:=F2;
             end;
       2: if FilterCancel.Checked=false then
               begin
                      dtm.clients.Close;
                      dtm.clients.SelectSQL.Clear;
                      dtm.clients.SelectSQL.Add(SQL3);
                      dtm.clients.Open;
                      F3:=false;
                      FilterCancel.Checked:=F3;

               end;
       3:  if FilterCancel.Checked=false then
               begin
                      dtm.sales.Close;
                      dtm.sales.SelectSQL.Clear;
                      dtm.sales.SelectSQL.Add(SQL4);
                      dtm.sales.Open;
                      F4:=false;
                      FilterCancel.Checked:=F4;

               end;

       end;

end;

procedure Tmainform.TablesSelectorChange(Sender: TObject);
begin
       case TablesSelector.TabIndex of
       0:FilterCancel.Checked:=F1;
       1:FilterCancel.Checked:=F2;
       2:FilterCancel.Checked:=F3;
       3:FilterCancel.Checked:=F4;
       end;
end;

Последний раз редактировалось Stilet; 30.01.2013 в 20:33.
Alginsky вне форума Ответить с цитированием
Старый 30.01.2013, 20:15   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Какой-то на редкость бессмысленный код:

Код:
if FilterCancel.Checked=false then
begin
  ...
  F1:=false;
  FilterCancel.Checked:=F1;
end;
и так для каждого case. В итоге же FilterCancel.Checked=false всегда. И нигде не увидел dtm.sales.SelectSQL.Close;, которая должна срабатывать по идее, когда убирается фильтр (т.е. отображаются все записи). Вероятно, истина где-то в этой паре косяков.

Попробуйте этот код закомментить и вставить следующее:

Код:
procedure Tmainform.FilterCancelClick(Sender: TObject);
var SQLtext: string;
begin
  case TablesSelector.TabIndex of
    0: SQLText:=SQL1;
    1: SQLText:=SQL2;
    2: SQLText:=SQL3;
    3: SQLText:=SQL4;
  end;

  dtm.awaretypes.Close;

  if FilterCancel.Checked then
    begin
       dtm.awaretypes.SelectSQL.Clear;
       dtm.awaretypes.SelectSQL.Add(SQLText);
       dtm.awaretypes.Open;
    end;

end;

procedure Tmainform.TablesSelectorChange(Sender: TObject);
begin
  FilterCancelClick(Sender);
end;
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 30.01.2013, 20:30   #5
Alginsky
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 30
По умолчанию

Не получилось. Фильтрация по вкладке вообще работать перестал. База подкючаеться но не показывает данные. А фильтрация по чекбоксу сразу выдает прежднюю ошибку уже когда поставил галочку(((
Alginsky вне форума Ответить с цитированием
Старый 30.01.2013, 20:33   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Тогда попробуйте вот так:

Код:
  if not FilterCancel.Checked then
А еще быстрее будет, если Вы к посту прикрепите архив с проектом и файлом *.gdb
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 30.01.2013 в 20:38.
Sciv вне форума Ответить с цитированием
Старый 30.01.2013, 20:39   #7
Alginsky
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 30
По умолчанию

изменить все строки if FilterCancel.Checked=false then на if FilterCancel.Checked then??
Alginsky вне форума Ответить с цитированием
Старый 30.01.2013, 20:42   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

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

Либо вернуть старый вариант и трассировать программу с помощью точки останова в этой процедуре - умеете?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 30.01.2013, 20:43   #9
Alginsky
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 30
По умолчанию

мне кто то сказал что надо настроить базу что бы она всегда редактировалась. как это? может база не дает разрешения на фильтрацию?
Alginsky вне форума Ответить с цитированием
Старый 30.01.2013, 20:49   #10
Alginsky
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 30
По умолчанию

Проект светит не хочется могу ли я вам скинуть в эл почту?? или дать ссылку в личку что ли пожалуйста?
Alginsky вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка "Expecting a valid name" для оператора "<" в JScript Ратибор Редоран JavaScript, Ajax 0 15.12.2011 14:38
Ошибка:является "поле" но используется как "метод" hitman47IT Помощь студентам 0 22.11.2011 20:55
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06
"missing ; before statement" на пустом месте RJ Presto JavaScript, Ajax 3 06.04.2009 14:47