Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.10.2019, 23:16
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 113
Версия Delphi: Delphi7
Репутация: 10
По умолчанию Delphi 7 и Access 2010

Здравствуйте! Какого поставщика OLE DB выбрать в выборе подключаемых данных, если база и таблицы созданы в access 2010?
Ответить с цитированием
  #2  
Старый 08.10.2019, 13:23
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Microsoft.ACE.OLEDB.12.0
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #3  
Старый 08.10.2019, 16:33
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 113
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kailon
Microsoft.ACE.OLEDB.12.0
А где он в списке подключаемых данных? Не найду.
Ответить с цитированием
  #4  
Старый 09.10.2019, 15:14
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Цитата:
Сообщение от Maks19
...если база и таблицы созданы в access 2010?
Я даже представить не могу, чтоб БД была создана где-то, а таблицы для неё в другом месте. Ну, да ладно

Цитата:
Сообщение от Maks19
А где он в списке подключаемых данных? Не найду.
А с помощью чего подключаетесь к БД? Если ADOConnection, что является самым простым, то в ConnectionString
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #5  
Старый 09.10.2019, 20:52
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 113
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kailon
Я даже представить не могу, чтоб БД была создана где-то, а таблицы для неё в другом месте. Ну, да ладно


А с помощью чего подключаетесь к БД? Если ADOConnection, что является самым простым, то в ConnectionString
Выбрал этот вариант. У меня ошибка при проверке соединения: Не выполнена проверка соединения из-за ошибки при инициализации поставщика. Не удается найти файл....
В источнике данных указал путь где находится созданная база.
Ответить с цитированием
  #6  
Старый 09.10.2019, 23:42
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Показывай, что ты там указал.
При использовании БД на Access я делаю так:
Код:
//при создании формы
procedure TDM.DataModuleCreate(Sender: TObject);
var
  PathExe: String;
begin
//извлекаем путь запуска программы
  PathExe := ExtractFilePath(Application.ExeName);
//подставляем полученный путь и название БД в ConnectionString
  ADOConnect.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;' +
                                   'Data Source=' + PathExe + '\MLBase.accdb;' +
                                   'Persist Security Info=False';
//открываем соединение
  ADOConnect.Connected := True;
end;
Таким образом у нас нет жесткой привязки к пути. Главное чтобы файл-БД лежал рядом с программой. А еще, я бы порекомендовал посмотреть в сторону SQLite.
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #7  
Старый 10.10.2019, 22:15
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 113
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kailon
Показывай, что ты там указал.
При использовании БД на Access я делаю так:
Код:
//при создании формы
procedure TDM.DataModuleCreate(Sender: TObject);
var
  PathExe: String;
begin
//извлекаем путь запуска программы
  PathExe := ExtractFilePath(Application.ExeName);
//подставляем полученный путь и название БД в ConnectionString
  ADOConnect.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;' +
                                   'Data Source=' + PathExe + '\MLBase.accdb;' +
                                   'Persist Security Info=False';
//открываем соединение
  ADOConnect.Connected := True;
end;
Таким образом у нас нет жесткой привязки к пути. Главное чтобы файл-БД лежал рядом с программой. А еще, я бы порекомендовал посмотреть в сторону SQLite.
Выбрал второй пункт из списка поставщиков OLE DB, в источнике данных указал путь где находится созданная база. при создании базы в access ,тип файла указал "Базы данных Microsoft Access 2007".
Ответить с цитированием
  #8  
Старый 11.10.2019, 13:25
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Цитата:
Сообщение от Maks19
Выбрал второй пункт из списка поставщиков OLE DB...".
Вот ты думаешь у всех список поставщиков данных одинаковый?
Цитата:
Сообщение от Maks19
в источнике данных указал путь где находится созданная база
А вот после выполнения всех этих действий можно показать, что получилось в ConnectionString?
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #9  
Старый 11.10.2019, 17:57
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 113
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kailon
Вот ты думаешь у всех список поставщиков данных одинаковый?

А вот после выполнения всех этих действий можно показать, что получилось в ConnectionString?
Вот это:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database2;Persist Security Info=False
Ответить с цитированием
  #10  
Старый 12.10.2019, 01:44
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Цитата:
Сообщение от Maks19
Вот это:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database2;Persist Security Info=False
А должно быть вот это:
Код:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\Documents\Database2.accdb;Persist Security Info=False
При настройке ADOConnection в источнике данных указывается полный путь к файлу вместе расширением, например: "d:\Documents\Database2.accdb".
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.

Последний раз редактировалось Kailon, 12.10.2019 в 01:46.
Ответить с цитированием
Этот пользователь сказал Спасибо Kailon за это полезное сообщение:
Maks19 (13.10.2019)
  #11  
Старый 17.10.2019, 08:09
Master_Crazy Master_Crazy вне форума
Прохожий
 
Регистрация: 17.10.2019
Сообщения: 1
Версия Delphi: Delphi XE4
Репутация: 10
По умолчанию

Цитата:
Сообщение от Maks19
Здравствуйте! Какого поставщика OLE DB выбрать в выборе подключаемых данных, если база и таблицы созданы в access 2010?
1- You must insert TADOconnection contron in your Form (search in Tool palette in bottom right in IDE).
2- Select ADOconnection1 in your Form, right click for show menu, then select Edit ConnectionString -> click Build... button -> Microsoft Office 12.0 Access Database Engine OLE DB Provider -> Next>>
3 - Fill Data Source: with full path of databse.
Uncheck Blank password and Input your Access Database password if have (default is blank)
4- Click button Test Connection. If successed click OK for finish
Ответить с цитированием
  #12  
Старый 30.05.2020, 22:49
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 113
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Здравствуйте! От чего зависит перечень выбора поставщика данных? От версии offica, операц-й системы?
Ответить с цитированием
  #13  
Старый 31.05.2020, 22:22
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

от установленных в системе драйверов ODBC (OLE DB).
Офис обычно ставит нужный для него.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Guaho (01.06.2020)
  #14  
Старый 01.06.2020, 19:32
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kailon
...А еще, я бы порекомендовал посмотреть в сторону SQLite.
Совершенно согласен. Если в БД есть графические поля - тогда беда, ADO при навигации по данным будет временами задумываться на 10 - 20 - 30 (!) секунд, независимо от того, включена ли визуализация содержимого графических полей. Плюс к этому, при размере модуля данных в 666 Мб (мистика?) наступает коллапс - нельзя добавить новые данные, один из датасетов автоматически закрывается. Нет уж, что угодно, только не ADO!!!
Ответить с цитированием
  #15  
Старый 02.06.2020, 00:30
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да ладно. ADO само по себе работает нормально. Это скорее залипухи именно аксеса.

Кстати, что бы тормозов не было:
1. Используй ADOQuery и не выбирай графические поля. Лучше их по необходимости подгружать отдельным запросом (да, в этом случае надо написать несколько строчек кода руками).
2. Не надо класть Bitmap в базу. Он большой и не удобоваримый. Пакуй в какой-нить более интересный формат и уже его храни.
3. Вообще, картинки лучше "выкинуть" в отдельную таблицу. А саму таблицу (не для аксеса, а для нормльных СУБД) еще надо "выкинуть" на отдельный раздел.
При соблюдении этих правил все работает замечательно. У нас в программе для банка (очень много клиентов и много записей в БД) никаких тормозов с картинками не наблюдалось. Картинки (сканы документов) были сохранены в TIFF с компрессией, лежали в отдельной таблице (на счет раздела/диска - не знаю, в девелоперской базе не выносили, а админы банка - не знаю, мы рекомендацию дали).
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:46.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter