![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DBComboBox
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;