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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 00:25   #1
Katrina_89
 
Регистрация: 06.04.2010
Сообщений: 7
По умолчанию Поиск в Delphi

В общем дело такое. нужно осуществить поиск данных в таблице(). я попыталась описать кнопку поиска, но почему то все безрезультатно, ошибок программа не выдает, но и поиска не производит.БД в Access, она уже связана с делфи, остается только поиск.
вот код нажатия кнопки поиск:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if RadioButton1.Checked then
 Edit1.Text:= find ;
  if find <> '' then begin
    form1.ADOQuery1.Close;       
    form1.ADOQuery1.SQL.Clear;  
    form1.ADOQuery1.SQL.Add('SELECT * FROM knigi WHERE Avtor = "'+find+'"'); 
   form1.ADOQuery1.Open;         
 end;
    if form1.ADOQuery1.RecordCount <> 0 then /
   form1.DataSource1.DataSet:=form1.ADOQuery1 
	else begin 
	ShowMessage('Запись не найдена.'); 
	form1.ADOQuery1.Close; 
	form1.ADOQuery1.SQL.Text := 'SELECT * FROM [knigi]'; 
	form1.ADOQuery1.Open; //выполняем то, что выше SELECT * FROM [books]
end; 
end; 

end.

Последний раз редактировалось Stilet; 07.04.2010 в 07:41.
Katrina_89 вне форума Ответить с цитированием
Старый 07.04.2010, 05:43   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А если использовать FindFirst, FindNearest, FindNext?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 07.04.2010, 07:44   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
form1.ADOQuery1.SQL.Add('SELECT * FROM knigi WHERE Avtor = "'+find+'"');
А сам то запрос если в Акцессе выполнить он что-нибудь выдает?
Цитата:
form1.ADOQuery1.SQL.Text := 'SELECT * FROM [knigi]';
form1.ADOQuery1.Open; //выполняем то, что выше SELECT * FROM [books]
А это что? Смысл такого запроса?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2010, 11:42   #4
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

может для начала попытаемся избавиться от form1, возле
Цитата:
form1.ADOQuery1......
судя из наведённой выше процедуры, и кнопка, и едит, и квери все на одной форме.
Тогда можно переделать процедуру таким образом:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if RadioButton1.Checked 
   then
    begin
     if trim(edit1.text) <> '' 
      then 
       begin
         // предлагаю заменить ADOQuery1 на ADODataset1
        if adodataset1.active
         then adodataset1.active:=false;
        adodataset1.commandtype:=cmdText;// теперь  adodataset1 можно будет использовать как ADOQuery1    
        adodatset1.commandtext:='SELECT * FROM knigi WHERE Avtor ='+quotedstr(edit1.text);// текст запроса (равносильно ADOQuery1.SQL.Add('SELECT * ..........') )
        adodataset1.active:=true; 
        if not(adodataset1.isempty) // проверяем пустой или нет набор
         then
           begin
             DataSource1.DataSet:=ADODataset1
           end
         else
           begin
             showmessage('Запись не найдена');
             if adodataset1.active
              then adodataset1.active:=false; 
             adodataset1.commandtype:=cmdText;
             adodataset1.commandtext:='SELECT * FROM knigi';
             adodataset1.active:=true;
           end; 
       end;
     end;
end.
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 07.04.2010, 13:09   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

во-первых, смутило вот это
Код:
Edit1.Text:= find ;
при том что сама переменная в этом блоке никак не описана и непонятно откуда там берется значение
во-вторых, вот это
Код:
if form1.ADOQuery1.RecordCount <> 0 then
на больших объемах само по себе может долго работать

и Dark_Spirit уже показал как можно улучшить ваши потуги
soleil@mmc вне форума Ответить с цитированием
Старый 07.04.2010, 18:18   #6
grom333
Форумчанин
 
Аватар для grom333
 
Регистрация: 21.10.2008
Сообщений: 337
По умолчанию

Могу подсказать хороший поиск только не по кнопке а по поисковым полям.
Лучше быть последним из львов, чем первым среди шакалов.
Мой чат
community on struggle with zoomics
grom333 вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск решения на Delphi SHOP Фриланс 6 26.03.2010 12:11
Поиск файлов (Delphi) VadEr Помощь студентам 4 05.12.2009 21:08
Поиск по индексу (Delphi) VadEr Помощь студентам 0 06.10.2009 19:03
Поиск по анкете. Delphi JuliaBelochka Помощь студентам 1 26.04.2009 15:47
поиск Borland Delphi 7 n fh dxdj Помощь студентам 1 25.10.2007 19:33