Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отбор не точен ... [D7, XP]


Страницы:   1 2

Svet ©   (2007-01-17 23:53:00) 

Здравствуйте!

Осущевстляю отбор из поля таблицы с подстановкой данных в СomboBox'e.
(отбор последовательный от первого символа)

procedure TTRF_T.ComboBox1KeyPress(Sender: TObject;
 var Key: Char);
var s: string;

begin

 DMFrm.HQuery.Close;
 DMFrm.HQuery.SQL.Clear;
 ComboBox1.SelText := '';
 
 DMFrm.HQuery.SQL.Add('SELECT DISTINCT KOD FROM "T.DB" WHERE KOD LIKE '''+ComboBox1.Text+'%''');

 DMFrm.HQuery.Open;
 DMFrm.Historyuery.First;

 s:= ComboBox1.Text;
 ComboBox1.Clear;

 While not DMFrm.HQuery.Eof do begin
 ComboBox1.Items.Add(DMFrm.HQuery.FieldByName('KOD').AsString);

DMFrm.HQuery.Next;
 end;
 ComboBox1.Text := s;
 ComboBox1.SelStart := length(s);
 
 end;


Так вот данные отбираются не верно:
в таблице
008-548
008-549
008-550
008-600

при отборе ввожу 008-9

попадает
и 008-5..
и 008-6..


Anatoly Podgoretsky   (2007-01-18 19:57:00) [1]

> Svet  (18.01.2007 13:04:19)  [19]

В обработчике OnChange надо проверять на пустоту и запрос делать только на не пустом значении.
Кроме того используй параметры.


ЮЮ   (2007-01-18 13:12:00) [2]

Ну если только кто другой поддержит тебя в беседе :) У меня уже 20.15, я умываю руки :)


Svet   (2007-01-18 13:04:00) [3]

Прошу прощения, забирают на совещание, часа на 2.... напишу чуть позже


ЮЮ   (2007-01-18 12:01:00) [4]


> <Цитата>
>
> Svet ©   (18.01.07 11:48) [17]


Для начала перевесь обработчик на OnChange обычног TEdita и проверь правильность заполнения TCombox-а.

при вводе символов исчзают введенные


Код по-прежнему идентичен  subj-у, невзирая на [15]?


Svet   (2007-01-18 11:48:00) [5]

Ничего путного не получается (

при вводе символов исчзают введенные

Савсем запуталась...

Вот по этому и выбрала OnKeyPress - там хоть символы не исчезают (SelText)


Svet   (2007-01-18 11:00:00) [6]


> Т.е. оставлен и в OnKeyPress ???

из OnKeyPress - удален.


ЮЮ   (2007-01-18 10:49:00) [7]


> тупо скопирован из OnKeyPress и вставлен в OnChange
>


Т.е. оставлен и в OnKeyPress ???

ComboBox1.Text := s;
И работает, не переполняя стек?

ComboBox1.OnChange := nil;
try
  ...
  ComboBox1.Text := s;
  ...
finally
  ComboBox1.OnChange := ComboBox1Change;
end;


Svet   (2007-01-18 10:41:00) [8]


> откуда, интересно, вторая строка, если код тот что привелен?
>  :)


тупо скопирован из OnKeyPress и вставлен в OnChange


Svet   (2007-01-18 10:38:00) [9]

Уважаемые!

Будьте любезны - может исправите код, чтобы он корректно мог выбирать по OnChange в ComboBox1'e с первого символа.

Заранее благодарна!


ЮЮ   (2007-01-18 10:35:00) [10]

Line Number: 2.

откуда, интересно, вторая строка, если код тот что привелен? :)
Запрос лучше сформировать параметрический и один раз, а то пользователь введет ' ещё и не такой Token услышишь


ЮЮ   (2007-01-18 10:30:00) [11]

ComboBox1.SelStart := length(s);
ComboBox1.SelLength тоже неплохо бы установить, а то никакого выделения не будет


Svet   (2007-01-18 10:29:00) [12]


> ЮЮ ©   (18.01.07 10:12) [5]
>
> Используй OnChange event


Если вставляю в OnChange - ошибка

Invalid   use of keyword .
Token: SELECT
Line Number: 2.


Sergey13   (2007-01-18 10:29:00) [13]

> [8] Svet ©   (18.01.07 10:26)

Я понял, что пропертя. Но вроде как в хелпе написано (правда я по албански не очень шарю), что установка этой проперти заменяет выбранное значение.


Svet   (2007-01-18 10:26:00) [14]

опечатка
property - SelText


Svet   (2007-01-18 10:23:00) [15]

to Sergey13

property - SeText


Sergey13   (2007-01-18 10:14:00) [16]

> [3] Svet ©   (18.01.07 10:01)

А что за
ComboBox1.SelText := '';
перед выполнением запроса?


ЮЮ   (2007-01-18 10:12:00) [17]

Используй OnChange event
Occurs when the user changes the text displayed in the edit region.


ЮЮ   (2007-01-18 10:10:00) [18]

пройдись под отладчиком и убедись, что ComboBox1.Text в этом обработчике в момент формирования запроса именно тот, что наблюдаешь воочию.

З.Ы. В OnKeyPress, ИМХО, последний символ еже не должен попасть, ибо этот обработчие предназначен для перехвата (и замены) символа


Svet   (2007-01-18 10:01:00) [19]

.


Svet   (2007-01-18 00:11:00) [20]

Таблицы - Paradox
Поле - цифровое-буквенное (уникальные записи)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо