Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как ADOTable через ADOConnection связать с Access, С помощью кода. 
V
    Опции темы
Hatigatsu
Дата 6.12.2006, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 11.10.2006
Где: г. Н.Новгород

Репутация: нет
Всего: нет



С Добрым утром счастливый народ. Спасите человека. 
Вопрос: что нужно написать в коде программы, чтобы ADOTable1 связывался через ADOConnection1 с MS Access'ой базой *.mdb при запуске программы. Ведь программа не всегда будет в одной и той же директории. Нужно чтоб и после перемещения папки с программой, она (программа) связывалась с базой, находящаяся в том же папке. ("чуть чуть не грамотно, но понятно")

Изучил вдоль и поперёк архив статей Delphi World 6.0 по вопросу ADOConnection. Кое-что от туда взял, применил, но так как там в подробностях мало, что расказывается, разумеется при запуске проги у меня вылазет ошибка.
Project Rus_Eng_Jap.exe raised exception class EOleException with message
'Дисковая или сетевая ошибка'. Process stopped. Use Step or Run to continue.


А вот, что я написал в своей программе (только не смейтесь):
Код

procedure TForm1.FormCreate(Sender: TObject);

begin

 ADOTable1.Active := False;
 ADOConnection1.Connected := False;
 ADOConnection1.LoginPrompt := False;
 ADOConnection1.Provider := 'Microsoft.Jet.OLEDB.4.0';
 ADOConnection1.ConnectionString:=
 'Provider=Microsoft.Jet.OLEDB.4.0;' +
 'User ID=Admin;' +
 'Password=Password;' +
 'Data Source=E:\Translation_Rus_Eng_Jap\Material\BazaD.mdb;' +
 'Mode=ReadWrite;' +
 'Extended Properties="" ;' +
 'Persist Security Info=False;' +
 'Jet OLEDB:System database=" " ;' +
 'Jet OLEDB:Registry Path="" ;' +
 'Jet OLEDB:Database Password="" ;' +
 'Jet OLEDB:Engine Type=5;' +
 'Jet OLEDB:Database Locking Mode=1;' +
 'Jet OLEDB:Global Partial Bulk Ops=2;' +
 'Jet OLEDB:Global Bulk Transactions=1;' +
 'Jet OLEDB:New Database Password="" ;' +
 'Jet OLEDB:Create System Database=False;' +
 'Jet OLEDB:Encrypt Database=False;' +
 'Jet OLEDB:Compact Without Replica Repair=True;' +
 'Jet OLEDB:SFP=False';
 ADOConnection1.Mode := cmShareDenyNone;
 ADOConnection1.Connected := True;
 ADOTable1.Connection:=ADOConnection1;
 ADOTable1.TableName := 'RusToFromEng';
 ADOTable1.Active := True;

end;


Это сообщение отредактировал(а) Hatigatsu - 6.12.2006, 08:21
PM MAIL   Вверх
Elfebet
Дата 6.12.2006, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: нет
Всего: 14



Цитата

Нужно чтоб и после перемещения папки с программой, она (программа) связывалась с базой, находящаяся в том же папке. 

Код

procedure TForm1.FormCreate(Sender: TObject);
begin
 ADOTable1.Active := False;
 ADOConnection1.Connected := False;
 ADOConnection1.LoginPrompt := False;
 ADOConnection1.Provider := 'Microsoft.Jet.OLEDB.4.0';
 ADOConnection1.ConnectionString:=
 'Provider=Microsoft.Jet.OLEDB.4.0;' +
 'User ID=Admin;' +
 'Password=Password;' +
'Data Source='+ExtractFilePath(ParamStr(0))+'BazaD.mdb;' +
 'Mode=ReadWrite;' +
 'Extended Properties="" ;' +
 'Persist Security Info=False;' +
 'Jet OLEDB:System database=" " ;' +
 'Jet OLEDB:Registry Path="" ;' +
 'Jet OLEDB:Database Password="" ;' +
 'Jet OLEDB:Engine Type=5;' +
 'Jet OLEDB:Database Locking Mode=1;' +
 'Jet OLEDB:Global Partial Bulk Ops=2;' +
 'Jet OLEDB:Global Bulk Transactions=1;' +
 'Jet OLEDB:New Database Password="" ;' +
 'Jet OLEDB:Create System Database=False;' +
 'Jet OLEDB:Encrypt Database=False;' +
 'Jet OLEDB:Compact Without Replica Repair=True;' +
 'Jet OLEDB:SFP=False';
 ADOConnection1.Mode := cmShareDenyNone;
 ADOConnection1.Connected := True;
 ADOTable1.Connection:=ADOConnection1;
 ADOTable1.TableName := 'RusToFromEng';
 ADOTable1.Active := True;
end;

оно?


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Hatigatsu
Дата 6.12.2006, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 11.10.2006
Где: г. Н.Новгород

Репутация: нет
Всего: нет



Elfebet, я не указал, что в этом каталоге 
E:\Translation_Rus_Eng_Jap\Material\BazaD.mdb; находится моя База, но программа выдает ошибку. 
Я изменил как ты написал, всё по прежнему.Вот только что удалил пробелы в кавычках (" " исправил на "") и убрал пробелы межу кавычками "" и точкой с запятой ;
Прогресс - программа выдала новую ошибку
  
Project Rus_Eng_Jap.exe raised exception class EOleException with message
'Не удаётся запустить приложение. Системная база отсутствует или
открыта в монопольным доступом другим пользователям'


Я думаю, что пробелы в кавычках и после них, очень много значат. И ещё пришлось удалить строчку
Код

Jet OLEDB:Don't Copy Locale on Compact=False; т.к. там апостроф мешается.

Её нет в первом сообщении темы среди прочих.
Что делать?

Это сообщение отредактировал(а) Hatigatsu - 6.12.2006, 10:33
PM MAIL   Вверх
Rodman
Дата 6.12.2006, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Hatigatsu, попробуй сдулать следующее
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
 ADOTable1.Active := False;
 ADOConnection1.Connected := False;
 ADOConnection1.LoginPrompt := False;
 ADOConnection1.Provider := 'Microsoft.Jet.OLEDB.4.0';
 ADOConnection1.ConnectionString:=
 'Provider=Microsoft.Jet.OLEDB.4.0;' +
 'User ID=Admin;' +
 'Password=Password;' +
'Data Source='+ExtractFilePath(ParamStr(0))+'BazaD.mdb;' +
 'Mode=ReadWrite;' +
 'Extended Properties="" ;' +
 'Persist Security Info=False;' +
 'Jet OLEDB:System database=" " ;' +
 'Jet OLEDB:Registry Path="" ;' +
 'Jet OLEDB:Database Password="" ;' +
 'Jet OLEDB:Engine Type=5;' +
 'Jet OLEDB:Database Locking Mode=1;' +
 'Jet OLEDB:Global Partial Bulk Ops=2;' +
 'Jet OLEDB:Global Bulk Transactions=1;' +
 'Jet OLEDB:New Database Password="" ;' +
 'Jet OLEDB:Create System Database=False;' +
 'Jet OLEDB:Encrypt Database=False;' +
 'Jet OLEDB:Compact Without Replica Repair=True;' +
 'Jet OLEDB:SFP=False';
 ADOConnection1.Mode := cmShareDenyNone;
 ADOConnection1.Connected := True;
 ADOTable1.Connection:=ADOConnection1;
 ADOTable1.TableName := 'RusToFromEng';
 ADOTable1.Active := True;
ShowMessage(ADOConnection1.ConnectionString);/// и посмотри что выведит
end;


я надеюсь ты можешь сделать ADOConnection1.ConnectionString в ручную, тогда сделай и сравни то что программно написано и то что вручную сдулано...

Мне тож кажется с кавычками гимор...

Это сообщение отредактировал(а) Rodman - 6.12.2006, 10:44
PM MAIL WWW Skype GTalk YIM MSN   Вверх
pkv
Дата 6.12.2006, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.10.2006

Репутация: нет
Всего: нет




Я прописую соединение след образом:

Код

  fMain.conMain.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + PathToDB + ';Persist Security Info=False';



Все работает
PM MAIL   Вверх
Hatigatsu
Дата 6.12.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 11.10.2006
Где: г. Н.Новгород

Репутация: нет
Всего: нет



Rodmanpkv, СпасиБо за помощь. Сейчас попробую.

Добавлено @ 12:19 
pkv, Ты СУПЕР. Море, тебе, БЛАГОДАРНОСТИ. Пусть Ангелы будут петь тебе перед сном райские песни. Всё работает, УР-А-ААааааааааааа! Наконец-то я сдам курсовик. Всем, и конечно же особенно админам, и создателям  этого "королевства помощи", СпасиБо от всего сердца. 

PS: В ближайшие два месяца, наверное, не буду людей беспокоить новыми темами.
PM MAIL   Вверх
Veniamin
Дата 27.5.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 3.3.2005

Репутация: нет
Всего: нет



Цитата(pkv @ 6.12.2006,  11:52)
Я прописую соединение след образом:

Код

  fMain.conMain.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + PathToDB + ';Persist Security Info=False';



А можно подробнее куда конкретно нужно прописывать этот код? Или как можно с помощью OpenDialog-а указывать БД, и чтоб приложение соединялось с БД?
PM MAIL   Вверх
Rodman
Дата 27.5.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Код

if(OpenDialog.Execute)then
begin
   fMain.conMain.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + OpenDialog.FileName + ';Persist Security Info=False';
  fMain.conMain.Open;
  ...
end;
а куда вставлять, уже сам решай..
перед началом работы с базой
PM MAIL WWW Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.