Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Помогите. Вопрос по ЗАПРОСУ


Автор: Сэт 14.12.2004, 17:07
Люди помогите, очень надо. Объясните почему не работает запрос?

Query1.SQL.Add('SELECT Имя From basic where Имя like "%s2" ')
Хочу использовать для поиска в таблице баз данных. Все найденное должно отобразится в ListBox после нажатия на батон. При использовании ‘’, говорит, что % sux,
А при “” вообще ничего не говорит и не делает.
Это на всякий случай:
Имя-имя поля
Basic-таблица баз данных
S2- текст вводимый в EditBox.
И еще как сделать так, что бы при нажатии на строке в ListBox’e заполнялись Edit’ы заполнялись данными из таблицы, типа как из DBGrid.
procedure TForm5.DBGrid1DblClick(Sender: TObject);
begin
Edit1.Text:= Table1.FieldByName('Фамилия').AsString;
Edit2.Text:= Table1.FieldByName('Имя').AsString;
Edit3.Text:= Table1.FieldByName('Отчество').AsString;
…………………………………………….
У меня из ListBox’a только первая строка выводется.

Автор: AntonSaburov 14.12.2004, 17:20
Во-первых - хорошо бы указать что за SQL используется.

Во-вторых - ну дальше вопросы явно по Delphi - зачем их в этот топик кидать ?

Автор: Bes 15.12.2004, 07:45
поробуй вместо % *

и вместо " '

и еще ты как строку формируешь программно?
покажи код, там с кавычками фишка.

Автор: Akella 18.12.2004, 11:19
edFind.Text - TEdit - сюда вводим привычным образом текст, например "иван*" или "*авто*" без кавычек, конечно, в процедуре звездочки заменяются на "%"
sbFilter - TStatusBar
dsPhone - TDataSource
tPhone - TTable
qFilter - TQuery
cbFind - TComboBox (Items = № телефона, Абонент, Улица, № дома, № квартиры)
Код

procedure TfmFind.bbFindClick(Sender: TObject);
Var
S,dom,kv:String;
begin
 with fmMain do begin
   if edFind.Text='' then begin
     beep;
     ShowMessage('Отсутствует текст для поиска');
     edFind.SetFocus;
   end else
   begin
     sbFilter.SimpleText:='Идет фильтрация...';
     tPhone.Close;
     dsPhone.DataSet:=qFilter;//переключаем сетку на TQuery (при закрытии формы - обратно на TTable)
     qFilter.DisableControls;
     //заменяем знак звезды на знак процента
     s:=StringReplace(edFind.Text,'*', '%', [rfReplaceAll]);
     Case cbFind.ItemIndex of
       0: begin
            qFilter.Close;
            qFilter.SQL.Clear;
            qFilter.SQL.Add('SELECT ID, TEL, NAM, UL, D, K, MEMO FROM "Tel_db.DB" Tel_db WHERE tel LIKE '+QuotedStr(s));
            qFilter.Prepare;
            qFilter.Open;
          end;
       1: begin
            qFilter.Close;
            qFilter.SQL.Clear;
            qFilter.SQL.Add('SELECT ID, TEL, NAM, UL, D, K, MEMO FROM "Tel_db.DB" Tel_db WHERE nam LIKE '+QuotedStr(s));
            qFilter.Prepare;
            qFilter.Open;
          end;
       2: begin
            if edDom.Text = '' then edDom.Text:='*';
            if edKvart.Text = '' then edKvart.Text:='*';            
            dom:=StringReplace(edDom.Text,'*', '%', [rfReplaceAll]);
            kv:=StringReplace(edKvart.Text,'*', '%', [rfReplaceAll]);

            qFilter.Close;
            qFilter.SQL.Clear;
            qFilter.SQL.Add('SELECT ID, TEL, NAM, UL, D, K, MEMO FROM "Tel_db.DB" Tel_db WHERE ul LIKE '+QuotedStr(s)+' AND D LIKE '+QuotedStr(Dom)+ ' AND K LIKE '+QuotedStr(kv));
            qFilter.Prepare;
            qFilter.Open;
          end;
       3: begin
            qFilter.Close;
            qFilter.SQL.Clear;
            qFilter.SQL.Add('SELECT ID, TEL, NAM, UL, D, K, MEMO FROM "Tel_db.DB" Tel_db WHERE D LIKE '+QuotedStr(s));
            qFilter.Prepare;
            qFilter.Open;
          end;
       4: begin
            qFilter.Close;
            qFilter.SQL.Clear;
            qFilter.SQL.Add('SELECT ID, TEL, NAM, UL, D, K, MEMO FROM "Tel_db.DB" Tel_db WHERE K LIKE '+QuotedStr(s));
            qFilter.Prepare;
            qFilter.Open;
          end;

     end;//case
     qFilter.EnableControls;
     sbFilter.SimpleText:='Фильтрация закончена';
   end;
 end;
end;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)