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

Вниз

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

 
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. Работа не выполнена"



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

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

Наверх




Память: 0.65 MB
Время: 0.018 c
15-1256595468
Германн
2009-10-27 01:17
2009.12.27
Ищу эксперта.


2-1257500197
Бульбаш
2009-11-06 12:36
2009.12.27
Переключение между гридами на этапе проектирования


15-1256894913
ford
2009-10-30 12:28
2009.12.27
парсить web страницы посоветуйте


15-1256898600
RWolf
2009-10-30 13:30
2009.12.27
Firebird: как поднять БД из SHADOW?


15-1256309335
YurikGL
2009-10-23 18:48
2009.12.27
Тупо списали с видеокамеры, теперь оно не играет