Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DBComboBox


Страницы:   1 2 3 4 5 6 7 8

Andrewtitoff ©   (2009-11-02 15:39:00) 

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


Сергей М.   (2009-11-06 09:46:00) [61]


> Andrewtitoff ©   (06.11.09 09:40) [91]


На [86] ответить сподобишься ?


Andrewtitoff   (2009-11-06 09:40:00) [62]


> 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]Удали этот компонент,
>  и брось по новому на форму.

Несколько раз пробовал, все равно такая же байда, может чего не так делаю? =(((


sniknik   (2009-11-05 14:02:00) [63]

Сергей М. ©   (02.11.09 18:19) [65]
> ВизуальныйВасик - тот же ОбъектныйПаскаль (ну или наоборот), только вид сбоку.
это еще и функции которые можно использовать в запросах, т.к. ->

Andrewtitoff ©   (02.11.09 16:01) [8]
> БД формата Access 2000

и потому без него никак.
учите бейсик, источник функций...  :)


Anatoly Podgoretsky   (2009-11-05 13:08:00) [64]

> Andrewtitoff  (05.11.2009 11:50:23)  [83]

Удали этот компонент, и брось по новому на форму.


Dennis I. Komarov   (2009-11-05 12:22:00) [65]


> А вообще самое первое поле нулевое у меня ключевое

Это как?


Andrewtitoff   (2009-11-05 11:57:00) [66]

Я вообще не знаю что это такое...
А вообще самое первое поле нулевое у меня ключевое, называется "REGNUM"


Сергей М.   (2009-11-05 11:56:00) [67]


> где задать значение этому параметру?


Какому еще "параметру" ?
С какой луны к тебе свалились какие-то там параметры ?
"field1" - это, насколько я понимаю, реальное имя реально существующего неключевого поля в таблице "lift" ?


Andrewtitoff   (2009-11-05 11:53:00) [68]

Только где задать значение этому параметру?


Сергей М.   (2009-11-05 11:53:00) [69]

field1 у тебя, надеюсь, не ключевое поле ?)


Andrewtitoff   (2009-11-05 11:50:00) [70]

Ой, какжется это потому что ADOQuery у меня не активен, при попытке нажать на активный - ругается "Параметр field1 не имеет значения по умолчанию"


Andrewtitoff   (2009-11-05 11:48:00) [71]

Form1.ADOQuery1.Open;

как я понял, путем закоментаривания строчек, т.к. он не подчеркивает строку этой ошибки


Сергей М.   (2009-11-05 11:38:00) [72]


> Выдает ошибку


На какой строчке ?


Andrewtitoff   (2009-11-05 11:36:00) [73]


> Сергей М. ©   (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. Работа не выполнена'


Andrewtitoff   (2009-11-03 11:54:00) [74]


> С этим пока ясно, ща попробую, можно еще один маленький
> вопросик?, почему DBEdit считает что свойство текст пустое,
>  пока не ткнешь один раз в него?, т.е.  if DBEdit7.DataField
> =Form3.ADOTable1.Fields[0].Value thenне работает при запуске
> программы, видимо считает его пустым, но после того как
> один раз ткнуть указателем мышки - все начинает работать?
>

Ой извините наврал, это я дурак... =)))


Dennis I. Komarov   (2009-11-03 11:38:00) [75]

ФСЕ ФИГНЯ

1. Копируем реальную базу со всеми причиндалами на ВВ
2. Изучаем структуру базы, характер информации, проектируем нормальную
3. Пишем скрипты перегонки из старой в новую (ес-но все на нашей копии)
4. Редактируем причиндалы на ВВ до их полной работоспособности
5. Когда ужин уже давно кончился, а завтрак еще и не думал начинаться
5.1. Делаем еще одну копию реальной базы, со всеми ВВ
5.2. Создаем новую базу и перегоняем усе данные
5.3. Перегоняем все исправленные ВВ
5.4. Идем спать...
6. Когда завтрак закончился
6.1. Если у юзеров все работает, то можно приступать к написанию нормального софта
6.2. Если у юзеров ничерта не работает и вход пошли тяжелые фигуры, подставляем последнюю копию и...


Andrewtitoff   (2009-11-03 11:37:00) [76]

С этим пока ясно, ща попробую, можно еще один маленький вопросик?, почему DBEdit считает что свойство текст пустое, пока не ткнешь один раз в него?, т.е.  if DBEdit7.DataField =Form3.ADOTable1.Fields[0].Value then
не работает при запуске программы, видимо считает его пустым, но после того как один раз ткнуть указателем мышки - все начинает работать?


Sergey13   (2009-11-03 11:15:00) [77]

> [70] Andrewtitoff ©   (03.11.09 10:36)
> вот я и пытаюсь

У меня начинает складываться впечатление, что ты пытаешься добиться того, что бы кто-то за тебя написал рабочий код.

Создаешь новый датасет F28. В запросе пишешь
select distinct field28 from my_super_table

В своем ОСНОВНОМ датасете (где все записи со всеми полями) настраиваешь поле field28 как лукапное, которое "глядит" на датасет F28. В твоем гриде на поле field28 появляется выпадающий список со всеми вариантами заполнения данного поля.

Повторяешь все для остальных 59-и изменяемых полей.

На 7 тысячах записей 60 запросов с distinct будут конечно подтормаживать. Насколько - надо пробовать и проверять.


clickmaker   (2009-11-03 11:07:00) [78]

> Это ADOQuery нужно, или можно без него?

да не принципиально. TADODataSet можно


Сергей М.   (2009-11-03 11:06:00) [79]


> или можно без него?


Или можно. Даже еще лучше.
см. TADODataSet


Сергей М.   (2009-11-03 11:03:00) [80]


> кроме тормозов при загрузке к комбобоксы


Сделай неуникальный индекс по полю 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;


Страницы:   1 2 3 4 5 6 7 8

Наверх

Титульная страница Поиск, карта сайта Написать письмо