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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.02.2010, 23:25   #1
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
Вопрос поиск в БД

привет, всем!
у меня есть проблемма в написании поиска в БД.

Код:
procedure TForm5.Button2Click(Sender: TObject);
var
 Pole : ShortString;
begin
 case RadioGroup1.ItemIndex of
     0 : Pole:='FIO';
     1 : Pole:='DR';
     2 : Pole:='Otdel';
     3 : Pole:='Dolzh';
     4 : Pole:='Adres';
     5 : Pole:='Phone';
  end;
  Form1.Query1.Close;
  Form1.Query1.SQL.Clear;
  Form1.Query1.SQL.Add('select * from base.db');
  Form1.Query1.SQL.Add('where ' + Pole + '=:a');
  Form1.Query1.Prepare;
  Form1.Query1.Params[0].AsString:=Form5.Edit1.Text;
  Form1.Query1.Open;
  if Form1.Query1.RecordCount = 0 then
     ShowMessage('Ничего не найдено!');
end;
вот мой код. факт в том, что в предыдущей моей БД - этот код работал. Сейчас (щас) пишу новую БД и когда делаю поиск, он мне пишет что ничего не найдено!
Вопрос в том - почему?

Последний раз редактировалось mihali4; 08.02.2010 в 23:32.
kuzmich вне форума
Старый 08.02.2010, 23:36   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Потому что вы поторопились (это видно даже по "щас") и написали неверно.
Сравните:
Код:
where Pole=:a
Руки не должны опережать сознание (сам придумал очень давно )
Кстати, по поводу "Pole".
Лично я не знаю способа, как динамически задавать имя поля в запросе...
Ау, знатоки! Просветите старика...

Последний раз редактировалось mihali4; 08.02.2010 в 23:38.
mihali4 вне форума
Старый 09.02.2010, 00:17   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от mihali4
Лично я не знаю способа, как динамически задавать имя поля в запросе...
Ау, знатоки! Просветите старика...
дык в вышеприведённом коде имя поля как раз динамически и задаётся!


kuzmich, а мне код понравился!
И поиск не работает, как мне кажется, по причине:
1) в БД реально нет записей, которые Вы ищите
2) регистр букв в таблице не совпадает с регистром букв в строке поиска (Form5.Edit1.Text)
3) в строке поиска Form5.Edit1.Text лишние пробелы в начале и/или в конце строки
4) в RadioGroup1.ItemIndex что то добавили/убрали и поэтому индекс не соответствует именам полей в коде
...
это только навскидку..
забейте в базу заведом регистро независимую информацию (например, в FIO забейте "12345" и ищите)
так же не помешает точка останова внутри Button2Click
посмотрите на получаемый код запроса...

короче, ИМХО, искать ошибку надо не в вышеприведённом коде...

Последний раз редактировалось mihali4; 09.02.2010 в 00:33.
Serge_Bliznykov вне форума
Старый 09.02.2010, 08:58   #4
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

все равно не работает!!! (((
kuzmich вне форума
Старый 09.02.2010, 09:16   #5
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

а база данных сама то подключена ?
тут не проблем ?
вот что это такое : base.db ? имя таблицы ?
приведи пожалуйста полный код или хотя бы покажи как подключаешься к базе перед запросом.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума
Старый 09.02.2010, 09:32   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

код вроде рабочий, но я бы убрал эту строку:
Код:
Form1.Query1.Prepare;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума
Старый 09.02.2010, 09:54   #7
Власов А.С.
Пользователь
 
Регистрация: 04.08.2009
Сообщений: 48
По умолчанию

Люди помогите разобраться с поиском в базе. Мой такой вариант. А как бы умные гуру это сделали
Вложения
Тип файла: rar Swod.rar (553.7 Кб, 12 просмотров)
Власов А.С. вне форума
Старый 09.02.2010, 10:22   #8
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

в первую очередь посмотреть что же вернет запрос вообще без фильтра
т.е.закоментить указанные строки
Код:
 //Form1.Query1.SQL.Add('where ' + Pole + '=:a');
  Form1.Query1.Prepare;
  //Form1.Query1.Params[0].AsString:=Form5.Edit1.Text;
в зависимости от результата дальше разбираться либо с подключением к бд либо с соответствием полей и т.п.
soleil@mmc вне форума
Старый 09.02.2010, 11:05   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А как бы умные гуру это сделали
Элементарно - закрыли бы тему за нарушение "Одна тема - один автор".
Закрыто.
I'm learning to live...
Stilet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск - ? Evgenii БД в Delphi 11 22.07.2009 19:41
Поиск Яр|/||< (^_^) Общие вопросы Delphi 9 24.06.2009 09:37
поиск artemavd БД в Delphi 3 21.10.2008 17:39
Поиск Andr Microsoft Office Excel 2 18.07.2007 11:49
поиск Lonix Общие вопросы Delphi 2 04.04.2007 01:59