Форум: "Начинающим";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
Вниз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...
Но деваться мне пока что некуда отсюда.... =(((
← →
Dennis I. Komarov © (2009-11-02 16:49) [41]
> Anatoly Podgoretsky © (02.11.09 16:45) [39]
Да я понимаю, что AdoTable, я не понял [34]. К чему оно?
← →
Dennis I. Komarov © (2009-11-02 16:51) [42]
> Andrewtitoff © (02.11.09 16:47) [40]
Шаг 1.
Получи с через SQL нужный DataSet, т.е. то что нужно отображать в Combo...
← →
Andrewtitoff © (2009-11-02 16:52) [43]
> Dennis I. Komarov © (02.11.09 16:49) [41]
> > Anatoly Podgoretsky © (02.11.09 16:45) [39] Да я понимаю,
> что AdoTable, я не понял [34]. К чему оно?
Я так понял что он про то что это все в таблице отображается, но это я учел и на время заполнения таблицу отклчаю т.к. если с таблицей - то вообще страшно представить сколько это все будет тормозить... =)))
← →
Dennis I. Komarov © (2009-11-02 16:53) [44]
> Я писал, да и некоторые юзеры в режиме аблицы должны это
> видеть так что нужно...
1 - у тебя видят все, а не некоторые
2 - вряд ли тем кому нужно, действительно нужны все записи таблицы сразу
← →
Andrewtitoff © (2009-11-02 16:54) [45]
> Dennis I. Komarov © (02.11.09 16:51) [42]
> > Andrewtitoff © (02.11.09 16:47) [40] Шаг 1.Получи с
> через SQL нужный DataSet, т.е. то что нужно отображать в
> Combo...
Ну я это уже примерно понял, только подскажите мне дураку пожалуйста - как?, т.к. я неразу SQL не пользовался... =(((
← →
Sergey13 © (2009-11-02 16:55) [46]> [19] Andrewtitoff © (02.11.09 16:29)
> Как?, там только одна таблица
Как вариант.
Запросы по каждому полю с дистинктом - в отдельные "справочные" датасеты. На них лукап поля настроить.
Но по 60 полям по любому будет подтормаживать, ИМХО. Это проектирование БД ниже плинтуса так сказывается.
← →
Andrewtitoff © (2009-11-02 16:55) [47]
> Dennis I. Komarov © (02.11.09 16:53) [44]
> > Я писал, да и некоторые юзеры в режиме аблицы должны это
> > видеть так что нужно...1 - у тебя видят все, а не некоторые2
> - вряд ли тем кому нужно, действительно нужны все записи
> таблицы сразу
Бывает и так - что нужны все...
← →
Anatoly Podgoretsky © (2009-11-02 16:55) [48]
> Да я понимаю, что AdoTable, я не понял [34]. К чему оно?
К тому, что идет прямой доступ, или по крайней мере по технологии прямого доступа и спрашивается где тут место для запросов.
По последним данным тут место минимум для фильтров.
← →
Сергей М. © (2009-11-02 16:57) [49]
> первое поле ключевое и по нему индексируется
И все ? И больше ни единого индекса в этой таблице ?
А объектов учета все больше и больше в таблицу добавляется с каждым днем ?
Чудовищно..
Правильно тебе говорят - беги оттуда пока не поздно)
← →
Сергей М. © (2009-11-02 17:01) [50]
> с базами не буб-бум
Ассоциация напрашивается с приключениями Бендера в Васюках)
← →
Andrewtitoff © (2009-11-02 17:02) [51]
> Sergey13 © (02.11.09 16:55) [46]
> > [19] Andrewtitoff © (02.11.09 16:29)> Как?, там только
> одна таблицаКак вариант.Запросы по каждому полю с дистинктом
> - в отдельные "справочные" датасеты. На них лукап поля настроить.
> Но по 60 полям по любому будет подтормаживать, ИМХО. Это
> проектирование БД ниже плинтуса так сказывается.
А как запрос то делать?, я же "0" в этом... =((((
А датасеты то зачем?, мне главное в при загрузке программы по быстрому в комбобоксы запихнуть все и пускай оно там будет
Ну к сожалению база проектировалась в 90-стых если не раньше, причем заказывали "профессионалам" в Москве, а что получилось -то получилось - это отдельная тема для разговора, а сейчас приходится работать только с тем что есть... =(((
← →
Andrewtitoff © (2009-11-02 17:06) [52]
> Сергей М. © (02.11.09 16:57) [49]
> > первое поле ключевое и по нему индексируетсяИ все ? И
> больше ни единого индекса в этой таблице ?А объектов учета
> все больше и больше в таблицу добавляется с каждым днем
> ?Чудовищно..Правильно тебе говорят - беги оттуда пока не
> поздно)
А зачем еще индексировать?, и тем более все остальные поля могут повторяться, т.е. только регистрационный номер лифта уникальный и не может быть два одинаковых...
← →
Dennis I. Komarov © (2009-11-02 17:07) [53]
> Anatoly Podgoretsky © (02.11.09 16:55) [48]
Ааа, вон оно куда :)))
Лентяи из борланд ничего не придумали кроме AdoTable ;)
← →
Сергей М. © (2009-11-02 17:08) [54]
> зачем еще индексировать?
Затем чтобы запрос [28] отрабатывал максимально быстро.
← →
Jeer © (2009-11-02 17:08) [55]
> А зачем еще индексировать?, и
Начни с книжек.
← →
Сергей М. © (2009-11-02 17:10) [56]
> Jeer © (02.11.09 17:08) [55]
Какие книжки в Васюках ?
Тут бы бабла содрать по-быстрому да ноги успеть унести)
← →
Andrewtitoff © (2009-11-02 17:14) [57]
> Сергей М. © (02.11.09 17:08) [54]
> > зачем еще индексировать?Затем чтобы запрос [28] отрабатывал
> максимально быстро.
Ну в принципе индексированными наверное можно хоть все столбцы сделать, я думаю на работу других юзеров это не должно отразиться?
← →
Andrewtitoff © (2009-11-02 17:15) [58]
> Сергей М. © (02.11.09 17:10) [56]
> > Jeer © (02.11.09 17:08) [55]Какие книжки в Васюках ?
> Тут бы бабла содрать по-быстрому да ноги успеть унести)
Неправда, это я делаю совершенно бесплатно, а про ноги - это верно... =)))
← →
Сергей М. © (2009-11-02 17:17) [59]
> думаю на работу других юзеров это не должно отразиться
Не знаю.
Во-первых, ты сам сказал что нельзя.
Во-вторых, если напортачишь, то бить будут тебя, а не кого-то другого)
> делаю совершенно бесплатно
Тебе разве не хочется кушать ?)
← →
Dennis I. Komarov © (2009-11-02 17:19) [60]
> бить будут тебя, а не кого-то другого)
это неизбежно...
← →
Andrewtitoff © (2009-11-02 17:22) [61]2 Сергей М. ©
Я не говорил что нельзя ничего, я сказал что нельзя ничего - что повлияет на работу бейсиковской оболочки, а все что не повлияет - можно!
Ну а бить - то да , будут меня больно и ногами...
Ну хочется конечно, но тут другая немного ситуация, я занимаюсь этим в рабочее время т.к. я сижу на своем рабочем месте и чем то занят - мне все рабно заплатят за другую работу, даже если она не будет выполнена... =)))
← →
Сергей М. © (2009-11-02 17:25) [62]
> нельзя ничего - что повлияет на работу бейсиковской оболочки,
> а все что не повлияет - можно
Так что же мешает залезть в потроха этой оболочки да посмотреть что там на что влияет ?
← →
Andrewtitoff © (2009-11-02 17:28) [63]Да собственно ничего кроме того что я ничего не понимаю в бейсике и нет никакого желания копаться в этом д**ьме, =))))
Там вообще полный мрак, это круче того что я пишу!... =)))))
К томуже ее правили несколько человек в разные времена, а то что получилось в итоге словами не описать... =)))
← →
Dennis I. Komarov © (2009-11-02 18:17) [64]В печку ее... (С) Преображенский Ф.Ф.
← →
Сергей М. © (2009-11-02 18:19) [65]
> я ничего не понимаю в бейсике
> я с базами не буб-бум
ВизуальныйВасик - тот же ОбъектныйПаскаль (ну или наоборот), только вид сбоку.
Да и не слишком ли много этих "не знаю", "не бум-бум" ?
> нет никакого желания копаться в этом д**ьме
Ты в нем погрязнешь по самые помидоры, уверяю тебя, если будешь двигаться в том же направлении, что и сейчас.
И дело не только и далеко не столько в Васике.
← →
Sergey13 © (2009-11-03 08:39) [66]> [51] Andrewtitoff © (02.11.09 17:02)
> А датасеты то зачем?,
Это попытка организовать псевдосправочники, которых нет в реальной БД.
← →
Andrewtitoff © (2009-11-03 09:21) [67]2
> Sergey13 © (03.11.09 08:39) [66]
> > [51] Andrewtitoff © (02.11.09 17:02)> А датасеты то
> зачем?, Это попытка организовать псевдосправочники, которых
> нет в реальной БД.
Ну это то я понял, только я не понял что оно мне дает?, почему нельзя просто загрузить все в ComboBox-ы и пускай там и будет?...
← →
Sergey13 © (2009-11-03 09:36) [68]> [67] Andrewtitoff © (03.11.09 09:21)
Ну тебе же хочется "выпадающий список"?
Любая экономия на проектировании БД всегда вылезает боком на этапе написания клиента. Вот люди съекономили, а париться придется тебе.
Можно еще переписать все нафиг. Я не думаю, что вокруг единственной таблицы сильно много понагорожено. Да и записей - кот наплакал за 10 лет работы. Может ее вообще стОит перегнать в ексель, где ее видимо и "проектировали".
← →
Jeer © (2009-11-03 09:36) [69]
> почему нельзя просто загрузить
Сделать можно все.
Если же, после всего вышесказанного, ты продолжаешь считать, что оно тебе именно так и надо - делай.
← →
Andrewtitoff © (2009-11-03 10:36) [70]
> Sergey13 © (03.11.09 09:36) [68]
> > [67] Andrewtitoff © (03.11.09 09:21)Ну тебе же хочется
> "выпадающий список"?Любая экономия на проектировании БД
> всегда вылезает боком на этапе написания клиента. Вот люди
> съекономили, а париться придется тебе.Можно еще переписать
> все нафиг. Я не думаю, что вокруг единственной таблицы сильно
> много понагорожено. Да и записей - кот наплакал за 10 лет
> работы. Может ее вообще стОит перегнать в ексель, где ее
> видимо и "проектировали".
Ну жто понятно что париться мне, только яже говорю что менять могу только то - что не повлияет на работу юзеров т.к. базой пользуются ежедневно...
А какой смысл в ексель перегонять?, юзенрам нужно делать выборки и групповые операции, как они в екселе их делать будут?
> Jeer © (03.11.09 09:36) [69]
> > почему нельзя просто загрузитьСделать можно все.Если же,
> после всего вышесказанного, ты продолжаешь считать, что
> оно тебе именно так и надо - делай.
Ну меня в общем то говоря действительно все устраивает кроме тормозов при загрузке к комбобоксы..., вот я и пытаюсь от кого нибудь добиться как грамотно все это дело в них загрузить что бы это было немного побыстрее?
← →
clickmaker © (2009-11-03 10:52) [71]> вот я и пытаюсь от кого нибудь добиться как грамотно все
> это дело в них загрузить
тут второй день пытаются объяснить, что быстрее и лучше, чем select distinct в отдельные справочные датасеты, не получится. Если без переделки структуры базы
← →
Сергей М. © (2009-11-03 11:03) [72]
> кроме тормозов при загрузке к комбобоксы
Сделай неуникальный индекс по полю Fld
ADOQuery.SQL := "SELECT DISTINCT Fld FROM Tbl ORDER BY Fld";
ADOQuery.CursorType := ctOpenForwardOnly;
ADOQuery.Open;
while not ADOQuery.Eof do begin
[DB]ComboBox.Items.Add(ADOQuery.Fields[0].AsString);
ADOQuery.Next;
end;
← →
Andrewtitoff © (2009-11-03 11:03) [73]
> clickmaker © (03.11.09 10:52) [71]
> > вот я и пытаюсь от кого нибудь добиться как грамотно все
> > это дело в них загрузить тут второй день пытаются объяснить,
> что быстрее и лучше, чем select distinct в отдельные справочные
> датасеты, не получится. Если без переделки структуры базы
Это ADOQuery нужно, или можно без него?
← →
Сергей М. © (2009-11-03 11:06) [74]
> или можно без него?
Или можно. Даже еще лучше.
см. TADODataSet
← →
clickmaker © (2009-11-03 11:07) [75]> Это ADOQuery нужно, или можно без него?
да не принципиально. TADODataSet можно
← →
Sergey13 © (2009-11-03 11:15) [76]> [70] Andrewtitoff © (03.11.09 10:36)
> вот я и пытаюсь
У меня начинает складываться впечатление, что ты пытаешься добиться того, что бы кто-то за тебя написал рабочий код.
Создаешь новый датасет F28. В запросе пишешь
select distinct field28 from my_super_table
В своем ОСНОВНОМ датасете (где все записи со всеми полями) настраиваешь поле field28 как лукапное, которое "глядит" на датасет F28. В твоем гриде на поле field28 появляется выпадающий список со всеми вариантами заполнения данного поля.
Повторяешь все для остальных 59-и изменяемых полей.
На 7 тысячах записей 60 запросов с distinct будут конечно подтормаживать. Насколько - надо пробовать и проверять.
← →
Andrewtitoff © (2009-11-03 11:37) [77]С этим пока ясно, ща попробую, можно еще один маленький вопросик?, почему DBEdit считает что свойство текст пустое, пока не ткнешь один раз в него?, т.е.
if DBEdit7.DataField =Form3.ADOTable1.Fields[0].Value then
не работает при запуске программы, видимо считает его пустым, но после того как один раз ткнуть указателем мышки - все начинает работать?
← →
Dennis I. Komarov © (2009-11-03 11:38) [78]ФСЕ ФИГНЯ
1. Копируем реальную базу со всеми причиндалами на ВВ
2. Изучаем структуру базы, характер информации, проектируем нормальную
3. Пишем скрипты перегонки из старой в новую (ес-но все на нашей копии)
4. Редактируем причиндалы на ВВ до их полной работоспособности
5. Когда ужин уже давно кончился, а завтрак еще и не думал начинаться
5.1. Делаем еще одну копию реальной базы, со всеми ВВ
5.2. Создаем новую базу и перегоняем усе данные
5.3. Перегоняем все исправленные ВВ
5.4. Идем спать...
6. Когда завтрак закончился
6.1. Если у юзеров все работает, то можно приступать к написанию нормального софта
6.2. Если у юзеров ничерта не работает и вход пошли тяжелые фигуры, подставляем последнюю копию и...
← →
Andrewtitoff © (2009-11-03 11:54) [79]
> С этим пока ясно, ща попробую, можно еще один маленький
> вопросик?, почему DBEdit считает что свойство текст пустое,
> пока не ткнешь один раз в него?, т.е. if DBEdit7.DataField
> =Form3.ADOTable1.Fields[0].Value thenне работает при запуске
> программы, видимо считает его пустым, но после того как
> один раз ткнуть указателем мышки - все начинает работать?
>
Ой извините наврал, это я дурак... =)))
← →
Andrewtitoff © (2009-11-05 11:36) [80]
> Сергей М. © (03.11.09 11:03) [72]
> > кроме тормозов при загрузке к комбобоксыСделай неуникальный
> индекс по полю Fld ADOQuery.SQL := "SELECT DISTINCT Fld
> FROM Tbl ORDER BY Fld";ADOQuery.CursorType := ctOpenForwardOnly;
> ADOQuery.Open;while not ADOQuery.Eof do begin [DB]ComboBox.
> Items.Add(ADOQuery.Fields[0].AsString); ADOQuery.Next;
> end;
Написал вот так:
Form1.ADOQuery1.SQL.Text := "select distinct field1 from lift";
Form1.ADOQuery1.CursorType := ctOpenForwardOnly;
Form1.ADOQuery1.Open;
while not Form1.ADOQuery1.Eof do begin
Form2.DBComboBox1.Items.Add(Form1.ADOQuery1.Fields[0].AsString);
Form1.ADOQuery1.Next;
end;
Выдает ошибку:
"Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена"
← →
Сергей М. © (2009-11-05 11:38) [81]
> Выдает ошибку
На какой строчке ?
← →
Andrewtitoff © (2009-11-05 11:48) [82]Form1.ADOQuery1.Open;
как я понял, путем закоментаривания строчек, т.к. он не подчеркивает строку этой ошибки
← →
Andrewtitoff © (2009-11-05 11:50) [83]Ой, какжется это потому что ADOQuery у меня не активен, при попытке нажать на активный - ругается "Параметр field1 не имеет значения по умолчанию"
← →
Andrewtitoff © (2009-11-05 11:53) [84]Только где задать значение этому параметру?
← →
Сергей М. © (2009-11-05 11:53) [85]field1 у тебя, надеюсь, не ключевое поле ?)
← →
Сергей М. © (2009-11-05 11:56) [86]
> где задать значение этому параметру?
Какому еще "параметру" ?
С какой луны к тебе свалились какие-то там параметры ?
"field1" - это, насколько я понимаю, реальное имя реально существующего неключевого поля в таблице "lift" ?
← →
Andrewtitoff © (2009-11-05 11:57) [87]Я вообще не знаю что это такое...
А вообще самое первое поле нулевое у меня ключевое, называется "REGNUM"
← →
Dennis I. Komarov © (2009-11-05 12:22) [88]
> А вообще самое первое поле нулевое у меня ключевое
Это как?
← →
Anatoly Podgoretsky © (2009-11-05 13:08) [89]> Andrewtitoff (05.11.2009 11:50:23) [83]
Удали этот компонент, и брось по новому на форму.
← →
sniknik © (2009-11-05 14:02) [90]Сергей М. © (02.11.09 18:19) [65]
> ВизуальныйВасик - тот же ОбъектныйПаскаль (ну или наоборот), только вид сбоку.
это еще и функции которые можно использовать в запросах, т.к. ->
Andrewtitoff © (02.11.09 16:01) [8]
> БД формата Access 2000
и потому без него никак.
учите бейсик, источник функций... :)
← →
Andrewtitoff © (2009-11-06 09:40) [91]
> Dennis I. Komarov © (05.11.09 12:22) [88]
> > А вообще самое первое поле нулевое у меня ключевоеЭто
> как?
В смысле как?, ну поле к которому можно обратиться ADOTable4.Fields[0] называется "REGNUM" и оно в таблице ключевое...
Незнаю как тут картинку вставить, наверное ни как, только ссылкой, но выглядит это в конструкторе так:
Индексы LIFT:
индекс | имя поля | порядок сортировки
Primary Key | REGNUM | по возрастанию
> Anatoly Podgoretsky © (05.11.09 13:08) [89]
> > Andrewtitoff (05.11.2009 11:50:23) [83]Удали этот компонент,
> и брось по новому на форму.
Несколько раз пробовал, все равно такая же байда, может чего не так делаю? =(((
← →
Anatoly Podgoretsky © (2009-11-06 09:46) [92]Судя по количеству сообщений в данной теме, не то что бы не то делаешь, а вообще слабо представляешь, что делаешь.
Не помню предлагали ли уже пригласить программиста или нет, но это самое правильное решение.
← →
Сергей М. © (2009-11-06 09:46) [93]
> Andrewtitoff © (06.11.09 09:40) [91]
На [86] ответить сподобишься ?
← →
Andrewtitoff © (2009-11-06 09:55) [94]
> Сергей М. © (06.11.09 09:46) [93]
> > Andrewtitoff © (06.11.09 09:40) [91]На [86] ответить
> сподобишься ?
Ой, извиняюсь что не пометил, я следующим постом [87] и отвечал на него, в общем я незнаю что это такоее, вот структура таблицы:
Рег.номер Улица Дом Корп Пар Район Участок Бригада Владелец Ведомство Договор ДЭУ ЖСК Здание Изготовитель Дата изготовления Зав № Дата ввода в эксплуатацию Этажей Остановок Грузоподьемность Скорость Тип дверей Расположение МП Вход в МП Шахта размер высота Размер кабины Ограждение кабины Связь Пульт Тип (связи) Тип лифта Единая сх. Упр Схема управл Блок парной работы или гр Редуктор Передаточное число Компоновка Дв-ль гл прив Форма исп. двигателя главного привода Дв-ль привод форма исполнения привода дверей КВШ Кол-во ручьев Блоки/диам Диаметр каната несущего Длина каната несущего Тэл-Магнит Констр пола Контр загр Дата модерн Выполненная модернизация Освидетельствование Дата проведения кап. Ремонта Периодичность кап. Ремонта Дата следующего кап. Ремонта Ктоимость КТО Начало действия договора Конец действия договора Округление (КТО) Кто обслуживаетОбслуживается = 1, нет = 0 ??? Обоснов ра Площадь ??? Противовес Шкаф управл Дата последней экспертизы Номер эксп Кто проводил Действует до (экспертиза) Тип УБЛ Когда установлен УБЛ Продлен срок очередной эксплуатации МК до Дата очередной экспертизы МК История экспертиз ??? Стоимость освидетельствования
REGNUM STREET HOUSE CORP PARNUM REGION PLACE BRIGADE HOLDER BELONG CONTRACT DEU ZSK BUILDING MAKER DATE NUMBER EXPLOAT FLOOR STOP WEIGHT SPEED DOOR LOCATION ENTRANCE MINE SH_SIZE HEIGHT CAB_SIZE FENSE LINK CONTROL LINKTYPE LIFTTYPE COMCIR CIRCUIT BLOCK REDUCTOR TRANSFER SET ENGINE ENGINEFO DRIVE DOORSFOR KVDIAM KVNUM BLOCKDIAM ROPEDIAM ROPELEN BREAKS CONSTRUCT LOADCOUNT RECONSTRUC CHANGE REVISION REPAIRDATE PERIOD NEXTDATE SERVCOST DBEGIN DEND ISROUND SERVERSERVE TESTED OBOSN S2 BALANCE_ID BALANCE PANEL DEXP NUMBERE EWHO EXPIRATIONDATE UBLTYPE UBLWHEN PRODLENOMK NEXTEXP EXPS FERBOTTEN OSVCOST
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 6263 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
← →
Andrewtitoff © (2009-11-06 09:58) [95]Это все поля, которые есть в таблице, табблица называется "LIFT":
REGNUM STREET HOUSE CORP PARNUM REGION PLACE BRIGADE HOLDER BELONG CONTRACT DEU ZSK BUILDING MAKER DATE NUMBER EXPLOAT FLOOR STOP WEIGHT SPEED DOOR LOCATION ENTRANCE MINE SH_SIZE HEIGHT CAB_SIZE FENSE LINK CONTROL LINKTYPE LIFTTYPE COMCIR CIRCUIT BLOCK REDUCTOR TRANSFER SET ENGINE ENGINEFO DRIVE DOORSFOR KVDIAM KVNUM BLOCKDIAM ROPEDIAM ROPELEN BREAKS CONSTRUCT LOADCOUNT RECONSTRUC CHANGE REVISION REPAIRDATE PERIOD NEXTDATE SERVCOST DBEGIN DEND ISROUND SERVERSERVE TESTED OBOSN S2 BALANCE_ID BALANCE PANEL DEXP NUMBERE EWHO EXPIRATIONDATE UBLTYPE UBLWHEN PRODLENOMK NEXTEXP EXPS FERBOTTEN OSVCOST
← →
Сергей М. © (2009-11-06 10:07) [96]
> Написал вот так:
> Form1.ADOQuery1.SQL.Text := "select distinct field1 from
> lift";
Тогда что такое field1 ?
Никакими "field1" в [95] даже близко не пахнет ..
← →
Andrewtitoff © (2009-11-06 10:19) [97]
> Сергей М. © (06.11.09 10:07) [96]
> > Написал вот так:> Form1.ADOQuery1.SQL.Text := "select
> distinct field1 from > lift";Тогда что такое field1 ?Никакими
> "field1" в [95] даже близко не пахнет ..
Ой, точно, я дебил... =)))
← →
Dennis I. Komarov © (2009-11-06 10:22) [98]
> Andrewtitoff © (06.11.09 09:40) [91]
>
> > Dennis I. Komarov © (05.11.09 12:22) [88]
> > > А вообще самое первое поле нулевое у меня ключевое Это
> > как?
>
> В смысле как? ?, ну поле к которому можно обратиться ADOTable4.Fields[0] называется "REGNUM"
И пойми тебя...
← →
Andrewtitoff © (2009-11-06 10:22) [99]Да, так, все работает, сейчас скопирую для каждого поля и и отпишусь что получилось по скорости
← →
Andrewtitoff © (2009-11-06 10:23) [100]2 Dennis I. Komarov ©
А что я не так сказал?
← →
Andrewtitoff © (2009-11-06 10:41) [101]2 Сергей М. ©
А это все дело ни как нельзя в цикл засунуть?
← →
Сергей М. © (2009-11-06 10:50) [102]
> Andrewtitoff © (06.11.09 10:41) [101]
Какое такое "все дело" ?)
← →
Andrewtitoff © (2009-11-06 10:55) [103]2 Сергей М. ©
Да, действительно значительно быстрее и вполне приемлимо по скорости получилось! =)))
> Какое такое "все дело" ?)
Ну вот жто дело:
Form1.ADOQuery1.SQL.Text := "select distinct STREET from lift";
Form1.ADOQuery1.Open;
while not Form1.ADOQuery1.Eof do begin
Form2.DBComboBox1.Items.Add(Form1.ADOQuery1.Fields[0].AsString);
Form1.ADOQuery1.Next;
end;
60 раз подряд для каждого нужного поля..., как то совсем не гуд...
← →
Сергей М. © (2009-11-06 11:03) [104]Ну почему же нельзя ?
Можно и засунуть)
← →
clickmaker © (2009-11-06 11:06) [105]> [103] Andrewtitoff © (06.11.09 10:55)
подсказка
Form1.ADOQuery1.SQL.Text := Format("select distinct %s from lift", [FieldNames[i]]);
← →
Andrewtitoff © (2009-11-06 11:06) [106]
> Сергей М. © (06.11.09 11:03) [104]
> Ну почему же нельзя ?Можно и засунуть)
ОЙ, а как?, а то чет я ни как не соображу, расскажите пожалуйста!, заранее очень признателен!
← →
clickmaker © (2009-11-06 11:08) [107]кстати, есть такая фишка, как множественные рекордсеты.
т.е. в запросе можно написать сразу все селекты, а обращаться к ним одним ADOQuery безо всяких циклов. см. NextRecordset в справке
← →
Andrewtitoff © (2009-11-06 11:09) [108]
> clickmaker © (06.11.09 11:06) [105]
> > [103] Andrewtitoff © (06.11.09 10:55)подсказкаForm1.
> ADOQuery1.SQL.Text := Format("select distinct %s from lift",
> [FieldNames[i]]);
Ну с этим то болеменее все ясно, хотя не совсем ясно как пропустить некоторые поля, мне же не все нужны....
а вот с этим совсем непонятно:
Form2.DBComboBox1.Items.Add(Form1.ADOQuery1.Fields[0].AsString);
_______^^^^^^^^^__________________
с номером комбовокса то как быть?
← →
Сергей М. © (2009-11-06 11:13) [109]
> с номером комбовокса то как быть?
Пронумеруй-проинтексируй их тем или иным образом либо создай массив из ссылок на них - тогда к ним можно будет обращаться в цикле.
← →
Andrewtitoff © (2009-11-06 11:15) [110]
> Сергей М. © (06.11.09 11:13) [109]
> > с номером комбовокса то как быть?Пронумеруй-проинтексируй
> их тем или иным образом либо создай массив из ссылок на
> них - тогда к ним можно будет обращаться в цикле.
Они у меня пронумерованы по номеру поля, а поля, нужные, идут не попорядку... =((((
А как в принципе тобращаться то в цикле к таким вещам?, меня этот вопрос давно интересует!
← →
Andrewtitoff © (2009-11-06 11:17) [111]А можно как нибудь сделать цикл подряд, с условием что если комбо-бокс с таким номером существует - то заполнять его, а если нет - пропускать?, т.е. что бы просто пустить цикл от 0 до 80?...
← →
Andrewtitoff © (2009-11-06 11:19) [112]
> Andrewtitoff © (06.11.09 11:15) [110]
> > Сергей М. © (06.11.09 11:13) [109]> > с номером комбовокса
> то как быть?Пронумеруй-проинтексируй > их тем или иным образом
> либо создай массив из ссылок на > них - тогда к ним можно
> будет обращаться в цикле.Они у меня пронумерованы по номеру
> поля, а поля, нужные, идут не попорядку... =((((А как в
> принципе тобращаться то в цикле к таким вещам?, меня этот
> вопрос давно интересует!
т.е. ComoBox1 заполняется значениями Form1.ADOQuery1.Fields[1].AsString и.т.д. ComoBox N -> ADOQuery1.Fields[N]
← →
Сергей М. © (2009-11-06 11:26) [113]Одно из простейших решений:
Помести свои комбобоксы на, например, TPanel, в св-ве Tag каждого укажи индекс соотв.поля в своей таблице.
Тогда
for i := 0 to ComboPanel.ComponentCount - 1 do
if ComboPanel.Components[i] is TComboBox then
with TComboBox(ComboPanel.Components[i]) do
begin
FieldIndex := Tag;
....
end;
← →
sniknik © (2009-11-06 11:35) [114]> кстати, есть такая фишка, как множественные рекордсеты.
access/jet не поддерживает.
← →
Andrewtitoff © (2009-11-06 11:53) [115]
> Сергей М. © (06.11.09 11:26) [113]
> Одно из простейших решений:Помести свои комбобоксы на, например,
> TPanel, в св-ве Tag каждого укажи индекс соотв.поля в своей
> таблице.Тогдаfor i := 0 to ComboPanel.ComponentCount - 1
> do if ComboPanel.Components[i] is TComboBox then with
> TComboBox(ComboPanel.Components[i]) do begin
> FieldIndex := Tag;.... end;
А почему так ему нравится:if Form2.Components[i] is TComboBox then
а так не хочеТ:if Form2.Components[i] is TDBComboBox then
подчеркивает TDBComboBox....
← →
Сергей М. © (2009-11-06 11:56) [116]
> подчеркивает TDBComboBox
Молча подчеркивает ?)
← →
Andrewtitoff © (2009-11-06 12:02) [117]Undeclared identifier: "TDBComboBox"
Сорри, это опять я тупанул, там в юсесах небыло прописано DB...
← →
Сергей М. © (2009-11-06 12:03) [118]
> опять я тупанул
Что-то подозрительно часто это происходит)
← →
Andrewtitoff © (2009-11-06 12:40) [119]
> Сергей М. © (06.11.09 12:03) [118]
> > опять я тупанулЧто-то подозрительно часто это происходит)
Ну да, бывает, =)))
просто отвлекают часто еще... =)))
А какое свойство отвечает за порядковый номер компонента?, т.е. что-бы без Таг-а обойтись - а так же по Components[i] обращаться?, или так нельзя?
← →
Сергей М. © (2009-11-06 12:42) [120]
> какое свойство отвечает за порядковый номер компонента?
Компонент не имеет порядкового номера.
← →
Andrewtitoff © (2009-11-06 12:46) [121]
> Сергей М. © (06.11.09 12:42) [120]
> > какое свойство отвечает за порядковый номер компонента?
> Компонент не имеет порядкового номера.
Да, я уже осознал, делаю уже через Таг, правда не стал никуда размещать, делаю прям на форме
← →
Anatoly Podgoretsky © (2009-11-06 12:51) [122]> Andrewtitoff (06.11.2009 12:40:59) [119]
У компонентов нет порядковых номеров.
← →
Сергей М. © (2009-11-06 12:55) [123]
> делаю прям на форме
На форме кроме тех комбобоксов у тебя наверняка еще туева хуча всякоразных компонентов.
И сей факт исключает возможность обойтись без проверки
Components[i] is TComboBox
← →
Andrewtitoff © (2009-11-06 13:04) [124]
> Сергей М. © (06.11.09 12:55) [123]
> > делаю прям на формеНа форме кроме тех комбобоксов у тебя
> наверняка еще туева хуча всякоразных компонентов.И сей факт
> исключает возможность обойтись без проверки Components[i]
> is TComboBox
Да, так я с проверкой делаю, а что это плохо?
← →
Сергей М. © (2009-11-06 13:14) [125]
> а что это плохо?
А разве плохо зайдя в подъезд доехать на лифте до нужного 7го этажа, просто нажав кнопку с цифрой "7", вместо того чтобы шлепать туда пешком по лестнице и считать этажи самому ?)
← →
Andrewtitoff © (2009-11-06 13:32) [126]Млин, чет я уже совсем с ума схожу, пишу так:
for i := 0 to Form2.ComponentCount - 1 do
if Form2.Components[i] is TDBComboBox then
with TDBComboBox(Form2.Components[i]) do
begin
Form1.ADOQuery1.SQL.Text:=Format("select distinct %s from lift",[Form1.ADOTable4.Fields[tag]]);
while not Form1.ADOQuery1.Eof do
begin
Items.Add(Form1.ADOQuery1.Fields[0].AsString);
Form1.ADOQuery1.Next;
end;
{} ShowMessage(name+ "="+inttostr(Form2.Components[i].Tag)+"="+inttostr(i));
end;
В строкеForm1.ADOQuery1.SQL.Text:=Format("select distinct %s from lift",[Form1.ADOTable4.Fields[tag]]);
выдает ошибку Format "%s" invalid or incompatible with argument
← →
Andrewtitoff © (2009-11-06 13:35) [127]что сюда
Form1.ADOTable4.Fields[i]
вместо "i" писать то?
← →
Andrewtitoff © (2009-11-06 13:37) [128]так
Form1.ADOQuery1.SQL.Text:=Format("select distinct %"+inttostr(tag)+":s from lift",[Form1.ADOTable4.Fields[tag]]);
ту же ошибку выдает...
← →
Amoeba © (2009-11-06 13:37) [129]
> [Form1.ADOTable4.Fields[tag]
Здесь строку должно передать, а у тебя что? Объект поле!
← →
Сергей М. © (2009-11-06 13:38) [130]Св-во Fields[] имеет тип TField, а не String.
Потому и invalid or incompatible)
← →
Amoeba © (2009-11-06 13:39) [131]Подсказываю тупящему:
[Form1.ADOTable4.Fields[tag].AsString]
или
[Form1.ADOTable4.Fields[tag].Value]
в зависимости от типа поля.
← →
Сергей М. © (2009-11-06 13:39) [132]Мдя..
Что ни шаг, то грабли)
← →
Сергей М. © (2009-11-06 13:42) [133]
> так
> Form1.ADOQuery1.SQL.Text:=Format("select distinct %"+inttostr(tag)+":
> s from lift",[Form1.ADOTable4.Fields[tag]]);
>
А это вообще ахинея.
> Amoeba © (06.11.09 13:39) [131]
>
> Подсказываю тупящему
Тут речь идет об имени поля.
А ты ему еще про значение подсказываешь, услужливо подкладывая еще одни грабельки)
← →
Andrewtitoff © (2009-11-06 13:52) [134]
Form1.ADOQuery1.SQL.Text:=Format("select distinct %s from lift",[Form1.ADOTable4.Fields[tag].AsString]);
так ошибок не выдает, только не работает, комбобоксы незаполненные остаются...
← →
Сергей М. © (2009-11-06 13:56) [135]Картина маслом - "Andrewtitoff, героически разминирующий лес из граблей"
)
← →
Andrewtitoff © (2009-11-06 13:58) [136]
> Сергей М. © (06.11.09 13:56) [135]
> Картина маслом - "Andrewtitoff, героически разминирующий
> лес из граблей")
=))))))))))))))))
больно, грабли то чаще детские встречаются.... =)))))Form1.ADOTable4.Fields[tag].AsString
Возвращает не имя поля - а значение из него... =(((
← →
Andrewtitoff © (2009-11-06 14:05) [137]А как имя поля то получить? =((((
← →
Сергей М. © (2009-11-06 14:05) [138]
> Возвращает не имя поля - а значение из него
Ну и ?)
Мысли-то есть какие-нть, как самому изменить эту конструкцию, так чтобы получать не значение поля, а его имя ?
← →
Сергей М. © (2009-11-06 14:06) [139]Field (англ.) = Поле (рус.)
Name (англ.) = Имя (рус.)
← →
Andrewtitoff © (2009-11-06 14:13) [140]Так это я помню, еще
clickmaker © (06.11.09 11:06) [105] писал
Form1.ADOQuery1.SQL.Text := Format("select distinct %s from lift", [FieldNames[i]]);
только Form1.ADOTable4.FieldNames выдает "Undeclared identifier: "FieldNames""
← →
Andrewtitoff © (2009-11-06 14:16) [141]так
Form1.ADOTable4.Fields[tag].Name
тож не хочет
← →
Сергей М. © (2009-11-06 14:18) [142]FieldNames - это имена полей, а не имя поля.
Конкретный объект, связанный с интересубющим полем, ты получил:
ADOTable4.Fields[tag]
Осталось обратиться к этому объекту для получения имени поля, с которым он связан)
Ну и ?)
← →
Сергей М. © (2009-11-06 14:19) [143]
> тож не хочет
А кнопка F1 тоже не хочет нажиматься ?
← →
Anatoly Podgoretsky © (2009-11-06 14:32) [144]> Andrewtitoff (06.11.2009 13:58:16) [136]
Детские, взрослые не важно, а важно только один раз на них наступать, а не первый раз при входе в баню, а потом при выходе из бани и так каждый день.
← →
Anatoly Podgoretsky © (2009-11-06 14:34) [145]> Andrewtitoff (06.11.2009 14:13:20) [140]
Undeclared identifier мы уже проходили.
← →
Andrewtitoff © (2009-11-06 14:49) [146]Form1.ADOQuery1.SQL.Text:=Format("select distinct %s from lift",[Form1.ADOTable4.Fields[tag].FieldName]);
Во, вроде так, тока чет опять не то, запрос вроде верный, а комбо боксы опять не заполняются... =(((
← →
Andrewtitoff © (2009-11-06 14:50) [147]
> Anatoly Podgoretsky © (06.11.09 14:32) [144]
> > Andrewtitoff (06.11.2009 13:58:16) [136]Детские, взрослые
> не важно, а важно только один раз на них наступать, а не
> первый раз при входе в баню, а потом при выходе из бани
> и так каждый день.
Не скажи, детские бьют больнее т.к. бьют не по лбу, а несколько ниже... =)))
← →
Andrewtitoff © (2009-11-06 14:52) [148]А,
> Andrewtitoff © (06.11.09 14:49) [146]
> Form1.ADOQuery1.SQL.Text:=Format("select distinct %s from
> lift",[Form1.ADOTable4.Fields[tag].FieldName]);Во, вроде
> так, тока чет опять не то, запрос вроде верный, а комбо
> боксы опять не заполняются... =(((
А, все разодрался, забылForm1.ADOQuery1.Open;
← →
Сергей М. © (2009-11-06 14:54) [149]
> комбо боксы опять не заполняются
С чего бы им заполняться, если ты не открыл (или не пероткрыл) свой дейтасет после установки текста запроса ?
← →
Andrewtitoff © (2009-11-06 15:03) [150]Ну тогда думаю, тему можно считать закрытой!, всем огромное спасибо! =)))
P.S. Соскучится не успеете, ждите с новыми вопросами... =)))
← →
Anatoly Podgoretsky © (2009-11-06 15:52) [151]> Andrewtitoff (06.11.2009 14:49:26) [146]
Ну и что у тебя в Form1.ADOQuery1.SQL.Text
← →
Anatoly Podgoretsky © (2009-11-06 15:53) [152]> Andrewtitoff (06.11.2009 15:03:30) [150]
Второй акт Марлианского балета.
Страницы: 1 2 3 4 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
Память: 0.88 MB
Время: 0.011 c