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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2012, 22:19   #1
Ёжик в тумане
Подтвердите свой е-майл
 
Регистрация: 20.07.2011
Сообщений: 239
Вопрос Ошибка ввода. Неверный тип

Доброго времени суток! При выполнении ввода в Edit2 выбивает ошибку. Подскажите как исправить.


Код:
procedure TForm2.Edit2Change(Sender: TObject);
begin
   if length(edit2.text) > 0 then Form2.ADOTable2.Filtered := true else
   Form2.ADOTable2.Filtered := false;
   Form2.ADOTable2.Filter := 'Артист=''' + edit2.Text + '''';
   Form2.ADOTable2.Filter := 'Альбом=''' + edit2.Text + '''';
   Form2.ADOTable2.Filter := 'Год выпуска=''' + edit2.Text + '''';
end;

Последний раз редактировалось Ёжик в тумане; 30.12.2012 в 23:09.
Ёжик в тумане вне форума Ответить с цитированием
Старый 30.12.2012, 22:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

что за странная логика?
зачем Вы заполняете фильтр три раза подряд?!

Как Вы думаете, если написать:
Код:
  a := 1;
  a := 2;
  a := 3;
что будет в переменной a ?

так вот, в вашем случае строчка в фильтре будет толко одна, с "Год выпуска"
а ошибку фильтр выдаёт, т.к. либо тип поля"Год выпуска" не совпадает (вы его приравнимаете строковой константе, а он, например, числовой.
Кроме того, не помню, глючит ли ADO с именами полей, которые содержат пробел, вполне допускаю, что глючит. Если это так, либо переименуйте поле в таблице, либо используйте запрос, в котором полю назначается алиас (псевдоним).

p.s. Вы бы лучше рассказали, ЧТО именно Вы пытаетесь написать, возможно, Вам бы подсказали, как это лучше сделать..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.12.2012, 22:57   #3
Ёжик в тумане
Подтвердите свой е-майл
 
Регистрация: 20.07.2011
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение

p.s. Вы бы лучше рассказали, ЧТО именно Вы пытаетесь написать, возможно, Вам бы подсказали, как это лучше сделать..
Я пытаюсь сделать поиск по DBGrid1. Используется база данных (access).
Пытаюсь сделать поиск с помощью ADOTable1. Как то так...

P.S. Было бы хорошо чтобы Вы дали конкретные примеры...
Ёжик в тумане вне форума Ответить с цитированием
Старый 30.12.2012, 23:09   #4
Ёжик в тумане
Подтвердите свой е-майл
 
Регистрация: 20.07.2011
Сообщений: 239
По умолчанию

Решение найдено!
Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
if (edit1.text<>'') then
begin
ADOTable1.Filter:='(Фамилия LIKE '''+edit1.Text+'%'')';
ADOTable1.Filtered:=true;
end
else
ADOTable1.Filtered:=false;
end;

end.
Ёжик в тумане вне форума Ответить с цитированием
Старый 30.12.2012, 23:45   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Решение найдено!
И что будет, если Filtered уже True?
Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
  ADOTable1.Filtered:=false;
  if edit1.text<>'' then
  begin
    ADOTable1.Filter:='Фамилия LIKE '''+edit1.Text+'%''';
    ADOTable1.Filtered:=true;
  end;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.12.2012, 02:02   #6
Ёжик в тумане
Подтвердите свой е-майл
 
Регистрация: 20.07.2011
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
И что будет, если Filtered уже True?
Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
  ADOTable1.Filtered:=false;
  if edit1.text<>'' then
  begin
    ADOTable1.Filter:='Фамилия LIKE '''+edit1.Text+'%''';
    ADOTable1.Filtered:=true;
  end;
end;
К Вам вопрос! Как можно модифицировать этот код.. так чтобы поиск был по нескольким полям например: фамилия, имя, отчество, дата рождения?
А не только по полю фамилия.
Ёжик в тумане вне форума Ответить с цитированием
Старый 31.12.2012, 11:04   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
ADOTable1.Filter:='Фамилия LIKE '+QuotedStr(edit1.Text+'%')
+' AND Имя LIKE '+QuotedStr(edit2.Text+'%')
+' AND Отчество LIKE '+QuotedStr(edit3.Text+'%')
;
Это для ФИО поиск
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.12.2012, 11:28   #8
Ёжик в тумане
Подтвердите свой е-майл
 
Регистрация: 20.07.2011
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
ADOTable1.Filter:='Фамилия LIKE '+QuotedStr(edit1.Text+'%')
+' AND Имя LIKE '+QuotedStr(edit2.Text+'%')
+' AND Отчество LIKE '+QuotedStr(edit3.Text+'%')
;
Это для ФИО поиск
Только не чего не ищет
Компилируется только.
И выводит пустые значения в полях

Последний раз редактировалось Ёжик в тумане; 31.12.2012 в 17:09.
Ёжик в тумане вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Ошибка: Неверный дескриптор (6)" FleXik Общие вопросы Delphi 1 12.11.2012 18:51
Неверный тип переменной Region27 C++ Builder 2 20.06.2012 08:52
Ошибка ввода Tymchuk C++ Builder 0 28.05.2012 00:33
Ошибка при работе с canvas "Неверный дескриптор" Алекс Ялта Gamedev - cоздание игр: Unity, OpenGL, DirectX 17 13.06.2011 22:32
В чем ошибка в запросе?неверный результат =( Lunatikus SQL, базы данных 3 26.11.2007 09:50