IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Ошибка при изменении условий поиска
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Такая ситуация: При вводе в Tedit какого бы то нибыло символа для поиска в базе, неизменно возникает сообщение: "Не удается найти объект в семействе, соответствующий требуемому имени или порядковому номеру". Или:
"Аргументы имеют неверный тип, выходят за пределы допустимого диапазона, или вступают в конфликт друг с другом"
Несколько дней на этом уже торможу и никак не пойму в чем здесь дело!!!
База: MS Access, соединение: ADO. Для поиска используются 3 tedita. Первый осуществляет поиск по номеру, второй по дате и третий по фамилии.
Когда поиск осуществляется по точному значению (=), все в порядке! никаких проблем! но этот поиск мне не подходит, нужно найти фрагмент в строке, соответственно используется like.
Код

form4.xd.Filter:='[Номера] LIKE ''*' +Form4.Edit1.Text+'*''';


И вот тут начинаются какие то несоответствия типов!!!
Очень странно что при изменении параметров поиска возникают ошибки. Совершенно не пойму в чем они заключаются shok.gif

Сообщение отредактировано: 1147 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






А зачем ты апострофами выделяешь LIKE-запрос? Насколько я помню,
form4.xd.Filter:='[Номера] LIKE *' +Form4.Edit1.Text+'*';
должно быть достаточно...

Добавлено через 1 мин.
Цитата
при изменении параметров поиска возникают ошибки
При изменении КАКИХ параметров и с чего на что?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


// Вот пример когда программа работает без ошибок:
form4.xd.Filter:='Номера='''+Edit1.Text+'''';
// А теперь при таком варианте поиска возникает ошибка:
form4.xd.Filter:='[Номера] LIKE *' +Form4.Edit1.Text+'*';

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






При таком варианте (втором) программа работает совершенно безошибочно (проверялось только вчера) за исключением одного-единственного случая: когда Edit1.Text пуст, возникает ошибка "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона, или вступают в конфликт друг с другом". Все остальные варианты отрабатывают идеально со строковыми полями...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


дада!!! Вот именно! Когда нашлась нужная запись, из tedita удаляется старая для того чтобы начать новый поиск. и тут ошибка!
А как же тогда быть если нужно повторно произвести поиск?

Сообщение отредактировано: 1147 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






А ты что, на время обновления TEdit-а не сбрасываешь Filtered в False? Напрасно, очень даже помогает smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Сбрасываю:
procedure TForm4.Edit1Change(Sender: TObject);
begin
if Length(Edit1.text)>0 then
form4.xd.Filtered:=true
else
form4.xd.Filtered:=false;
form4.xd.Filter:='[Номера] LIKE *' +Form4.Edit1.Text+'*';
end;

Если tedit пустое, фильтр должен отключаться
Ведь в поиске по "=" таких проблем не возникает! Там используется тот же самый код

Сообщение отредактировано: 1147 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






А вот так попробуй, может чего и получится:
  if Length(Edit1.Text) > 0 then begin
form4.xd.Filtered := false;
form4.xd.Filter := '[Номера] LIKE *' + Form4.Edit1.Text + '*';
form4.xd.Filtered := true;
end
else
form4.xd.Filtered := false;
Как говорится, найди отличия smile.gif

Добавлено через 1 мин.
Цитата
Если tedit пустое, фильтр должен отключаться
Должен-то должен, но ты ж его заполняешь, причем заполняешь некорректным запросом с точки зрения ADO. Это уж потом будет решено, показывать или нет результаты фильтрации, а сначала фильтр будет применен... А зачем? Не заполняй его при пустом Edit-е и всего делов...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


respect2.gif respect.gif Просто замечательно! Я везде где только можно искал ошибки, только не здесь. Неизвестно сколько бы я еще на это времени убил!
Огромное спасибо!!! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 10:59
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name