Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.04.2012, 15:45
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию Изменение условий запроса с помощью Edit

Помогите, пожалуйста, требуется изменить условия запроса на форме во время работы. Предполагается выбирать имя поля из ComboBox, а название записи вбивать в Edit. Как правильно написать в SQL запросе? Вот такая запись является неверной:
Код:
procedure TForm3.Button1Click(Sender: TObject);
Var
Pole, Znach: String;
begin
Pole:=ComboBox1.Text;
Znach:=Edit1.Text;
with Form3.Query1 do
        begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM OsSklad');
SQL.Add('WHERE');
SQL.Add('"Pole"="Znach"'); <---как правильно написать надо??? Подскажите ситаксис
Open;
        end;
Админ: Пользуемся тегами для оформления кода.

Заранее спасибо

Последний раз редактировалось Admin, 19.04.2012 в 15:49.
Ответить с цитированием
  #2  
Старый 19.04.2012, 16:16
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

так, если нужно сравнить числа:
Код:
SQL.Add('SELECT *');
SQL.Add('FROM OsSklad');
SQL.Add('WHERE');
SQL.Add([Pole]=1')
или так, если нужно сравить строки
Код:
SQL.Add('SELECT *');
SQL.Add('FROM OsSklad');
SQL.Add('WHERE');
SQL.Add([Pole]=''text''')
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 19.04.2012, 17:39
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

Не работает((, объясню еще раз какова задача. В ComboBox из списка вибирается поле(Name, Type, Pol, Cena и др.) - переменная Pole:String, в Edit заносится содержание поля - переменная Znach:String, после нажатия на кнопку в таблице появляются записи удовлетворяющие условию.
Ответить с цитированием
  #4  
Старый 19.04.2012, 18:31
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
По умолчанию

Использую такой код:
Код:
  if sEdit1.Text = '' then exit;
  if sCheckBox1.Checked = True then a := ''
    else a := '%';
  if sComboBox1.ItemIndex=0 then 
    Exit;
  pole := sComboBox1.Text;
  SQL.Text := 'SELECT * FROM [Таблица] WHERE '+ pole + ' Like ''' + a + sEdit1.Text + '%''';
Примерно так.
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому
Ответить с цитированием
Этот пользователь сказал Спасибо Klassenas за это полезное сообщение:
AlexGTX (22.04.2012)
  #5  
Старый 22.04.2012, 09:40
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

Спасибище!!!!!!! То что надо!!! Приятно работать с профессионалами!!!!!
Ответить с цитированием
  #6  
Старый 19.04.2012, 18:34
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Код:
procedure TForm3.Button1Click(Sender: TObject);
begin
with Form3.Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select *');
    SQL.Add('from OsSklad');
    SQL.Add('where ['+ComboBox1.Text+'] = '+QuotedStr(Edit1.Text));
    Open;
  end;
end;
А вообще как отметил Страдалецъ надо еще учитывать тип выбранного поля.
__________________
Google в помощь
Ответить с цитированием
  #7  
Старый 19.04.2012, 18:52
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

Спасибо за быстрый ответ (всем), похоже на то что мне надо, но не работет, может какой-нибудь шаблон есть, который регламентирует символику в этом случае. В идеале мне нужно это:
SQL.Add('WHERE');
SQL.Add('ComboBox1.Text = QuotedStr(Edit1.Text)); только осталось правильно записать, обозначить нужными символами.
Ответить с цитированием
  #8  
Старый 19.04.2012, 19:38
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

была уже где-то данная тема, в лом искать.

в событии выполнения напиши:

Код:
case Combobox1.ItemIndex of
 0:FindName;
 1:findType;
 2:findPol;
 3:findCena;
 end;

где например FindName процедура поиска по имени в например может быть такой код:
Код:
procedure FindName;
begin
with Form3.Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select *');
    SQL.Add('from OsSklad');
    SQL.Add('where ['Name'] = '+QuotedStr(Edit1.Text));
    Open;
  end;
end

аналогично с другими полями.

данный метод не универсален, но если, в принципе, полей не так уж и много то вполне может подойти.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:54.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025