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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.09.2008, 13:23
Аватар для artemavd
artemavd artemavd вне форума
Начинающий
 
Регистрация: 05.08.2008
Сообщения: 115
Репутация: 12
Печаль Где ошибка в моем коде?

Этот запрос не работает:
Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
 f:string;
begin
 f:=inputbox('Поиск по БД','Введите фамилию человека','');
if f <> '' then
  begin
  with Form1.Query1 do begin
  close;
    SQL.Add('SELECT *');
    SQL.Add('FROM MobNomera');
    SQL.Add('WHERE LIKE Fam %'+f+'%');
    SQL.Add('ORDER BY Name');
  open;
  end;
end;
end;
Нужно чтобы пользователь вводил фамилию и имя, и после нажатия на кнопку в таблице выделялась либо вся строка с фамилией именем и номером, либо только ячейка с номером искомого человека. Но код приведенный выше выдает ошибку:
<
Invalid use of keyword.
Token: WHERE
Line Number: 3
>
Что делать?
Ответить с цитированием
  #2  
Старый 22.09.2008, 13:28
mik mik вне форума
Прохожий
 
Регистрация: 17.09.2008
Сообщения: 33
Репутация: 10
По умолчанию

Код:
'WHERE Fam LIKE %'+f+'%'
Ответить с цитированием
  #3  
Старый 22.09.2008, 15:52
Qwed86 Qwed86 вне форума
Новичок
 
Регистрация: 12.09.2008
Сообщения: 66
Репутация: 10
По умолчанию

Вобщем надо так
Код:
sql.Add('where fam like '''+'%'+f+'%''');
Или так
Код:
sql.Add('where fam like '+quotedstr('%'+f+'%'));
Ответить с цитированием
  #4  
Старый 22.09.2008, 16:42
Аватар для artemavd
artemavd artemavd вне форума
Начинающий
 
Регистрация: 05.08.2008
Сообщения: 115
Репутация: 12
По умолчанию

Цитата:
Сообщение от Qwed86
Вобщем надо так
Код:
sql.Add('where fam like '''+'%'+f+'%''');
Я попробовал так сделать. Запускается и компилируется, но когда я ему ввожу в строку поиска фамилию и имя или только фамилию или только имя, то он не выводит в ответ сообщение с результатом запроса (т.е. с номером).
Пробовал так:
Код:
sql.Add('where fam like '+quotedstr('%'+f+'%'));
Но программа не компилируется и не запускается из-за этой функции quotedstr. Может можете что то предложить по первому варианту?
Ответить с цитированием
  #5  
Старый 22.09.2008, 16:59
Qwed86 Qwed86 вне форума
Новичок
 
Регистрация: 12.09.2008
Сообщения: 66
Репутация: 10
По умолчанию

Понятия не имею как из-за неё не запускается
Ну тогда используй 1 вариант. У меня оба работают.
Что по нему предлагать по 1 варианту?
У тебя было:
Код:
'WHERE LIKE Fam %'+f+'%'
а надо
Код:
'where fam like '''+'%'+f+'%'''
Синтаксис LIKE
Цитата:
WHERE <имя_столбца> LIKE <образец>
Ответить с цитированием
  #6  
Старый 22.09.2008, 17:02
mik mik вне форума
Прохожий
 
Регистрация: 17.09.2008
Сообщения: 33
Репутация: 10
По умолчанию

Да, забыл про кавычки:
Код:
'WHERE Fam LIKE ''%'+f+'%'''

или:
Код:
'WHERE Fam LIKE "%'+f+'%"'

Какой результат выдает запрос?
Ответить с цитированием
  #7  
Старый 22.09.2008, 17:21
Аватар для artemavd
artemavd artemavd вне форума
Начинающий
 
Регистрация: 05.08.2008
Сообщения: 115
Репутация: 12
По умолчанию

Попрежнему не появляется сообщение с результатом(. Может вы приведете полный код? Может я что неправильно вписываю. Напиши пожалуйста полностью вместе с кодом. И напишите плиз как сделать чтобы результат выводился пользователю). Ответ в любом варианте: Label, Edit, или просто сообщение.
Ответить с цитированием
  #8  
Старый 22.09.2008, 17:25
mik mik вне форума
Прохожий
 
Регистрация: 17.09.2008
Сообщения: 33
Репутация: 10
По умолчанию

Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
 f:string;
begin
 f:=inputbox('Поиск по БД','Введите фамилию человека','');
if f <> '' then
  begin
  with Form1.Query1 do begin
  close;
    SQL.Add('SELECT *');
    SQL.Add('FROM MobNomera');
    SQL.Add('WHERE Fam LIKE  ''%'+f+'%''');
    SQL.Add('ORDER BY Name');
  open;
  ShowMessage(IntToStr(RecordCount));
  end;
end;
end;
Попробуй
Должен вывести количество записей в результатирующем наборе данных
Ответить с цитированием
  #9  
Старый 22.09.2008, 17:33
mik mik вне форума
Прохожий
 
Регистрация: 17.09.2008
Сообщения: 33
Репутация: 10
По умолчанию

Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  f: string;
begin
  f := InputBox('Поиск по БД','Введите фамилию человека','');
  if f <> '' then
  begin
    with Form1.Query1 do 
    begin
      close;
      SQL.Add('SELECT *');
      SQL.Add('FROM MobNomera');
      SQL.Add('WHERE Fam LIKE  ''%'+f+'%''');
      SQL.Add('ORDER BY Name');
      open;
      //Здесь выводим содержание поля Fam в первой записи запроса
      ShowMessage(FieldByName('Fam').AsString);
    end;
  end;
end;
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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