Главная страница
    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.043 c
2-1169158460
AlexeyT
2007-01-19 01:14
2007.02.04
Печать TImage/TBitmap?


15-1168711338
Petr V. Abramov
2007-01-13 21:02
2007.02.04
J#


2-1168964237
pound
2007-01-16 19:17
2007.02.04
Подскажите, пожалуйста, как загрузить в канву формы рисунок *.bmp


15-1168304227
vasIzmax
2007-01-09 03:57
2007.02.04
Везет как утопленнику :(


2-1168690301
Garacio
2007-01-13 15:11
2007.02.04
ShellExecute (спрятать запущенный процесс)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский