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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2009, 13:36   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так. Значит раскоментируй строки. Поставь бряк на Form15.Query1.Active:=True;.
В Watch добавь Form15.Query1.SQL.Text, когда прога брякнится выложи сюда содержимое этого свойства, однозначно ты запрос неверный формируешь. Ну и если ничего самому не получается то прикрепи сюда весь проект с базой, мож кто-то потестит, и скажет как лучче.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.08.2009, 16:13   #12
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Вот, пришел к такому коду:
Код:
procedure TForm15.BitBtn1Click(Sender: TObject);
begin
 with  Form15.Query1 do
 begin
  Form15.Query1.Active:=False;
  Form15.Query1.SQL.Clear;
  Form15.Query1.SQL.Add('SELECT DISTINCT Pred_jur,Chetvert,God_jur,Klass,Data,Mark_2,Mark_3,Mark_4,Mark_5');
  Form15.Query1.SQL.Add('FROM jur');

{Pred_jur}
  Form15.DBGridEh1.Columns[0].Visible:= Form15.CheckBox7.Checked;
{Chetvert}
  Form15.DBGridEh1.Columns[1].Visible:= Form15.CheckBox8.Checked;
{God_jur}
  Form15.DBGridEh1.Columns[2].Visible:= Form15.CheckBox6.Checked;
{Klass}
  Form15.DBGridEh1.Columns[3].Visible:= Form15.CheckBox5.Checked;
{Data}
  Form15.DBGridEh1.Columns[4].Visible:= Form15.CheckBox9.Checked;
{Mark_2}
  Form15.DBGridEh1.Columns[5].Visible:= Form15.CheckBox1.Checked;
{Mark_3}
  Form15.DBGridEh1.Columns[6].Visible:= Form15.CheckBox2.Checked;
{Mark_4}
  Form15.DBGridEh1.Columns[7].Visible:= Form15.CheckBox3.Checked;
{Mark_5}
  Form15.DBGridEh1.Columns[8].Visible:= Form15.CheckBox4.Checked;

  Form15.Query1.SQL.Add('WHERE Fam_jur= '+QuotedStr(Form15.Edit3.Text)+
                          ' AND Imy_jur= '+QuotedStr(Form15.Edit4.Text)+
                          ' AND Otche_jur= '+QuotedStr(Form15.Edit5.Text)+
                          ' AND Data BETWEEN '+QuotedStr(Form15.Edit2.Text)+' AND '+QuotedStr(Form15.Edit6.Text)+ 
                          ' AND Klass='+QuotedStr(Form15.ComboBox3.Text)+
                          ' AND God_jur='+QuotedStr(Form15.ComboBox1.Text)+
                          ' AND Pred_jur='+QuotedStr(Form15.ComboBox2.Text)+
                          ' AND Chetvert='+QuotedStr(Form15.DBLookupComboboxEh2.Text)+
                          '');
   Form15.Query1.Active:=True;
 end;
end;
Работа данного кода меня устраивает. Но есть один минус, который бы мне хотелось убрать. Нужно, чтобы если не выбрано какое-то условие (CheckBox), то программа бы не реагировало на то, что в это окошко не введено значение и там пусто. Как этого добиться? Помогите подправить мой код.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 06.08.2009, 18:51   #13
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

хорошо бы конечно чтобы кверя понимала макросы, но если не умеет, то надо разбить условия по отдельности
типа такого
Код:
Form15.Query1.SQL.Add('WHERE 0=0 ');
if Form15.Edit3.Text<>'' then
  Form15.Query1.SQL.Add(' AND Fam_jur= '+QuotedStr(Form15.Edit3.Text));
  .....
if Form15.ComboBox3.Text<>'' then
  Form15.Query1.SQL.Add(' AND Klass='+QuotedStr(Form15.ComboBox3.Text);
......
// etc.
soleil@mmc вне форума Ответить с цитированием
Старый 06.08.2009, 18:59   #14
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А что значит эта строчка:
Код:
('WHERE 0=0 ')
???
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 06.08.2009, 20:44   #15
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
А что значит эта строчка:
Код:
('WHERE 0=0 ')
???
а попробуй выполнить запрос без нее

но если тебя смущают именно нули, то можешь написать так
Код:
('WHERE 1=1 ')
и даже так
Код:
('WHERE 2=2 ')
могу продолжить...
soleil@mmc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БД, Запрос на приход/расход, не получается задействовать несколько обьектов kvadratnt Помощь студентам 0 06.06.2009 15:23
Как выполнить SQL запрос, записанный в Memo artemavd БД в Delphi 8 26.03.2009 17:41
не получается запрос с inner join :mad: Только_Учусь SQL, базы данных 16 21.07.2008 09:40
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50