![]() |
|
|
|
|
#1
|
||||
|
||||
|
Запрос SQL:
Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
f:string;
begin
f:=inputbox('Поиск по БД','Введите фамилию человека','');
if f <> '' then
begin
with Form1.Query1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT Number');
SQL.Add('FROM MobNomera');
SQL.Add('WHERE Fam like "%'+'f'+'%" and Name like "%'+'f'+'%"');
Open;
if Form1.Query1.RecordCount>0 then
ShowMessage(Form1.Query1.Fields[0].AsString);
end;
end;
end;А если я пробую так: Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
f:string;
begin
f:=inputbox('Поиск по БД','Введите фамилию человека','');
if f <> '' then
begin
with Form1.Query1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT Number');
SQL.Add('FROM MobNomera');
//SQL.Add('WHERE Fam like "%'+'f'+'%" and Name like "%'+'f'+'%"');
Open;
if Form1.Query1.RecordCount>0 then
ShowMessage(Form1.Query1.Fields[0].AsString);
end;
end;
end;Код:
SELECT * FROM MobNomera.db |
|
#2
|
||||
|
||||
|
Советую почитать что-нибудь по SQL.
Зачем искать вхождение фамилии в полях fam и name, я полагаю искать нужно только в fam. Поэтому код должен выглядеть примерно так: Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
f:string;
begin
f:=inputbox('Поиск по БД','Введите фамилию человека','');
if f <> '' then
begin
with Form1.Query1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT Number');
SQL.Add('FROM MobNomera');
SQL.Add(Format('WHERE fam LIKE %s',[QuotedStr('%'+f+'%')]));
Open;
if Form1.Query1.RecordCount>0 then
ShowMessage(Form1.Query1.Fields[0].AsString);
end;
end;
end; |
|
#3
|
||||
|
||||
|
Все равно почему то ничего не выводит((. Даже ваш код. В сообщении должен выводится номер телефона (Number) найденный по введенной фамилии.
А если изменить как то эту строчку? SELECT * FROM MobNomera.db |
|
#4
|
|||
|
|||
|
Попробуйте в таблице создать запись с простой фамилией, например: "1", затем попробуйте поиск по этой фамилии.
Строчка, которую вы, настойчиво хотите изменить в свойстве SQL, удаляется при вызове команды SQL.Clear. Поэтому можете писать там что угодно, на работу программы она никак не влияет. Последний раз редактировалось mik, 07.10.2008 в 15:46. |
|
#5
|
||||
|
||||
|
Цитата:
Есть там Fam и Name? |
|
#6
|
|||
|
|||
|
Поля такие есть, иначе программа ругнулась бы во время выполнения.
Скорее всего сравнение идет с учетом регистра. В базе - "Иванов", а в переменной присваивается - "иванов". |
|
#7
|
|||
|
|||
|
Тут без исходника не угадаешь. Малоли что там в свойствах наворочено.
|
|
#8
|
|||
|
|||
|
and заменить на or
И переменную f не надо заключать в кавычки. было Код:
SQL.Add('WHERE Fam like "%'+'f'+'%" and Name like "%'+'f'+'%"');надо Код:
SQL.Add('WHERE Fam like "%'+f+'%" or Name like "%'+f+'%"'); |