Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.04;
Скачать: CL | DM;

Вниз

Отбор не точен ...   Найти похожие ветки 

 
Svet ©   (2007-01-17 23:53) [0]

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

Осущевстляю отбор из поля таблицы с подстановкой данных в С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..


 
Johnmen   (2007-01-18 00:02) [1]

Что за СУБД и какого типа поле KOD?


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

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


 
Svet ©   (2007-01-18 10:01) [3]

.


 
ЮЮ ©   (2007-01-18 10:10) [4]

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

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


 
ЮЮ ©   (2007-01-18 10:12) [5]

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


 
Sergey13 ©   (2007-01-18 10:14) [6]

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

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


 
Svet ©   (2007-01-18 10:23) [7]

to Sergey13

property - SeText


 
Svet ©   (2007-01-18 10:26) [8]

опечатка
property - SelText


 
Sergey13 ©   (2007-01-18 10:29) [9]

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

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


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


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


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

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


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

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


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

Line Number: 2.

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


 
Svet ©   (2007-01-18 10:38) [13]

Уважаемые!

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

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


 
Svet ©   (2007-01-18 10:41) [14]


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


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


 
ЮЮ ©   (2007-01-18 10:49) [15]


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


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

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

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


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


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

из OnKeyPress - удален.


 
Svet ©   (2007-01-18 11:48) [17]

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

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

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

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


 
ЮЮ ©   (2007-01-18 12:01) [18]


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


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

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


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


 
Svet ©   (2007-01-18 13:04) [19]

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


 
ЮЮ ©   (2007-01-18 13:12) [20]

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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2007.02.04;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.077 c
2-1169115004
sergeyst
2007-01-18 13:10
2007.02.04
Массив


2-1169104807
Glivera
2007-01-18 10:20
2007.02.04
Вопрос по SynEdit


2-1169063960
Pasha L
2007-01-17 22:59
2007.02.04
overload или ещё чт-то нужно?


2-1169110118
dsa256
2007-01-18 11:48
2007.02.04
Форма окна по контуру картинки


3-1163492559
Bless
2006-11-14 11:22
2007.02.04
Почему не возникает ошибка?