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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2015, 11:27   #1
leejack
Пользователь
 
Регистрация: 23.01.2011
Сообщений: 21
По умолчанию MIDAS (DataSnap), ошибка Provider cannot be found

Добрый день, форумчане.
Появилась проблемка, я решил попробовать себя в разработке приложений для работы с БД.

Цель такая, написать клиент-серверное приложение для доступа к БД.
БД сделана на MS Access 2010 (Тестовая)
Писал на ноуте где установлен MS office 2010 и 32х разрядная система Windows 7 pro.
Сервер писал на нем же, но под ОС Windows Server 2008 r2 x64.

Писал с помощью компонентов для сервера:
TADOConnection, Remote Data Module в котором расположены ADOQuery и DataSetProvider

Для клиента:
TDCOMConnection и TSocketConnection
TClientDataSet и TDataSource

Здесь уже есть проблема, организовать связь по TDCOMConnection не получается, пишет "Отказано в доступе" (Пробовал запустить от имени администратора компилированный exe результат тотже)
По TSocketConnection подключаюсь без проблем Сервер регистрирует данное событие.

Но как только пытаюсь отправить SQL запрос, то в ответ получаю ошибку

Цитата:
Project Project1.exe raised exception class EOleException with message 'Provider cannot be found. It may not be properly installed'. Process stopped. Use Step or Run to continue.
Запрос отправляю следующим образом:

Код:
  ClientDataSet1.Close; 
  ClientDataSet1.CommandText:=Edit3.Text; 
  ClientDataSet1.Open;
Где Edit3.Text = 'select * from first'

Еще я заметил, что если имя провайдера написать другое, тогда приходит другая ошибка :

Код:
Project Project1.exe raised exception class EOleException with message 'Provider not exported: Dddd'. Process stopped. Use Step and Run to continue.
Я понимаю, что наверно пошлют за кучей литературы читать, но если кто может подскажите что можно сделать. Спасибо.

Последний раз редактировалось Stilet; 05.12.2015 в 11:31.
leejack вне форума Ответить с цитированием
Старый 05.12.2015, 11:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

1) Ты хочешь трехзвенку? Можно узнать почему именно ее?
2) Нет желания попробовать отправлять на сервер запросы при помощи компонент от INDY? Я например успешно кручу idHTTP для однострочного запроса и idFTP для запросов где тысячи-миллионы строк в рамках транзакции.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.12.2015, 11:56   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Обычно по другому поступаю - запрос на сервере в ADOQuery. На него нацелен DataSetProvider. ClientDataSet нацелен на это провайдер и само собой на DCOMConnection или SocketConnection, какой уж используешь. И то и другое работоспособно. И ClientDataSet.Active:=True. Самой собой c Try ... Except
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.12.2015, 16:22   #4
leejack
Пользователь
 
Регистрация: 23.01.2011
Сообщений: 21
По умолчанию

Stilet, Вы совершенно правы, трехзвенку. Хотя я на самом деле еще путаюсь в понятиях. По мне трехзвенка это клиент-сервер-сервер БД
А у меня получается клиент-сервер(сервер бд)

2. Можно попробовать, но только как разберусь с возможностями DataSnap.
Аватар, Я правильно понимаю, отличие Вашей схемы от моей это то, что запросы формируются на сервере а не на клиенте? Т.е. с клиента идет команда, а сервер интерпретирует ее как запрос так?

В любом случаю попробую Ваше решение. Меня больше смущает почему DCOMConnection выдает отказ в доступе..(
leejack вне форума Ответить с цитированием
Старый 05.12.2015, 16:43   #5
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Цель такая, написать клиент-серверное приложение для доступа к БД.
БД сделана на MS Access 2010 (Тестовая)
1. БД и СУБД это две разные понят
2. Access это СУБД и не "клиент-серверное" А "файл серверный" ...
полистал бы книгу для достижение ваши цель )
xxbesoxx вне форума Ответить с цитированием
Старый 05.12.2015, 17:18   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Для баловства и изучения возможностей трехзвенки можно и базу ACCESS, что не серьезно, она для этого не предназначена. Запросы сервер отправляет серверу баз данных, результат их выполнения клиенту. А формировать их можно и на клиенте, передавая их серверу, используя серверный метод. RemoteDataModule позволяет их наклепать сколько нужно. Ну это уже конкретная реализация
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.12.2015, 11:18   #7
leejack
Пользователь
 
Регистрация: 23.01.2011
Сообщений: 21
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
1. БД и СУБД это две разные понят
2. Access это СУБД и не "клиент-серверное" А "файл серверный" ...
полистал бы книгу для достижение ваши цель )
Ну, Система Управления Базой Данных по мне это и есть комплекс программ, обеспечивающий управление БД.

Что касается моих слов
"Цель такая, написать клиент-серверное приложение для доступа к БД.
БД сделана на MS Access 2010 (Тестовая) "

То здесь ничего противоречивого я не сказал, Access может и СУБД в целом, но это не мешает в ней сделать просто БД управление которой будет проводиться не ПО Access, а ПО написанным мною.

От сюда следующий вопрос к Аватару:

Вы писали
Цитата:
Для баловства и изучения возможностей трехзвенки можно и базу ACCESS, что не серьезно, она для этого не предназначена. Запросы сервер отправляет серверу баз данных, результат их выполнения клиенту. А формировать их можно и на клиенте, передавая их серверу, используя серверный метод. RemoteDataModule позволяет их наклепать сколько нужно. Ну это уже конкретная реализация
Почему базу ACCESS не рекомендуется использовать для серьезных целей?
Из-за плохой защищенности, мобильности?

Можете посоветовать базу для среднего уровня по вашему опыту?))
Хотя я не уверен есть ли такое понятие, как "средний уровень"

В целом вроде все понял, буду пробовать организовать граммотную трехзвенку для банального обмена данными. Т.е. подключение к серверу, делать запрос и получать ответ. После буду думать как организовать БД.
leejack вне форума Ответить с цитированием
Старый 07.12.2015, 11:34   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Что бы иметь в будущем проблемы по непоняткам с данными при реальной эксплуатации можно и ACCESS, но крайне желательно нормальную СУБД. FireBird, MySQL, MS SQL и прочее. Там как бесплатные так и платные варианты. ACCESS от любой из этих СУБД отличается как мопед от мерседеса.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка DataSnap server mavlon_m Общие вопросы Delphi 3 18.10.2015 22:17
Ошибка В Delphi XE Item not found aleksskay Общие вопросы Delphi 5 07.09.2014 11:28
ошибка Expected ':' but '=' found. в Delphi 7 vizavill Помощь студентам 2 27.10.2011 20:14
Ошибка HTTP/1.1 302 Found dharma Работа с сетью в Delphi 5 09.01.2011 17:18
ошибка http/1.1 302 found pesi Работа с сетью в Delphi 2 10.09.2009 20:25