![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Приветствую.
Никогда не думал, что придется писать программу на delphi, да и еще к тому же работающую с базой данных. Но в связи с производственной необходимостью пришлось это делать. Половина функционала уже есть, но произошел затык в одном моменте. Итак: Имеется БД MS Access работающая через ADO с приложением. На форме расположено 5 радиокнопок и 1 DBComboBox. А затык в том, что как я и писал в сабже DataSource и DataField должны задаваться динамически в зависимости от активного RadioButton. Пытался делать это так Код:
procedure TNewCardForm.AtmRadioButtonClick(Sender: TObject); begin if AtmRadioButton.Checked = True then UstrDBComboBox.DataSource := DataModule2.AtmSource; UstrDBComboBox.DataField := 'nomeratm'; end; Помогите новичку, подскажите как правильно написать код. И еще, например, при активной 5-й радиокнопке DBComboBox становится неактивным. Это тоже подскажите пожалуйста. |
|
#2
|
|||
|
|||
|
Ну во первых,
Код:
procedure TNewCardForm.AtmRadioButtonClick(Sender: TObject);
begin
if AtmRadioButton.Checked then
begin
UstrDBComboBox.DataSource := DataModule2.AtmSource;
UstrDBComboBox.DataField := 'nomeratm';
end;
end; |
|
#3
|
|||
|
|||
|
Спасибо за корректировку.
А проблема, в том что выпадающий список не создается в DBComboBox, там пусто... upd Оказывается надо было использовать DBLookupComboBox. После этого все отобразилось, но только не получается переключать разные источники данных в зависимости от радио кнопки Последний раз редактировалось Gover, 29.03.2010 в 23:39. |
|
#4
|
|||
|
|||
|
Ну так что? Икто и неподскажет?
У меня ошибку дает при переключении на вторую радиокнопку. Код такой Код:
procedure TNewCardForm.AtmRadioButtonClick(Sender: TObject);
begin
if AtmRadioButton.Checked then
begin
DBLookupComboBox2.Enabled := true;
DBLookupComboBox2.ListSource := DataModule2.AtmSource;
DBLookupComboBox2.KeyField := 'idatm';
DBLookupComboBox2.ListField := 'NomerAtm';
end;
end;
procedure TNewCardForm.InfRadioButtonClick(Sender: TObject);
begin
if InfRadioButton.Checked then
begin
DBLookupComboBox2.Enabled := true;
DBLookupComboBox2.ListSource := DataModule2.InfSource;
DBLookupComboBox2.KeyField := 'idinf';
DBLookupComboBox2.ListField := 'NomerInf';
end;
end; |
|
#5
|
|||
|
|||
|
ну тебе ж английским языком сказали - нет такого поля. Проверь имя поля в соотв. датасете.
|
|
#6
|
|||
|
|||
|
Ну как это нет, если поле есть.
Может у этого комбобокса есть свой ство какое-то при котором нужно очищать предыдущие результаты? |
|
#7
|
|||
|
|||
|
А ты попробуй сначала закрыть комбобокс, потом выполнить изменения полей, затем опять открыть
Код:
DBLookupComboBox2.Enabled := False; DBLookupComboBox2.ListSource := DataModule2.InfSource; DBLookupComboBox2.KeyField := 'idinf'; DBLookupComboBox2.ListField := 'NomerInf'; DBLookupComboBox2.Enabled := true; |
|
#8
|
|||
|
|||
|
Может надо датасет отключать, а затем включать? с Комбобоксом не срабатывает
|
|
#9
|
|||
|
|||
|
Такая же фигня. Пробуй так:
Код:
procedure TNewCardForm.AtmRadioButtonClick(Sender: TObject);
begin
if AtmRadioButton.Checked then
begin
DBLookupComboBox2.Enabled := true;
DataModule2.AtmSource.Enabled:=false;
DBLookupComboBox2.ListSource := DataModule2.AtmSource;
DBLookupComboBox2.KeyField := 'idatm';
DBLookupComboBox2.ListField := 'NomerAtm';
DataModule2.AtmSource.Enabled:=true;
end;
end;
procedure TNewCardForm.InfRadioButtonClick(Sender: TObject);
begin
if InfRadioButton.Checked then
begin
DBLookupComboBox2.Enabled := true;
DataModule2.InfSource.Enabled:=false;
DBLookupComboBox2.ListSource := DataModule2.InfSource;
DBLookupComboBox2.KeyField := 'idinf';
DBLookupComboBox2.ListField := 'NomerInf';
DataModule2.InfSource.Enabled:=true;
end;
end; |