Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.63 MB
Время: 0.011 c
15-1256486186
berlios
2009-10-25 18:56
2009.12.27
Задачка


3-1232343690
pavel_guzhanov
2009-01-19 08:41
2009.12.27
Можно ли проиндексировать поле в представлении?


2-1257871099
vtur
2009-11-10 19:38
2009.12.27
Создание приложений с использованием DLL


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


3-1232538063
Patrick1968
2009-01-21 14:41
2009.12.27
Параметр хранимой процедуры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский