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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2011, 19:46   #1
Aleksey1989
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 127
По умолчанию Поиск фамилии

Добрый день. Подскажите, какой запрос нужно ввести в поле Filter, чтобы при поиске фамилии выводилось по порядку то, что я хочу найти. Т.е. ввожу букву с - остаются только фамилии на букву с, далее ввожу следующую букву - а - остаются фамилии, начинающиеся на са.
Раньше я это как-то делал, а вот теперь не могу вспомнить, как именно.
Aleksey1989 вне форума Ответить с цитированием
Старый 07.06.2011, 20:18   #2
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

Поиском надо пользоваться, ПО-ИС-КО-М
Смотри второй пост
Gulik вне форума Ответить с цитированием
Старый 07.06.2011, 20:24   #3
Aleksey1989
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от Gulik Посмотреть сообщение
Поиском надо пользоваться, ПО-ИС-КО-М
Смотри второй пост
Там другая ситуация. У меня бд находится под аксесом, а знак > в аксесе работает некорректно.

Кстати, в книжке нашел код, с помощью которого все будет работать на ура, вот он:
Код:
procedure TDataModule1.BookTableFilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
 Accept:=false;
 if copy(BookTableDSDesigner.AsString,1,Length(Form1.FindEdit.Text))=
  Form1.FindEdit.Text then
  Accept:=true;
end;
Данный код необходимо прописать в модуле данных. Попробовал приспособить этот код к своей ситуации, заменив название Form1 и FindEdit. Но возникает непонятная ошибка: FindEdit распознается как неописанная переменная, хотя модуль форму прописан в разделе uses.
Как сделать так, чтобы не появлялось этой ошибки?

Последний раз редактировалось Aleksey1989; 07.06.2011 в 20:29.
Aleksey1989 вне форума Ответить с цитированием
Старый 07.06.2011, 20:34   #4
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

FindEdit - это обычный Edit (такие как Edit1 Edit2 Edit3...) какие у тебя есть на форме...
Gulik вне форума Ответить с цитированием
Старый 07.06.2011, 20:44   #5
Aleksey1989
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от Gulik Посмотреть сообщение
FindEdit - это обычный Edit (такие как Edit1 Edit2 Edit3...) какие у тебя есть на форме...
Я это прекрасно понимаю. Дело в том, что этого не понимает делфи!!! Именно он выдает ошибку указывая на Edit.

П.с. если поменять название формы, допустим в любое место добавить любую букву (было iskKlienta стало iiskKlienta), то никаких ошибок не появляется. Тогда вопрос: чем делфи не устраивает имя формы iskKlienta? М.б. потому что модуль формы имеет название iskKlienta.pas?
Aleksey1989 вне форума Ответить с цитированием
Старый 07.06.2011, 20:45   #6
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

покажи весь код
Gulik вне форума Ответить с цитированием
Старый 08.06.2011, 10:15   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
М.б. потому что модуль формы имеет название iskKlienta.pas?
Именно.
полная нотация записи имен, но редко используемая и мало известная
<имя модуля(unit)>.<имя объекта(var const type>[.<имя метода>]
Используется для разрешения коллизий одинаково именованных объектов в ДВУХ и более ОДНОВРЕМЕННО подключаемых модулях.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 08.06.2011 в 10:18.
evg_m вне форума Ответить с цитированием
Старый 08.06.2011, 13:15   #8
Aleksey1989
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 127
По умолчанию

И снова я. Появился другой вопрос на эту тему. С одним поисковым полем все прекрасно работает, а если добавить еще одно поле, то получается так, что первое работает некорректно(ни так, как если бы оно работало в одиночку), а второе поле работает в принципе нормально. Можно ли как нибудь решить эту проблему?

Код:
 Accept:=false; if (copy(ADOIskKlientaDSDesigner14.AsString,1,Length(iskKlientta.Edit1.Text))=iskKlientta.Edit1.Text)or(copy(ADOIskKlientaDSDesigner11.AsString,1,Length(iskKlientta.Edit1.Text))=iskKlientta.Edit2.Text)
    then Accept:=true;
Aleksey1989 вне форума Ответить с цитированием
Старый 08.06.2011, 22:39   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

перписал ВАШ код в читаемом виде.
Код:
 Accept:=false; 
s1:=copy(ADOIskKlientaDSDesigner14.AsString,1,Length(iskKlientta.Edit1.Text));
s2:=copy(ADOIskKlientaDSDesigner11.AsString,1,Length(iskKlientta.Edit1.Text));
if (s1=iskKlientta.Edit1.Text) or (s2=iskKlientta.Edit2.Text)
    then Accept:=true;
а теперь проверьте то ли вы хотели получить?
или сообщите КАКим образом хотели фильтровать по двум полям.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена фамилии Alex Cones Свободное общение 10 08.08.2010 09:23
Распечатать фамилии учеников,фамилии которых начинаются на букву В с указанием даты рождения. greenO_o Помощь студентам 0 26.05.2010 22:49
Структуры. Сортировка по фамилии студента. STS_1991 Помощь студентам 3 09.05.2009 12:14
сортировать по фамилии два листа Kotik123 Microsoft Office Excel 2 23.04.2009 18:52