Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.041 c
10-1128924820
R_S
2005-10-10 10:13
2007.02.04
закрыть сервер автоматизации


15-1168528033
iXT
2007-01-11 18:07
2007.02.04
IIS 6 Win2003 Server


15-1168781554
Суперинтендант
2007-01-14 16:32
2007.02.04
Помогите


2-1168554549
Infinityx93
2007-01-12 01:29
2007.02.04
Динамический массив


2-1168720527
Beavercrazy
2007-01-13 23:35
2007.02.04
Ошибка: не могу найти строку для обновления





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский