Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.27;
Скачать: CL | DM;

Вниз

DBComboBox   Найти похожие ветки 

 
Andrewtitoff ©   (2009-11-02 15:39) [0]

Здравствуйте!, подскажите пожалуйста как сделать что бы в DBComboBox работал выпадающий список?, не ручным заполнением, т.к. у меня в таблице 80 полей и 7тысяч записей, а при ручном заполнении получается приличная тормозня т.к. при ручном заполнении приходится еще и проверять на наличие уже такой записи в DBComboBox-е (в таблице только одно поле ключевое и уникальное, все остальные могут повторяться сколько угодно хоть все 7тыс одинаковые...), или может быть что то другое использовать, а не DBComboBox, но нужна возможность редактирования...


 
clickmaker ©   (2009-11-02 15:41) [1]

не вполне ясна задача... может, DBLookupComboBox?


 
Sergey13 ©   (2009-11-02 15:41) [2]

> [0] Andrewtitoff ©   (02.11.09 15:39)

Может тебе нужен ДБЛукапКомбобокс?
Хотя подозреваю, что для такого объема справочника лучше бу написать отдельную формочку модальную для поиска и выбора.


 
Andrewtitoff ©   (2009-11-02 15:52) [3]

2 clickmaker
Да чего то я на форумах порылся - там пишут что DBLookupComboBox используется для связанных таблиц, а мне нужно работать только с одной, да и чего то DBLookupComboBox нихочет отобразать ничего, да и еще на форумах вычитал что оно вроде как не поддерживает редактирования.... =(((((
2 Sergey13
У меня для поиска по ключевому полю одна форма, которая открывает вторую, где отображаются все поля записи и при необходимости любое из них должно иметь возможность редактирования, значения все однотипные и должны быть в выпадающем списке, там порядка 60-ти ComboBox-ов, я попробовал засунуть заполнение в загрузку программы, но учитывая объем данных, то что база сетевая и то- что нужно отсеивать посторяющиеся значения - получил огромные тормоза, прога заполняет все это дело околу 2-х минут...


 
clickmaker ©   (2009-11-02 15:54) [4]

> там порядка 60-ти ComboBox-ов, я попробовал засунуть заполнение
> в загрузку программы, но учитывая объем данных, то что база
> сетевая

а какая СУБД?
может, select distinct спасет отца русской демократии?


 
Andrewtitoff ©   (2009-11-02 15:56) [5]

В DBLookupComboBox выбираю DataSource, DataField, ListSourse, ListField, KeyField - а он выдает ошибку "Circular datalinks are not allowed"...


 
Anatoly Podgoretsky ©   (2009-11-02 15:58) [6]

> Andrewtitoff  (02.11.2009 15:52:03)  [3]

DBLookupComboBox это для выбора из справочника.


 
Sergey13 ©   (2009-11-02 16:01) [7]

> [3] Andrewtitoff ©   (02.11.09 15:52)
> значения все однотипные и должны быть в выпадающем списке

А что за значения? Откуда они берутся по жизни то?


 
Andrewtitoff ©   (2009-11-02 16:01) [8]

2 clickmaker
БД формата Access 2000
использую ADOConnection, DataSourse, ADOTable, ну и естественно DBGrid


 
Andrewtitoff ©   (2009-11-02 16:04) [9]

2 Sergey13
Это лифтовая база, т.е. первое поле - уникальное(ключевое) - там Регистрационный номер лифта, а дальше название улицы, номер дома, парадной, диаметры валов, размеры камины и прочие характеристики, причем большинство характеристик имеют 10-20 различных значений...


 
Dennis I. Komarov ©   (2009-11-02 16:05) [10]

Вобщем все как обычно...

Я так понял, в DBGrid пихается Table? Вопрос: На какого банана юзверю видеть все содержимое несчастной Table?


 
Andrewtitoff ©   (2009-11-02 16:13) [11]


> Dennis I. Komarov ©   (02.11.09 16:05) [10]
> Вобщем все как обычно...Я так понял, в DBGrid пихается Table?
>  Вопрос: На какого банана юзверю видеть все содержимое несчастной
> Table?

Не совсем, вернее он конечно пихается, только там то все нормально, а ComboBox-ы на отдельной форме и некоторые юзеры должен иметь возможность поменять любое значение.., например после реконструкции лифта к рег. номеру дописывается буковка "Б", а в остальные поля вводятся новые значения(но не совсем во все, некоторые остаются) и соответственно что бы юзену не держать в голове типовые значения диаметров канатоведущих валов т.к. они все есть в базе - ему нужно просто выбрать новое значение из выпадающего списка....


 
Сергей М. ©   (2009-11-02 16:14) [12]


> большинство характеристик имеют 10-20 различных значений


Ну так вынеси их в отдельныые справочники и читай-выбирай их оттуда ЛукапКомбоБоксами ..


 
Andrewtitoff ©   (2009-11-02 16:19) [13]


> Сергей М. ©   (02.11.09 16:14) [12]
> > большинство характеристик имеют 10-20 различных значенийНу
> так вынеси их в отдельныые справочники и читай-выбирай их
> оттуда ЛукапКомбоБоксами ..

Немогу, база написанна не мной и ей пользуются юзеры при помощи оболочки написанной на VB встроенном в Access..., поэтому я немогу менять структуру базы и вообще что - нибудь что повлияет на работу их оболочки...


 
Anatoly Podgoretsky ©   (2009-11-02 16:22) [14]

Ну тогда используй DBComboBox с отбором уникальных значений.
Но я так понял, что речь идет все таки о копирование старых полей.


 
Sergey13 ©   (2009-11-02 16:26) [15]

> [11] Andrewtitoff ©   (02.11.09 16:13)
> т.к. они все есть в базе

Ну так настрой лукапполя на эти справочники.


 
Andrewtitoff ©   (2009-11-02 16:27) [16]

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) [17]


> Andrewtitoff ©   (02.11.09 16:13) [11]

А я про Combo ничего и не спрашивал...


 
Dennis I. Komarov ©   (2009-11-02 16:29) [18]


> then c:=true;
>  if c=false

А это что за пляски?


 
Andrewtitoff ©   (2009-11-02 16:29) [19]

2
> Sergey13 ©   (02.11.09 16:26) [15]
> > [11] Andrewtitoff ©   (02.11.09 16:13)> т.к. они все есть
> в базе Ну так настрой лукапполя на эти справочники.

Как?, там только одна таблица.., или я что то не понимаю?, а значения беруться из других записей, как выразился Anatoly Podgoretsky "что речь идет все таки о копирование старых полей"


 
Dennis I. Komarov ©   (2009-11-02 16:31) [20]


> Dennis I. Komarov ©   (02.11.09 16:29) [18]

Пардон... не пиши так все в строку, плохо читается...


 
Anatoly Podgoretsky ©   (2009-11-02 16:31) [21]

> Andrewtitoff  (02.11.2009 16:27:16)  [16]

Только тебе советовали запрос с отбором, а не таблица с позаписным сравнением.


 
Andrewtitoff ©   (2009-11-02 16:33) [22]

2 Dennis I. Komarov ©
1)Ну это я просто еще все ComboBox-ы на DBComboBox-ы не поменял....
2)А как?, я присваиваю с "ложь", потом перебираю ComboBox и если нахожу такое значение то с присваиваю "истина", и в итоге записываю в ComboBox значение только если с - "ложь" т.е. такой записи там еще нет


 
Dennis I. Komarov ©   (2009-11-02 16:33) [23]


> Andrewtitoff ©   (02.11.09 16:29) [19]

Приведи пример, что ты хочешь оттуда вытащить...


 
Anatoly Podgoretsky ©   (2009-11-02 16:35) [24]

> Andrewtitoff  (02.11.2009 16:33:22)  [22]

Что ты делаешь понятно, но так делать не нужно, как минимум это будет медленно.


 
Andrewtitoff ©   (2009-11-02 16:35) [25]


> Anatoly Podgoretsky ©   (02.11.09 16:31) [21]
> > Andrewtitoff  (02.11.2009 16:27:16)  [16]Только тебе советовали
> запрос с отбором, а не таблица с позаписным сравнением.

А как это сделать?, просто я с базами не буб-бум, можно сказать первый раз пришлось ковыряться.... =((((
Можно примерчик запроса?


 
Anatoly Podgoretsky ©   (2009-11-02 16:36) [26]


> Приведи пример, что ты хочешь оттуда вытащить...

Не что, а откуда, поскольку позиция несколько раз менялась.


 
Dennis I. Komarov ©   (2009-11-02 16:36) [27]

[4] + DBLookupComboBox на полученный DataSet


 
Anatoly Podgoretsky ©   (2009-11-02 16:37) [28]


> Можно примерчик запроса?

SELECT DISTINCT Fld FROM Tbl ORDER BY Fld


 
Andrewtitoff ©   (2009-11-02 16:37) [29]


> Dennis I. Komarov ©   (02.11.09 16:33) [23]
> > Andrewtitoff ©   (02.11.09 16:29) [19] Приведи пример,
>  что ты хочешь оттуда вытащить...

Как что?, ну допустим каждый лифт находится на какой то улице, так вот допустим на Ленинском проспекте 400 лифтов, а мне нужно что бы в ComboBox-е была только одна запись "Ленинский пр-т"


 
Dennis I. Komarov ©   (2009-11-02 16:38) [30]


> Anatoly Podgoretsky ©   (02.11.09 16:36) [26]

Ну я понял, что у него всего одна, но мега таблица...

И он не ответил, на какого банана ее всю показывать пользователю...


 
Anatoly Podgoretsky ©   (2009-11-02 16:39) [31]

А тут уже и ComboBox не нужен, он же для выбора, а из чего выбирать из одной записи что ли?


 
Сергей М. ©   (2009-11-02 16:40) [32]


> Немогу, база написанна не мной


Что, даже и подсмотреть нельзя, индексированы ли интересующие тебя поля ?


 
Andrewtitoff ©   (2009-11-02 16:40) [33]


> 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:41) [34]

> Dennis I. Komarov  (02.11.2009 16:38:30)  [30]

Потому что таблица, а не набор данных.


 
clickmaker ©   (2009-11-02 16:41) [35]

> так вот допустим на Ленинском проспекте 400 лифтов, а мне
> нужно что бы в ComboBox-е была только одна запись "Ленинский
> пр-т"

там такая что-ли таблица
Лифт1  Ленинский пр-т
...
Лифт400  Ленинский пр-т

то есть текстом все адреса дублируются? Жесть.
Беги оттуда, пока не поздно


 
Anatoly Podgoretsky ©   (2009-11-02 16:42) [36]

Сейчас у него голова кругом пойдет от обилия информации, которую он к тому же не понимает. А ведь мы еще и говорить то по сути не начали.


 
Dennis I. Komarov ©   (2009-11-02 16:42) [37]


> Потому что таблица, а не набор данных.

???


 
Andrewtitoff ©   (2009-11-02 16:44) [38]


> Dennis I. Komarov ©   (02.11.09 16:38) [30]
> > Anatoly Podgoretsky ©   (02.11.09 16:36) [26] Ну я понял,
>  что у него всего одна, но мега таблица...И он не ответил,
>  на какого банана ее всю показывать пользователю...

Я писал, да и некоторые юзеры в режиме аблицы должны это видеть так что нужно...


> Anatoly Podgoretsky ©   (02.11.09 16:39) [31]
> А тут уже и ComboBox не нужен, он же для выбора, а из чего
> выбирать из одной записи что ли?

Млин, ну лифты же не только на Ленинском проспекте есть, я просто пример привел, а еще и на других улицах тоже по многу лифтов на улице...

> Сергей М. ©   (02.11.09 16:40) [32]
> > Немогу, база написанна не мнойЧто, даже и подсмотреть
> нельзя, индексированы ли интересующие тебя поля ?

Почему?, посмотреть можно, первое поле ключевое и по нему индексируется


 
Anatoly Podgoretsky ©   (2009-11-02 16:45) [39]

> Dennis I. Komarov  (02.11.2009 16:42:37)  [37]

AdoTable


 
Andrewtitoff ©   (2009-11-02 16:47) [40]


> clickmaker ©   (02.11.09 16:41) [35]
> > так вот допустим на Ленинском проспекте 400 лифтов, а
> мне > нужно что бы в ComboBox-е была только одна запись
> "Ленинский > пр-т"там такая что-ли таблицаЛифт1  Ленинский
> пр-т...Лифт400  Ленинский пр-тто есть текстом все адреса
> дублируются? Жесть.Беги оттуда, пока не поздно

Да!, именно так и есть, кстати на это есть свои причины, так же с номерами домов, а еще страшнее с парадными т.к. их как правило штук 5...
Но деваться мне пока что некуда отсюда.... =(((



Страницы: 1 2 3 4 вся ветка

Текущий архив: 2009.12.27;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.01 c
15-1256515183
POOP
2009-10-26 02:59
2009.12.27
Программа для рисования линий


2-1257617819
Fantnk
2009-11-07 21:16
2009.12.27
Завершение thread Не происходит


8-1200828685
artkil
2008-01-20 14:31
2009.12.27
Способы вывода видео на экран


2-1257922755
stas
2009-11-11 09:59
2009.12.27
TWEBBrowser скрыть ошибки


15-1256927974
miek
2009-10-30 21:39
2009.12.27
irrlicht