![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DBComboBox [D7, XP]
Sapos © (2007-02-15 09:18:00)Подскажите, плиз, как наполнять компонент DBComboBox записями из таблицы? Так же в дальнейшем нужно вытаскивать запись из БД в строковую переменную -как это реалезовать?
Спасибо!
Saposo (2007-02-16 10:42:00) [1]Заработало, писал не втом обработчике событий.
ЮЮ (2007-02-16 03:02:00) [2]
> потому как это свойство имеет тип Variant?
Если запрос правильный и компонент правильно настроен, то тот VarType того Variant-а должен быть varString.
Плохиш (2007-02-15 16:18:00) [3]
> Sapos © (15.02.07 14:04) [13]
> Пишет: Could not convert variant into type String. Чё делать?
Надо воспользоваться отладчикам и посмотреть какую же фигню ты туда умудрился запихнуть...
Sapos (2007-02-15 14:04:00) [4]
> Просто присвой какой-нибудь строковой переменной получившееся
> значение. Вроде бы Variant должен корректно преобразоваться.
>
Пишет: Could not convert variant into type String. Чё делать?
Astronom (2007-02-15 13:59:00) [5]Просто присвой какой-нибудь строковой переменной получившееся значение. Вроде бы Variant должен корректно преобразоваться.
Sapos (2007-02-15 13:51:00) [6]
> Тогда это не TDBComboBox, а TDBLookupCombobox
> где ListSource указывает на таблицу "таблиц", DataSource
> - ПУСТОЙ, а значение выбранной строки - в TDBLookupCombobox.
> KeyValue
Спасибо! Только теперь непонятно как DBLookupComboBox.keyValue превратить в строку, потому как это свойство имеет тип Variant?
ЮЮ (2007-02-15 11:55:00) [7]Sapos © (15.02.07 11:31) [8]
Тогда это не TDBComboBox, а TDB LookupCombobox
где ListSource указывает на таблицу "таблиц", DataSource - ПУСТОЙ, а значение выбранной строки - в TDBLookupCombobox.KeyValue
Desdechado (2007-02-15 11:44:00) [8]> но при запуске программы в комбобоксе отображается только первая запись
Просто сделайLast;First;на наборе данных, куда нацелен комбо.
Sapos (2007-02-15 11:31:00) [9]
> Там свойств сильно много :( Лучше бы сказал чего ему нужно
> получить от этого комбобокса: какое поле редактирует, зачем
> нужен список, почему не не напрямую, и т.д. и т.п
>
Короче! Мне в принципе не важно, какой комбо бокс использовать (DB или обычный). Мне нужно наполнять его из записями из таблицы с одним полем, записи в этой таблице могут редактироваться (удаляться и добавляться). Для чего? Объясняю: Допустим комбобокс уже наполнен какими-нибудь элементами, я выбираю нужный, нажимаю кнопку и открывается другая таблица (более оширная) с более подробной информацией. Т.е. конкретная запись в простой таблице (с одним полем) соответствует имени более расширенной таблице. Соответственно для открытия большой таблицы нужно вытаскивать текущее значение поля и передавать его в другой Table и присваевать его свойству TableName.
ЮЮ (2007-02-15 10:33:00) [10]
> Может тебе ДБЛукапКомбобокс нужен?
Там свойств сильно много :( Лучше бы сказал чего ему нужно получить от этого комбобокса: какое поле редактирует, зачем нужен список, почему не не напрямую, и т.д. и т.п
Sergey13 (2007-02-15 10:24:00) [11]> [4] Sapos © (15.02.07 10:00)
Может тебе ДБ ЛукапКомбобокс нужен?
ЮЮ (2007-02-15 10:11:00) [12]TDBComboBox - обычный TDBEdit. Поэтому и показывает значение в текущей строке. Его отличие, что вместо тупого вколачивания текста в символтное поле, можно подготовить выпадающий список и выбирать из него. Эта задача ложится на программиста, сам компонент этого не поддерживает.
Как? Например, выполнить запрос SELECT DISTINCT <текстовое поле> FROM <таблица> и получить список уже имеющихся значений, и заполнить Items. Теперь пользователь сможет не только вводит непосредственно в поле ввода, но и выбирать уже имеющиеся значения
Sapos (2007-02-15 10:00:00) [13]
> Поиск по выбору с использованием компонента ComboBox.
> 1. Выставьте на форму компонент ComboBox из страницы Standart.
>
> - в свойстве Items перечислите в столбик возможные виды
> поиска;
> - свойство ItemIndex установите в 0.
> 2. Рядом с ComboBox выставьте компонент Edit из страницы
> Standart.
> 3. Выделите Edit и перейдите на вкладку Events.
> 4. Двойным щелчком на событии OnChange, создайте процедуру
> обработки:
> procedure TForm6.Edit1Change(Sender: TObject);
> begin
> case ComboBox1.ItemIndex of
> 0: table1.Locate('Kodpodpiski',edit1.Text,[loCaseInsensitive,
> loPartialKey]);
> 1: table1.Locate('Index',edit1.Text,[loCaseInsensitive,loPartialKey]);
>
> end;
> end;
Мне не поиск нужен, мне нужно автоматом наполнять DBComboBox из файла базы данных, при попытке воспользоваться методом LoadFromFile добавляет только последнюю запись...
Sapos (2007-02-15 09:48:00) [14]Какие именно свойства? я соединяю компонент с датасоурс но при запуске программы в комбобоксе отображается только первая запись, если список разворачивать, то там пусто. Короче получается, что он тупо отображает текущую запись...
Клара (2007-02-15 09:46:00) [15]Поиск по выбору с использованием компонента ComboBox.
1. Выставьте на форму компонент ComboBox из страницы Standart.
- в свойстве Items перечислите в столбик возможные виды поиска;
- свойство ItemIndex установите в 0.
2. Рядом с ComboBox выставьте компонент Edit из страницы Standart.
3. Выделите Edit и перейдите на вкладку Events.
4. Двойным щелчком на событии OnChange, создайте процедуру обработки:
procedure TForm6.Edit1Change(Sender: TObject);
begin
case ComboBox1.ItemIndex of
0: table1.Locate('Kodpodpiski',edit1.Text,[loCaseInsensitive,loPartialKey]);
1: table1.Locate('Index',edit1.Text,[loCaseInsensitive,loPartialKey]);
end;
end;
Sergey13 (2007-02-15 09:34:00) [16]1. Настроить свойства компонента
2. Запись в строку? Это как? Значение поля в строку наверное? FieldByName.AsString