Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.03.2010, 21:11
Gover Gover вне форума
Прохожий
 
Регистрация: 28.03.2010
Сообщения: 5
Репутация: 10
По умолчанию Формировать DataSource и DataField динамически в зависимости от RadioButton

Приветствую.
Никогда не думал, что придется писать программу на 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  
Старый 28.03.2010, 23:27
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Ну во первых,
Код:
procedure TNewCardForm.AtmRadioButtonClick(Sender: TObject);
begin
  if AtmRadioButton.Checked then
    begin  
    UstrDBComboBox.DataSource := DataModule2.AtmSource;
    UstrDBComboBox.DataField := 'nomeratm';
    end;
end;
А вообще что за ошибка?
Ответить с цитированием
  #3  
Старый 29.03.2010, 21:53
Gover Gover вне форума
Прохожий
 
Регистрация: 28.03.2010
Сообщения: 5
Репутация: 10
По умолчанию

Спасибо за корректировку.
А проблема, в том что выпадающий список не создается в DBComboBox, там пусто...

upd

Оказывается надо было использовать DBLookupComboBox. После этого все отобразилось, но только не получается переключать разные источники данных в зависимости от радио кнопки

Последний раз редактировалось Gover, 29.03.2010 в 23:39.
Ответить с цитированием
  #4  
Старый 01.04.2010, 22:25
Gover Gover вне форума
Прохожий
 
Регистрация: 28.03.2010
Сообщения: 5
Репутация: 10
По умолчанию

Ну так что? Икто и неподскажет?
У меня ошибку дает при переключении на вторую радиокнопку. Код такой
Код:
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;
Изображения
Тип файла: jpg Безымянный.jpg (24.4 Кбайт, 12 просмотров)
Ответить с цитированием
  #5  
Старый 01.04.2010, 22:41
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ну тебе ж английским языком сказали - нет такого поля. Проверь имя поля в соотв. датасете.
Ответить с цитированием
  #6  
Старый 02.04.2010, 21:27
Gover Gover вне форума
Прохожий
 
Регистрация: 28.03.2010
Сообщения: 5
Репутация: 10
По умолчанию

Ну как это нет, если поле есть.
Может у этого комбобокса есть свой ство какое-то при котором нужно очищать предыдущие результаты?
Изображения
Тип файла: jpg pole.jpg (49.5 Кбайт, 7 просмотров)
Ответить с цитированием
  #7  
Старый 03.04.2010, 15:08
HTTH HTTH вне форума
Прохожий
 
Регистрация: 03.04.2010
Сообщения: 6
Репутация: 10
По умолчанию

А ты попробуй сначала закрыть комбобокс, потом выполнить изменения полей, затем опять открыть

Код:
DBLookupComboBox2.Enabled := False;
DBLookupComboBox2.ListSource := DataModule2.InfSource;
DBLookupComboBox2.KeyField := 'idinf';
DBLookupComboBox2.ListField := 'NomerInf';
DBLookupComboBox2.Enabled := true;
Ответить с цитированием
  #8  
Старый 03.04.2010, 23:02
Gover Gover вне форума
Прохожий
 
Регистрация: 28.03.2010
Сообщения: 5
Репутация: 10
По умолчанию

Может надо датасет отключать, а затем включать? с Комбобоксом не срабатывает
Ответить с цитированием
  #9  
Старый 17.06.2010, 15:16
Ash Ash вне форума
Прохожий
 
Регистрация: 17.06.2010
Сообщения: 2
Репутация: 10
По умолчанию

Такая же фигня. Пробуй так:
Код:
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;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:59.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter