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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2012, 19:26   #1
Kurd57
 
Регистрация: 27.11.2011
Сообщений: 4
Злость Сравнение через DBGrid

Все привет. Столкнулся с проблемой, понимаю что моих знаний не хватает, поэтому пишу сюда. Суть: делаю сравнение оружия по различным характеристикам. Использую MySql в myphpadmin и Дельфу 7-ую. АДОКоннекшен-АДОКуэри-ДатаСоурс-ДБГрид. На форме два комбо бокса(один выбирает вид вооружения, второй выводит все что есть по выбранному ранее), кнопка которая добавляет выделенный элемент к сравнению и ДБГрид.



Я выбираю пистолеты, вот код процедуры которая загружает названия.

Код:
procedure TForm2.ComboBox2Change(Sender: TObject);
var i: integer;
begin
  if ComboBox2.Items[ComboBox2.ItemIndex]='Пистолеты' then
  begin
   for i:=1 to 20 do
   begin
    try
      with DataModule1.ADOquery1 do
        begin
          SQL.Clear;
          SQL.Add('SELECT * FROM Pistols where id='+IntToStr(i));
          Active:=True;
        end;
    except
     on e:Exception do
    end;
    ComboBox1.Items.Add(DataModule1.ADOQuery1.Fields[1].Text);
   end;
  end;
end;


Дальше я кликаю по интересующей меня модели и по кнопке, например, по СПС.



И потом кликаю по другой модели и по кнопке, чтобы добавить ее к сравнению.



ДБГрид перерисовывается... Пытаюсь сохранять то, что выбрал, включал эдитмод у датасета, но это не помогло. Вот код процедуры.

Код:
procedure TForm2.Button1Click(Sender: TObject);
begin
s:=combobox1.Items[combobox1.ItemIndex];
   try
      with DataModule1.ADOquery1 do
        begin
          SQL.Clear;
          SQL.Add('SELECT * FROM Pistols WHERE title LIKE ''%'+s+'%''');
          Active:=true;
        end;
    except
     on e:Exception do
    end;
end;
За пол дня с SQL и этой процедурой сломал голову, не могу понять как это сделать и все... Понимаю что как-то можно...Помогите написать запрос.

Последний раз редактировалось Kurd57; 26.05.2012 в 09:16. Причина: Уточнение причины
Kurd57 вне форума Ответить с цитированием
Старый 27.05.2012, 09:48   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

сколько позиций может быть добавлено для сравнения: две? больше двух?

решений может быть несколько.
если сравниваться должны строго ДВА - то почему бы не сделать ДВА комбобокса?
если же количество сравниваемых моделей больше двух,
тогда я бы формировал запрос на лету - к имеющемуся запросу в конце добавлял
SQL.Add(' OR title like ''%'+s+'%''')
вот так, например:
Код:
  s:=combobox1.Items[combobox1.ItemIndex];
  with DataModule1.ADOquery1 do
        begin
          ADOquery1.Close;
          if Pos('WHERE', SQL.Text) = 0 then 
             SQL.Text := 'SELECT * FROM Pistols WHERE title LIKE ''%'+s+'%'''
          else 
             SQL.Add(' OR title like ''%'+s+'%''');
          ADOquery1.Open;
        end;
p.s. а вот то, что вы через try .. except подавляете вывод возникающих ошибок - это не комильфо! Это обязательно сыграет с вами злую шутку - возникнет какая-та банальная ошибка, которую Вы не будете видеть и долго недоумевать, почему нажатие на кнопку ничего не делает...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.05.2012, 17:32   #3
Kurd57
 
Регистрация: 27.11.2011
Сообщений: 4
По умолчанию

Спасибо большое! Даже не знаю как отблагодарить!
Жму Весы!
Kurd57 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение строк через strcmp(), Си++ Evielle Помощь студентам 12 28.04.2012 17:14
Сравнение striggrid c dbgrid grafgrial Общие вопросы Delphi 13 11.10.2010 12:25
Сравнение edit and dbgrid grafgrial Общие вопросы Delphi 9 09.10.2010 16:11
Отображение через несколько DBGRID Sparky БД в Delphi 10 26.08.2009 10:13
Изменение БД через DBGrid Vavik БД в Delphi 17 06.05.2009 17:36