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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2009, 14:04   #1
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию Создание подключения к БД Access по ADO

Имеется БД организовал доступ по ADO использовал следующие компоненты
ADOconection-через этот компонент организовал доступ к базе.
DataSource.
ADOTable.
DBGrid.
И возникла проблема, что на моем компьютере все работает, но стоит включить прогу на другом выскакивает ошибка пути к базе.
База MS Access.
girz вне форума Ответить с цитированием
Старый 13.05.2009, 15:21   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Вы в ADOConnection у свойства ConnectionString, где надо вводить путь к базе данных, просто введите имя файла, например Base.mdb или что-то подобное, но база должна лежать в папке с программой.
Установите Connection в false
У Dataset'ов(ADOTable, ADOQuery) свойство Active тоже в false

Вообще лучше использовать DataModule(File\New\Other...\Delphi Files\DataModule) и там размещать ADOConnection, dataset'ы и datasource'ы.
Тогда в событиях DataModule OnCreate и OnDestroy надо прописать вот это:
Код:
procedure TDataModule1.DataModuleCreate(Sender: TObject);
var
 i: integer;
begin
 try
  for i := 0 to ADOConnection1.DataSetCount - 1 do
  begin
   //Тут можно делать много проверок, какие dataset'ы открывать
   //Пример: устанавливаем свойство Active в true у всех dataset'ов кроме того, у которого имя равно ADOQuery1
   if ADOConnection1.DataSets[i].Name <> 'ADOQuery1' then
    ADOConnection1.DataSets[i].Active := true;
  end;
 except
  on e: exception do MessageBox(GetActiveWindow, PChar(e.Message),
    'Ошибка открытия базы данных', MB_OK or MB_ICONSTOP);
 end;
end;

procedure TDataModule1.DataModuleDestroy(Sender: TObject);
var
 i: integer;
begin
 try
  for i := 0 to ADOConnection1.DataSetCount - 1 do
   ADOConnection1.DataSets[i].Active := false;
 except
  on e: exception do MessageBox(GetActiveWindow, PChar(e.Message),
    'Ошибка закрытия базы данных', MB_OK or MB_ICONSTOP);
 end;
end;
В uses главной формы добавьте DataModule(File\Use Unit...)
и DBGrid'ам и другим компонентам присваивайте datasorce'ы из DataModule

Но если не хотите использовать DataModule, то можно использовать данный код и в главной форме, тоже в соответствующих событиях.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
access+delphi+ado aid_013 БД в Delphi 2 10.07.2010 09:28
Delphi <--> ADO <--> Access acid02 БД в Delphi 4 09.04.2009 16:29
ADO & Access Регишка БД в Delphi 7 24.11.2008 15:48
Access/ADO Anton_S БД в Delphi 2 26.05.2008 08:24
Delphi+ADO+Access Turpa Помощь студентам 12 15.10.2007 23:29