Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];
ВнизОтбор не точен ... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.044 c