![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DBComboBox
Andrewtitoff © (2009-11-02 15:39:00)Здравствуйте!, подскажите пожалуйста как сделать что бы в DBComboBox работал выпадающий список?, не ручным заполнением, т.к. у меня в таблице 80 полей и 7тысяч записей, а при ручном заполнении получается приличная тормозня т.к. при ручном заполнении приходится еще и проверять на наличие уже такой записи в DBComboBox-е (в таблице только одно поле ключевое и уникальное, все остальные могут повторяться сколько угодно хоть все 7тыс одинаковые...), или может быть что то другое использовать, а не DBComboBox, но нужна возможность редактирования...
Andrewtitoff (2009-11-02 16:40:00) [121]
> Dennis I. Komarov © (02.11.09 16:36) [27]
> [4] + DBLookupComboBox на полученный DataSet
В смысле?
> Anatoly Podgoretsky © (02.11.09 16:37) [28]
> > Можно примерчик запроса?SELECT DISTINCT Fld FROM Tbl ORDER
> BY Fld
Ой, А целеком можно, кужы это пихать то? =)))
Anatoly Podgoretsky (2009-11-02 16:39:00) [122]А тут уже и ComboBox не нужен, он же для выбора, а из чего выбирать из одной записи что ли?
Dennis I. Komarov (2009-11-02 16:38:00) [123]
> Anatoly Podgoretsky © (02.11.09 16:36) [26]
Ну я понял, что у него всего одна, но мега таблица...
И он не ответил, на какого банана ее всю показывать пользователю...
Anatoly Podgoretsky (2009-11-02 16:37:00) [124]
> Можно примерчик запроса?
SELECT DISTINCT Fld FROM Tbl ORDER BY Fld
Andrewtitoff (2009-11-02 16:37:00) [125]
> Dennis I. Komarov © (02.11.09 16:33) [23]
> > Andrewtitoff © (02.11.09 16:29) [19] Приведи пример,
> что ты хочешь оттуда вытащить...
Как что?, ну допустим каждый лифт находится на какой то улице, так вот допустим на Ленинском проспекте 400 лифтов, а мне нужно что бы в ComboBox-е была только одна запись "Ленинский пр-т"
Anatoly Podgoretsky (2009-11-02 16:36:00) [126]
> Приведи пример, что ты хочешь оттуда вытащить...
Не что, а откуда, поскольку позиция несколько раз менялась.
Dennis I. Komarov (2009-11-02 16:36:00) [127][4] + DBLookupComboBox на полученный DataSet
Anatoly Podgoretsky (2009-11-02 16:35:00) [128]> Andrewtitoff (02.11.2009 16:33:22) [22]
Что ты делаешь понятно, но так делать не нужно, как минимум это будет медленно.
Andrewtitoff (2009-11-02 16:35:00) [129]
> Anatoly Podgoretsky © (02.11.09 16:31) [21]
> > Andrewtitoff (02.11.2009 16:27:16) [16]Только тебе советовали
> запрос с отбором, а не таблица с позаписным сравнением.
А как это сделать?, просто я с базами не буб-бум, можно сказать первый раз пришлось ковыряться.... =((((
Можно примерчик запроса?
Andrewtitoff (2009-11-02 16:33:00) [130]2 Dennis I. Komarov ©
1)Ну это я просто еще все ComboBox-ы на DBComboBox-ы не поменял....
2)А как?, я присваиваю с "ложь", потом перебираю ComboBox и если нахожу такое значение то с присваиваю "истина", и в итоге записываю в ComboBox значение только если с - "ложь" т.е. такой записи там еще нет
Dennis I. Komarov (2009-11-02 16:33:00) [131]
> Andrewtitoff © (02.11.09 16:29) [19]
Приведи пример, что ты хочешь оттуда вытащить...
Dennis I. Komarov (2009-11-02 16:31:00) [132]
> Dennis I. Komarov © (02.11.09 16:29) [18]
Пардон... не пиши так все в строку, плохо читается...
Anatoly Podgoretsky (2009-11-02 16:31:00) [133]> Andrewtitoff (02.11.2009 16:27:16) [16]
Только тебе советовали запрос с отбором, а не таблица с позаписным сравнением.
Dennis I. Komarov (2009-11-02 16:29:00) [134]
> then c:=true;
> if c=false
А это что за пляски?
Andrewtitoff (2009-11-02 16:29:00) [135]2
> Sergey13 © (02.11.09 16:26) [15]
> > [11] Andrewtitoff © (02.11.09 16:13)> т.к. они все есть
> в базе Ну так настрой лукапполя на эти справочники.
Как?, там только одна таблица.., или я что то не понимаю?, а значения беруться из других записей, как выразился Anatoly Podgoretsky "что речь идет все таки о копирование старых полей"
Andrewtitoff (2009-11-02 16:27:00) [136]2 Anatoly Podgoretsky
Ну в общем то примерно так и есть, а можно как нибудь это ускорить т.к. я это делаю так:
...
Form1.ADOTable4.First;
while not Form1.ADOTable4.Eof do
begin
if Form1.ADOTable4.Fields[1].Value<>null then
begin
c:=false;
for I := 0 to Form2.ComboBox1.Items.Count do if Form2.ComboBox1.items[I]=Form1.ADOTable4.Fields[1].Value then c:=true;
if c=false then Form2.ComboBox1.Items.Add(Form1.ADOTable4.Fields[1].Value);
end;
....
и так примерно для 60-ти полей и в итоге все это дело около 2-х минут заполняется...
Dennis I. Komarov (2009-11-02 16:27:00) [137]
> Andrewtitoff © (02.11.09 16:13) [11]
А я про Combo ничего и не спрашивал...
Sergey13 (2009-11-02 16:26:00) [138]> [11] Andrewtitoff © (02.11.09 16:13)
> т.к. они все есть в базе
Ну так настрой лукапполя на эти справочники.
Anatoly Podgoretsky (2009-11-02 16:22:00) [139]Ну тогда используй DBComboBox с отбором уникальных значений.
Но я так понял, что речь идет все таки о копирование старых полей.
Andrewtitoff (2009-11-02 16:19:00) [140]
> Сергей М. © (02.11.09 16:14) [12]
> > большинство характеристик имеют 10-20 различных значенийНу
> так вынеси их в отдельныые справочники и читай-выбирай их
> оттуда ЛукапКомбоБоксами ..
Немогу, база написанна не мной и ей пользуются юзеры при помощи оболочки написанной на VB встроенном в Access..., поэтому я немогу менять структуру базы и вообще что - нибудь что повлияет на работу их оболочки...