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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2010, 07:36   #1
hk47
Пользователь
 
Регистрация: 11.04.2010
Сообщений: 23
По умолчанию Список таблиц выбранной базы занести в ComboBox.

Как получить теперь список таблиц из выбранной базы?
Я не могу поместить в строку соединения выбранную их ComboBox базу данных. Выдает ошибку: Недопустимый аргумент строки соединения.
я писал вот так

ADOConnection1.ConnectionString := 'Initial Catalogue=' + ComboBox1.Text;
AdoConnection1.GetTableNames(ComboB ox2,True);

ComboBox1 содержит имена баз данных и из него я их выбираю.

А ComboBox2 должен в итоге содержать имена таблиц. Потом имя я выбираю и табличка отражантся в табличном элементе, например DBGrid.
hk47 вне форума Ответить с цитированием
Старый 14.04.2010, 07:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

ADOConnection.GetTableNames
Подробности в хелпе (там же и пример есть)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.04.2010, 08:38   #3
hk47
Пользователь
 
Регистрация: 11.04.2010
Сообщений: 23
По умолчанию

Stilet.
В том то и беда, что я не нашел ни в хелпе ни в сети сообщения о такой ошибке.
Такой способ, который я описал работает, но только если база предварительно выбрана из Combobox1, то есть выводит список таблиц в компонент ComboBox2.
Я думал, что может кто сталкивалася с такой проблемой и решил ее. А я пока не пойму как это сделать.
hk47 вне форума Ответить с цитированием
Старый 14.04.2010, 11:09   #4
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
Я не могу поместить в строку соединения выбранную их ComboBox базу данных. Выдает ошибку: Недопустимый аргумент строки соединения.
я писал вот так

ADOConnection1.ConnectionString := 'Initial Catalogue=' + ComboBox1.Text;
вообще-то, ты как раз и помещаеш, а ошибка у тебя из-за того что ты не правильно это делаешь.
Допустиму тебя была строка соединения:
Код:
 adoconnection1.connectionstring:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=sqlexpress';
после того как выполнится твоя строка:
Код:
ADOConnection1.ConnectionString := 'Initial Catalogue=' + ComboBox1.Text;
у тебя connectionstring будет равна: Initial Catalogue='бла-бла-бла';
то есть без указания провайдера и всего остального. сделать нужно так:
Код:
ADOConnection1.ConnectionString := adoconnection1.connectionstring+';Initial Catalogue=' + ComboBox1.Text;
вот тут тож ошибка
Код:
AdoConnection1.GetTableNames(ComboB ox2,True);
нужно писать
Код:
AdoConnection1.GetTableNames(ComboBox2.items,True);
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 14.04.2010, 13:09   #5
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

получаем список баз сервера и загоняем их в combobox1
Код:
procedure TForm1.FormShow(Sender: TObject);
 var adodataset1:TAdodataset;
begin
 adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=bazsave\sqlwork';
 adoconnection1.LoginPrompt:=false;
 adoconnection1.Connected:=true;
 if not(adoconnection1.Connected)
   then
    begin
     messagedlg('Нет соединения', mtError, [mbOk], 0);
     halt;
    end;
 adodataset1:=Tadodataset.Create(nil);
 adodataset1.Connection:=adoconnection1;
 adodataset1.CommandType:=cmdText;
 adodataset1.CommandText:='select name from master..sysdatabases';
 adodataset1.Active:=true;
 while not(adodataset1.Eof) do
  begin
   combobox1.Items.Add(adodataset1.Fields[0].Value);
   adodataset1.Next;
  end;
 combobox1.ItemIndex:=0;
 adodataset1.Active:=false;
 adodataset1.Free;
 adoconnection1.Connected:=false;
end;

получаем список несистемных таблиц выбраной базы сервера
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 adoconnection1.ConnectionString:=adoconnection1.ConnectionString+';Initial Catalog='+combobox1.Text;
 adoconnection1.Connected:=true;
 if not(adoconnection1.Connected)
  then
   begin
    messagedlg('Не удалось поключиться к базе', mtError, [mbOK], 0);
    abort;
   end;
 adoconnection1.GetTableNames(combobox2.Items, false);
 adoconnection1.Connected:=false;
 combobox2.ItemIndex:=0;
end;
приведённый пример работает на MSSQL Server
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 16.04.2010, 18:51   #6
hk47
Пользователь
 
Регистрация: 11.04.2010
Сообщений: 23
По умолчанию

Спасибо работает.
но теперь ошибка при выборе таблицы из списка и попытке ее отобразить в компоненте DBGrid.
invalid object name '<имя таблицы>'
не пойму. уже второй день парюсь.
hk47 вне форума Ответить с цитированием
Старый 19.04.2010, 10:13   #7
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
но теперь ошибка при выборе таблицы из списка и попытке ее отобразить в компоненте DBGrid.
invalid object name '<имя таблицы>'
я допустил небольшую оплошность, вот тут:
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 adoconnection1.ConnectionString:=adoconnection1.ConnectionString+';Initial Catalog='+combobox1.Text;
 adoconnection1.Connected:=true;
 if not(adoconnection1.Connected)
  then
   begin
    messagedlg('Не удалось поключиться к базе', mtError, [mbOK], 0);
    abort;
   end;
 adoconnection1.GetTableNames(combobox2.Items, false);
 adoconnection1.Connected:=false;
 combobox2.ItemIndex:=0;
end;
выделенную строку нужно удалить.
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выпадающий список ComboBox pu4koff Win Api 29 27.02.2014 17:23
Как в Combobox убрать список? Alexi Компоненты Delphi 10 04.01.2011 08:25
Выпадающий список создание базы( Ptat Microsoft Office Excel 5 24.08.2009 09:50
Копирование таблиц из одной базы в другую KuH БД в Delphi 7 27.09.2007 15:18