как организовать поиск?

Тема в разделе "Delphi - Базы данных", создана пользователем -, 23 окт 2007.

Статус темы:
Закрыта.
  1. Гость

    У меня проблема с которой я не сталкивался!
    Я передаю строку через сокет, обрабатываю, занашу в таблицу. Пока всё ОК!

    А вот поиск почему-то не работает
    Пишу так

    procedure TForm1.Button1Click(Sender: TObject);
    var
    Result:boolean;
    begin
    If Edit1.Text='' then MessageDlg('Фамилия не введена!',mtError,[mbOk],0)
    else
    begin
    Result:=Table1.Locate('Fam',Edit1.Text,[]);
    If Result=false then MessageDlg('Фамилия не найдена!',mtInformation,[mbOk],0)
    end;
    end;

    Постояно говорит что поиск не удачный!

    НО! Он не всегда так говорит у меня есть в таблице 2 записи которые отличаются от других!

    На вех в начале первого поля стоит какбы символ |
    а вот на этих двух нету и их находит, а остальные нет.

    Я вот думаю это из-за того что я на DBGRID только чтение поставил! но чегото кажется что проблема в другом!!!!!

    Подскажите!
     
  2. Silver Wind

    Silver Wind Гость

    <!--QuoteBegin-Дрон+23:10:2007, 20:20 -->
    <span class="vbquote">(Дрон @ 23:10:2007, 20:20 )</span><!--QuoteEBegin-->На вех в начале первого поля стоит какбы символ |
    а вот на этих двух нету и их находит, а остальные нет.
    [snapback]82843" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    А может всетаки проблема в символе "|".

    Воспользуйся SQL-запросом с использованием LIKE и символами %, тогда сможешь искать и по части введенной фамилии.

    Или можешь искать как искал, но при Result=false не выводить сразу сообщение а сделать еще один поиск по '|'+Edit1.Text. Если и тогда ничего не найдет, тогда сообщение выкидывай.
    Это если у тебя только символ '|' может добавляться, а если не только он один, то лучше всетаки SQL-запросом искать.

    База данных какая?
     
  3. Гость

    Paradox 7 помойму! Делфаковская!
     
  4. Silver Wind

    Silver Wind Гость

    Да, а зачем вообще в таблицу мусор записывать было в виде символа "|"? Может проще переделать запись информации в таблицу и искать как искал?
     
  5. Гость

    Ты меня не понял я этот символ не записываю!! он автоматически закидывается! КАк я понял
    первая запись является ключевой! А поле Fam у меня первое!вот "|" и помечает что оно ключевое!
    А поключевому полю помойму нельзя поизвадить ни поиск ни фильтрацию :)

    Если мжна подскажи как! С SQL работать не умею!
     
  6. Silver Wind

    Silver Wind Гость

    Ну тогда у тебя неправильно организована таблица. Ключевое поле обычно делают длинного целого типа, автоинкрементное.
    Но даже если у тебя ключевое поле Fam, то сам движок БД ничего закидывать для уникальности в него не может - этож ужас что с данными он в таком случае натворить может. Просто для контроля уникальности он не позволит записать запись с дублем значения в таком поле - выкинет ошибку.

    Так что мусор в таблицу ты сам записываешь, перепроверяй, отлаживай алгоритм. Если ты записываешь часть строки, переданной через сокет, то, вероятно, неправильно эту часть вырезаешь - захватываешь лишние (возможно невидимые символы), которые при просмотре и отображаются в виде толстеньких вертикальных полосочек.

    А поиск и фильтрация не зависит от того ключевое поле или нет.

    По поводу SQL в инете полно учебников на русском языке. И если тебе придется работать с базами данных настоятельно рекомендую эту тему изучить. Язык универсальный, конкретные реализации просто могут иметь свои особенности.
     
  7. Гость

    Для: Silver Wind

    спасибо! По счёт SQL ты конечно прав! Но вот чё та воблом:)
    В конечно пересмотрю код уже не помню в какой раз:)!
    Но там всё нормально и такие символы воще не встречаются!
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей