Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите. Вопрос по ЗАПРОСУ, там вопрос про оператор like 
:(
    Опции темы
Сэт
Дата 14.12.2004, 17:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Люди помогите, очень надо. Объясните почему не работает запрос?

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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Во-первых - хорошо бы указать что за SQL используется.

Во-вторых - ну дальше вопросы явно по Delphi - зачем их в этот топик кидать ?
PM MAIL WWW ICQ   Вверх
Bes
Дата 15.12.2004, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 2
Всего: 7



поробуй вместо % *

и вместо " '

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

Это сообщение отредактировал(а) Bes - 15.12.2004, 07:46
PM MAIL   Вверх
Akella
Дата 18.12.2004, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



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;


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0605 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.