Форум: "Начинающим";
Текущий архив: 2007.03.04;
Скачать: [xml.tar.bz2];
ВнизDBComboBox Найти похожие ветки
← →
Sapos © (2007-02-15 09:18) [0]Подскажите, плиз, как наполнять компонент DBComboBox записями из таблицы? Так же в дальнейшем нужно вытаскивать запись из БД в строковую переменную -как это реалезовать?
Спасибо!
← →
Sergey13 © (2007-02-15 09:34) [1]1. Настроить свойства компонента
2. Запись в строку? Это как? Значение поля в строку наверное? FieldByName.AsString
← →
Клара (2007-02-15 09:46) [2]Поиск по выбору с использованием компонента 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;
← →
Sapos © (2007-02-15 09:48) [3]Какие именно свойства? я соединяю компонент с датасоурс но при запуске программы в комбобоксе отображается только первая запись, если список разворачивать, то там пусто. Короче получается, что он тупо отображает текущую запись...
← →
Sapos © (2007-02-15 10:00) [4]
> Поиск по выбору с использованием компонента 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 добавляет только последнюю запись...
← →
ЮЮ © (2007-02-15 10:11) [5]TDBComboBox - обычный TDBEdit. Поэтому и показывает значение в текущей строке. Его отличие, что вместо тупого вколачивания текста в символтное поле, можно подготовить выпадающий список и выбирать из него. Эта задача ложится на программиста, сам компонент этого не поддерживает.
Как? Например, выполнить запрос SELECT DISTINCT <текстовое поле> FROM <таблица> и получить список уже имеющихся значений, и заполнить Items. Теперь пользователь сможет не только вводит непосредственно в поле ввода, но и выбирать уже имеющиеся значения
← →
Sergey13 © (2007-02-15 10:24) [6]> [4] Sapos © (15.02.07 10:00)
Может тебе ДБЛукапКомбобокс нужен?
← →
ЮЮ © (2007-02-15 10:33) [7]
> Может тебе ДБЛукапКомбобокс нужен?
Там свойств сильно много :( Лучше бы сказал чего ему нужно получить от этого комбобокса: какое поле редактирует, зачем нужен список, почему не не напрямую, и т.д. и т.п
← →
Sapos © (2007-02-15 11:31) [8]
> Там свойств сильно много :( Лучше бы сказал чего ему нужно
> получить от этого комбобокса: какое поле редактирует, зачем
> нужен список, почему не не напрямую, и т.д. и т.п
>
Короче! Мне в принципе не важно, какой комбо бокс использовать (DB или обычный). Мне нужно наполнять его из записями из таблицы с одним полем, записи в этой таблице могут редактироваться (удаляться и добавляться). Для чего? Объясняю: Допустим комбобокс уже наполнен какими-нибудь элементами, я выбираю нужный, нажимаю кнопку и открывается другая таблица (более оширная) с более подробной информацией. Т.е. конкретная запись в простой таблице (с одним полем) соответствует имени более расширенной таблице. Соответственно для открытия большой таблицы нужно вытаскивать текущее значение поля и передавать его в другой Table и присваевать его свойству TableName.
← →
Desdechado © (2007-02-15 11:44) [9]> но при запуске программы в комбобоксе отображается только первая запись
Просто сделайLast;First;
на наборе данных, куда нацелен комбо.
← →
ЮЮ © (2007-02-15 11:55) [10]Sapos © (15.02.07 11:31) [8]
Тогда это не TDBComboBox, а TDBLookupCombobox
где ListSource указывает на таблицу "таблиц", DataSource - ПУСТОЙ, а значение выбранной строки - в TDBLookupCombobox.KeyValue
← →
Sapos © (2007-02-15 13:51) [11]
> Тогда это не TDBComboBox, а TDBLookupCombobox
> где ListSource указывает на таблицу "таблиц", DataSource
> - ПУСТОЙ, а значение выбранной строки - в TDBLookupCombobox.
> KeyValue
Спасибо! Только теперь непонятно как DBLookupComboBox.keyValue превратить в строку, потому как это свойство имеет тип Variant?
← →
Astronom © (2007-02-15 13:59) [12]Просто присвой какой-нибудь строковой переменной получившееся значение. Вроде бы Variant должен корректно преобразоваться.
← →
Sapos © (2007-02-15 14:04) [13]
> Просто присвой какой-нибудь строковой переменной получившееся
> значение. Вроде бы Variant должен корректно преобразоваться.
>
Пишет: Could not convert variant into type String. Чё делать?
← →
Плохиш © (2007-02-15 16:18) [14]
> Sapos © (15.02.07 14:04) [13]
> Пишет: Could not convert variant into type String. Чё делать?
Надо воспользоваться отладчикам и посмотреть какую же фигню ты туда умудрился запихнуть...
← →
ЮЮ © (2007-02-16 03:02) [15]
> потому как это свойство имеет тип Variant?
Если запрос правильный и компонент правильно настроен, то тот VarType того Variant-а должен быть varString.
← →
Saposo (2007-02-16 10:42) [16]Заработало, писал не втом обработчике событий.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.03.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c