• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Сообщения пользователю

  • Автор темы vas
  • Дата начала
Статус
Закрыто для дальнейших ответов.
V

vas

Доброго времени суток. Столкнулся с такой проблемой. Delphi7,ADO. Осуществляю выборку из ADOQuery:

procedure TForm4.SpeedButton4Click(Sender: TObject);
begin
if Length(Edit1.Text)>0 then
begin
DataModule6.Query_Country.Active:=false;
DataModule6.Query_Country.SQL.Clear;
DataModule6.Query_Country.SQL.Add('SELECT * FROM Country WHERE Country LIKE '+#39+Edit1.Text+'%'+#39);
DataModule6.Query_Country.Active:=true;
end;

Все супер работает.
Если такой записи нет мне надо пользователю сообщить,что то,что он ищет,не существует в базе,т.е. вывести сообщение типа:"Такой записи нет!"
Добавляю код:

begin
if MessageBox(Application.Handle,
PChar('Такой записи нет!'),
PChar ('Архив ver.1.0'),MB_OK+MB_ICONINFORMATION)=IDOK then
begin
DataModule6.Query_Country.Active:=false;
DataModule6.Query_Country.SQL.Clear;
DataModule6.Query_Country.SQL.Add('SELECT * FROM Country');
DataModule6.Query_Country.Active:=true;
end;

Вот тут-то и начинается проблема. Ввожу имеющееся в справочнике значение, программа отрабатывает, показывает запись, но следом идет сообщение "Такой записи нет!".
Подскажите,пожалуйста, что я делаю неправильно.
Спасибо
 
V

V88

А не проще бы было просто проверить пустой или нет Query:
Код:
if DataModule6.Query_Country.IsEmpty // если пустой
then begin 
MessageBox('Такой записи нет!',mtInformation,[mbOk],0);
.... //то сообщаем пользователь, что 'Такой записи нет!'
end;
 
V

vas

Спасибо всем ответившим, вопрос закрыт следующим образом:
Код:
procedure TForm4.SpeedButton4Click(Sender: TObject);
begin
if Length(Edit1.Text)>0 then
with DataModule6.Query_Country do
begin
Active:=false;
SQL.Clear;
SQL.Add('SELECT * FROM Country WHERE Country LIKE '+AnsiQuotedStr(Edit1.Text+'%', ''''));
Active:=true;
if IsEmpty then 
Application.MessageBox('Такой записи нет', 'Архив ver.1.0', MB_OK+MB_ICONINFORMATION);

end;
end;
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!