![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заполнене Combobox c учётом регистра [D5, Paradox]
Stalin © (2003-05-13 14:32:00)Мастера.
Заполняю combobox из таблицы:
if (Combobox.items.indexof(form1.table1.fieldbyname("Kind").asstring)=-1)and(Form1.table1.FieldByName ("Kind").asstring<>"") then
combobox.items.add(Form1.table1.fieldbyname("Kind").asstring);
Form1.table1.next;
Делов том, что в поле "Kind" может быть значение "ППП" или "Ппп" или "пПп", что означает разную реакцию. А выбирается только то, что встречается первым (ППП). Очевидно он не учитывает регистр.
Как это преодолеть?
DBCombobox использовать не могу(есть другие виды запросов, которые это исключают).
Соловьев (2003-05-13 17:02:00) [1]забудь ты про эти кавычки. Пользуйся параметрами - и быстрее, и понятнее. И если уже на то пошло, то посмолтри в сторону функции - QuotedStr.
Otchet (2003-05-13 16:59:00) [2]>dash78 ©
Не word="+stimul+";, а word="""stimul"""";
Извиняюсь, сам стормозил.
Соловьев (2003-05-13 16:43:00) [3]select distinct(kind) as CBfield from "base.db" where word= :word
with Query do
begin
Close;
ParamByName("word").AsString := Edit1.Text;
if not Prepared then Prepare;
Open;
end;
dash78 (2003-05-13 16:38:00) [4]query1.SQL.add ("select distinct(kind) as CBfield from "base.db" where word="+stimul+";");
Otchet (2003-05-13 16:35:00) [5]query1.SQL.add ("select distinct(kind) as CBfield from "base.db" where word=stimul);
Ругается на Stimul(это переменная:string).
Как правильно записать запрос?
Соловьев (2003-05-13 15:47:00) [6]
> Query не подойдёт
не ужели?
Otchet (2003-05-13 15:45:00) [7]>Соловьев
Из таблицы где много повторов.
Query не подойдёт
>VAleksey
Не понял...
Данные берутся из таблицы, где тысячи записей.
Последний столбец и есть "Kind". Т.е. может быть очень большое количество повторов. Моя задача вывести данные из последнего столбца без повторов, но пока получается так, что выводятся без учёта регистра(а это важно, т.к. ППП и ПпП имеют разный смысл).
Вот весь запрос:
While not Form1.Table1.Eof do
begin
if form1.table1.fieldbyname("Word").asstring=stimul then
if (Combobox10.items.indexof(form1.table1.fieldbyname("Kind").asstring)=-1)and(Form1.table1.FieldByName("Kind").asstring<>"") then
combobox10.items.add(Form1.table1.fieldbyname("Kind").asstring);
Form1.table1.next;
Если "Word" равен искомому стимулу, то смотрю Kind. Если такого нет в Combobox"e и поле заполнено, то добавляю в список.
VAleksey (2003-05-13 15:34:00) [8]Может ручками поискать тогда ? Перебором всех значений из Стринглиста.
Соловьев (2003-05-13 15:26:00) [9]
> Otchet (13.05.03 15:07)
поля беруться из справочника? или просто из таблицы где много повторов?
может
select distinct(field) as CBfield
from table
with Query do
begin
Close;
Open;
while not Eof do
begin
ComboBox.Items.Add(FieldByName("CBfield").AsString);
Next;
end;
end;
Otchet (2003-05-13 15:07:00) [10]Не всё так просто.
Если убрать
(Combobox10.items.indexof(form1.table1.fieldbyname("Kind").asstring)=-1),то будут выбирать все записи, т.е. будут повторы. А так как каличество записей 5000, то сколько может быть повторов....Я потому и вставил эту строку.
Leshiy (2003-05-13 14:59:00) [11]Убрать
(Combobox.items.indexof(form1.table1.fieldbyname("Kind").asstring)=-1)