Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2009, 13:40   #1
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
По умолчанию DataSource и ComboBox

Подскажите пожалуйста в чем ошибка.
Хочу поменять значение DataSet у DataSource1 с помощью ComboBox1
делаю так но ничего не выходит.

DataSource1.DataSet:= ComboBox1.Items[ComboBox1.ItemIndex];
Dotha вне форума Ответить с цитированием
Старый 27.10.2009, 13:56   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ошибка в том, что свойство DataSet не есть строка...
Вариант решения - использовать конструкцию CASE .. OF
mihali4 вне форума Ответить с цитированием
Старый 27.10.2009, 13:59   #3
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
По умолчанию

:-) а подскажите как правильно сделать
Dotha вне форума Ответить с цитированием
Старый 27.10.2009, 14:05   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Так вроде уже...
По событию ComboBox1Change при помощи CASE ComboBox1.ItemIndex OF назначаем DataSource1.DataSet.
Например:
Код:
CASE ComboBox1.ItemIndex OF
0: DataSource1.DataSet:= Table1;
1: DataSource1.DataSet:= Table2;
...
end;
mihali4 вне форума Ответить с цитированием
Старый 27.10.2009, 14:08   #5
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
По умолчанию

Большое спасибо за ответ !
Он мне очень помог.

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Так вроде уже...
По событию ComboBox1Change при помощи CASE ComboBox1.ItemIndex OF назначаем DataSource1.DataSet.
Например:
Код:
CASE ComboBox1.ItemIndex OF
0: DataSource1.DataSet:= Table1;
1: DataSource1.DataSet:= Table2;
...
end;
А как можно переключать с модальной формы если я делаю так
Код:
case ComboBox1.ItemIndex of
  0: DataSource1.DataSet:= Form1.ADOTable1;
  1: DataSource1.DataSet:= Form1.ADOTable2;
  end;
то выходит ошибка Access violation at address 0058EECD in module 'Project1' . Read of address 0000009D.
Что можно сделать ?

Последний раз редактировалось Stilet; 28.10.2009 в 13:13.
Dotha вне форума Ответить с цитированием
Старый 28.10.2009, 13:07   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А сам обработчик в событиях какой формы?
А Form1 на момент обработки открыта?
mihali4 вне форума Ответить с цитированием
Старый 29.10.2009, 06:34   #7
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
По умолчанию

DBGrid , ADOConnection, ADOTable1, ADOTable2 на Form1.
ComboBox1, DataSource1 на Form2.

Form1 на момент обработки открыта.

ComboBox1 переключает ADOTable1 и ADOTable2 но выходит окошко с ошибкой

Access violation at address 0058EECD in module 'Project1' . Read of address 0000009D.

Последний раз редактировалось Stilet; 29.10.2009 в 08:09.
Dotha вне форума Ответить с цитированием
Старый 29.10.2009, 06:44   #8
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Код:
case ComboBox1.ItemIndex of
  0:begin
TForm1.create(self); // создаём если нет
Form1.show; // показываем если скрыто      
DataSource1.DataSet:= Form1.ADOTable1;
     end; 

  1: begin
TForm1.create(self); // создаём если нет
Form1.show; // показываем если скрыто    
DataSource1.DataSet:= Form1.ADOTable2;
end;
end;
а в каком месте вылетает? по f7 пройдись
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 29.10.2009, 14:45   #9
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
Код:
case ComboBox1.ItemIndex of
  0:begin
TForm1.create(self); // создаём если нет
Form1.show; // показываем если скрыто      
DataSource1.DataSet:= Form1.ADOTable1;
     end; 

  1: begin
TForm1.create(self); // создаём если нет
Form1.show; // показываем если скрыто    
DataSource1.DataSet:= Form1.ADOTable2;
end;
end;
а в каком месте вылетает? по f7 пройдись

Так ошибка не выходит но и не происходит ничего
Dotha вне форума Ответить с цитированием
Старый 29.10.2009, 14:54   #10
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
По умолчанию

можете объяснить что обозначает это
Код:
TForm1.create(self);
Dotha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение свойства datasource c adotable на adoquery koma Общие вопросы Delphi 3 01.10.2009 13:47
как Microsoft Access(ADOConnection ADOTable DataSource DBGrid) переделать под mySQL? Levsha100 БД в Delphi 6 23.05.2009 19:48
Как можно изменить у DBGrid Datasource в процессе работы приложения ?? Kamelli_13 БД в Delphi 6 01.05.2009 17:14
компонента 1-datasource 2-query 3-dbnavigator 4-dbgrid - как заставить работать? hinku БД в Delphi 5 07.10.2008 17:33
Не могу внести строку из combobox в combobox!? tacer Помощь студентам 1 30.11.2007 19:45