Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к БД MS Access через BDE 
:(
    Опции темы
Гость_Elena
Дата 29.9.2004, 10:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите,плз! sad.gif

Стоит проблема подключения в Delphi к различным файлам Бд MS Access через BDE.
Сейчас определен доступ к конкретной БД через драйвер ODBC (MS Access Driver .mdb) и назначен ODBC DSN= alias, а если назначаю DATABASE NAME=\\\*.mdb, то получаю ошибку "Invalid configuration parameter" при connect. Если использую стандартный драйвер BDE MSACCESS, получаю ошибку "Cannot load an IDAPI service library.", "File: MSJT3032.DLL". Помогите решить такую проблему. ADO использовать - нет времени на исправления.
  Вверх
Beep
Дата 29.9.2004, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я спрашивал тут однажды, но мне просто надо было подключиться к базе access, вот пример подключения через адо:

Для удобства заведи в проекте DataModule (File->New->DataModule)
В него добавь
с закладки ADO: ADOConnection; ADOTable;
с закладки DataAccess: DataSource;
Для отображения на главную форму (или какую надо) добавь
с закладки DataControls: DBGrid;
После этого настрой:
ADOConnection: LoginPromt:=false (если не хочешь, чтобы при каждом запуске просила ввести пароль, даже если его нет), дальше дважды щелкай на ConnectionString, в появ-ся окошке UseConnectionString жми Build, выбирай драйвер доступа к базам, что-нить типа как у меня Microsoft Jet 4.0 OLE DB Provider, жми "Далее->", если у тебя база лежит в том же каталоге, что и прога то в поле ввода имени базы напиши только ее "имя.mdb" если нет то укажи полный путь, но я так почти никогда не делаю! Если база без пароля то остальное оставь как есть (Галка - пустой пароль и Login - "Admin") и жми проверить подключение. Если проверка не выводит ошибок => ДАВИ OK!!!
ADOTable: в выпадающем списке Connection:=ADOConnection1 (ну или как ты его там назовешь), в TableName выбери нужную таблицу!
В Data Source: укажи DataSet:=ADOTable1
Ну и в DBGrid: заранее добавь в испульзующую DBGrid форму, модуль данных (Alt + F11), после выставь DataSource:=DataModule1.DataSource1.
Ну и напоследок проверь чтобы ADOConnection.Connected=True, ADOTable.Active=True, DataSource.Enabled=True ну вроде бы усе
Все это можно, при желании, юзать и из кода!!!

мне помог: lord_nikon
PM MAIL   Вверх
Medved
Дата 29.9.2004, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Точно непомню, но вроде как ты должен созлать алисас через ODBC. После того как создашь, этот алиас автоматически увидит BDE. Т.е. необходимо создавать алиас через Источники данных (ODBC), а не через BDE Admonistrator.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Pakshin A. S.
Дата 29.9.2004, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вот из-за некоторых проблем с Access базой данных (особенно програмное сжатие базы) я и перешел на Paradox. Переходи и ты!
PM   Вверх
Medved
Дата 29.9.2004, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Цитата(Pakshin @ 29.9.2004, 23:56)
Вот из-за некоторых проблем с Access базой данных (особенно програмное сжатие базы) я и перешел на Paradox. Переходи и ты!


И зря между прочем. ИМХО на сегодняшний день Access нет конкурента среди локальных БД. Просто надо для доступа к Access использовать ADO (который под это и заточен) а не BDE.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Pakshin A. S.
Дата 29.9.2004, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Придется согласиться с мнением профи. smile.gif

А как тогда сжимать этот тип базы данных?
PM   Вверх
Medved
Дата 29.9.2004, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



А посмотри DRKB.
Цитата

Using D6 Pro, Access XP and Jet 4.0 Sp6 - how can I compact Access files?

Answer:

This does it:

procedure TMainForm.ActionCompactAccessDBExecute(Sender: TObject);
var
  JetEngine: Variant;
  TempName: string;
  aAccess: string;
  stAccessDB: string;
  SaveCursor: TCursor;
begin
  stAccessDB := 'Provider = Microsoft.Jet.OLEDB.4.0;' +
    'Data Source = %s;Jet OLEDB: Engine type = ';
  stAccessDB := stAccessDB + '5'; {5 for Access 2000 and 4 for Access 97}
  OpenDialog1.InitialDir := oSoftConfig.ApplicationPath + 'Data\';
  OpenDialog1.Filter := 'MS Access ® (*.mdb)|*.mdb';
  if OpenDialog1.execute and (uppercase(ExtractFileExt
    (OpenDialog1.FileName)) = '.MDB') then
  begin
    if MessageDlg('This process can take several minutes. Please wait till the end ' +
      #13 + #10 + 'of it. Do you want to proceed? Press No to exit.', mtInformation,
      [mbYes, mbNo], 0) = mrNo then
      exit;
    SaveCursor := screen.cursor;
    screen.cursor := crHourGlass;
    aAccess := OpenDialog1.FileName;
    TempName := ChangeFileExt(aAccess, '.$$$');
    DeleteFile(PChar(TempName));
    JetEngine := CreateOleObject('JRO.JetEngine');
    try
      JetEngine.CompactDatabase(Format(stAccessDB, [aAccess]),
        Format(stAccessDB, [TempName]));
      DeleteFile(PChar(aAccess));
      RenameFile(TempName, aAccess);
    finally
      JetEngine := Unassigned;
      screen.cursor := SaveCursor;
    end;
  end;
end;

Important Notes:
1. 1.  Include the JRO_TLB unit in your uses clause. 

2. 2.  Nobody should use or open the database during compacting. 

3. 3.  If the compiler gives you an error on the JRO_TLB unit follow these steps: 

 
· Using the Delphi IDE go to Project – Import Type Library. 

· Scroll down until you reach "Microsoft Jet and Replication Objects 2.1 Library". 

· Click on Install button. 

· Recompile a gain. 

 


--------------------------------------------------------------------------------

How to compact and repair MS Access 2000 (Jet Engine 4) during run time using Delphi 5?

Answer:

Usually the size of MS Access keep growing fast by time because of it's internal caching and temporary buffering, which in over whole effect the performance, space required for storing, and backing-up (if needed). The solution is to compact it from Access menus (Tools – Database Utilities – Compact and Repair Database) or to do that from inside your Delphi application.

function CompactAndRepair(sOldMDB: string; sNewMDB: string): Boolean;
const
  sProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;';
var
  oJetEng: JetEngine;
begin
  sOldMDB := sProvider + 'Data Source=' + sOldMDB;
  sNewMDB := sProvider + 'Data Source=' + sNewMDB;

  try
    oJetEng := CoJetEngine.Create;
    oJetEng.CompactDatabase(sOldMDB, sNewMDB);
    oJetEng := nil;
    Result := True;
  except
    oJetEng := nil;
    Result := False;
  end;
end;

Example :

if CompactAndRepair('e:\Old.mdb', 'e:\New.mdb') then
  ShowMessage('Successfully')
else
  ShowMessage('Error…');

Important Notes:
1. 1.  Include the JRO_TLB unit in your uses clause. 

2. 2.  Nobody should use or open the database during compacting. 

3. 3.  If the compiler gives you an error on the JRO_TLB unit follow these steps: 

 
· Using the Delphi IDE go to Project – Import Type Library. 

· Scroll down until you reach "Microsoft Jet and Replication Objects 2.1 Library". 

· Click on Install button. 

· Recompile a gain. 

 


Взято с Delphi Knowledge Base
http://www.baltsoft.com/


--------------------------------------------------------------------------------

procedure CompactDatabase_JRO(DatabaseName:string;DestDatabaseName:string='';Password:string='');
const
  Provider = 'Provider=Microsoft.Jet.OLEDB.4.0;';
var
  TempName : array[0..MAX_PATH] of Char; // имя временного файла
  TempPath : string; // путь до него
  Name : string;
  Src,Dest : WideString;
  V : Variant;
begin
  try
      Src := Provider + 'Data Source=' + DatabaseName;
      if DestDatabaseName<>'' then
          Name:=DestDatabaseName
      else begin
          // выходная база не указана - используем временный файл
          // получаем путь для временного файла
          TempPath:=ExtractFilePath(DatabaseName);
          if TempPath='' Then TempPath:=GetCurrentDir;
          //получаем имя временного файла
          GetTempFileName(PChar(TempPath),'mdb',0,TempName);
          Name:=StrPas(TempName);
      end;
      DeleteFile(PChar(Name));// этого файла не должно существовать smile.gif)
      Dest := Provider + 'Data Source=' + Name;
      if Password<>'' then begin
          Src := Src + ';Jet OLEDB:Database Password=' + Password;
          Dest := Dest + ';Jet OLEDB:Database Password=' + Password;
      end;

      V:=CreateOleObject('jro.JetEngine');
      try
          V.CompactDatabase(Src,Dest);// сжимаем
      finally
          V:=0;
      end;
      if DestDatabaseName='' then begin // т.к. выходная база не указана 
          DeleteFile(PChar(DatabaseName)); //то удаляем не упакованную базу
          RenameFile(Name,DatabaseName); // и переименовываем упакованную базу
      end;
  except
    // выдаем сообщение об исключительной ситуации
    on E: Exception do ShowMessage(e.message);
  end;
end;

Использование:

CompactDatabase_JRO('C:\MyDataBase\base.mdb','','123');

Автор: ZEE
Взято из http://forum.sources.ru




--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Pakshin A. S.
Дата 29.9.2004, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



WOW!!! Раньше бы это wow.gif , ... hmmm.gif хотя тут файлы на диске создаются, что нежелательно при маленьком дисковом пространстве и большой базы данных... или я не понял суть работы. sad.gif
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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