|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Организация доступа к БД по локальной сети
Доброго времени суток!
Есть БД на 10 000 записей (MSAccess), необходимо организовать доступ к данной БД клиентских приложений в данной локальной сети (желательно при помощи ADO). Пожалуйста подскажите как это сделать, или где найти информацию по данной тематике (желательно с примерами). PS Прошу прощения если данная тема уже обсуждалась. |
#2
|
|||
|
|||
Рекомендую перенести на MS SQL Server.
|
#3
|
||||
|
||||
Да ладно вам, ради 10000 записей сервак подымать.
Не вижу серьезных проблем. Расшариваете общую папку на запись/чтение выбраным пользователям. Кладете в нее ваш mdb-файл. Подключаете у пользователя эту сетевую папку. Собственно все. Основная сложность состоит в том, что-бы ваш mdb-файл администратор корректно закрыл, не оставив после сябя хвост в виде ldb-файла. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
|||
|
|||
Начало понемногу получаться!
Если делать через MIDAS, то вылетает ошибка ОТКАЗАНО В ДОСТУПЕ Подскажите в чем может быть ошибка? СЕРВЕР: Состоит из Формы и Remote Data Module (+ через ado подключена БД) На форме ничего нету а код Remote Data Module приведен далее: Код:
unit Unit2; {$WARN SYMBOL_PLATFORM OFF} interface uses Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr, DBClient, Project1_TLB, StdVcl, Provider, DB, ADODB; type TServer = class(TRemoteDataModule, IServer) ADOConnection1: TADOConnection; ADOTable1: TADOTable; DataSetProvider1: TDataSetProvider; private { Private declarations } protected class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override; public { Public declarations } end; implementation {$R *.DFM} class procedure TServer.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); begin if Register then begin inherited UpdateRegistry(Register, ClassID, ProgID); EnableSocketTransport(ClassID); EnableWebTransport(ClassID); end else begin DisableSocketTransport(ClassID); DisableWebTransport(ClassID); inherited UpdateRegistry(Register, ClassID, ProgID); end; end; initialization TComponentFactory.Create(ComServer, TServer, Class_Server, ciMultiInstance, tmApartment); end. КЛИЕНТ: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBClient, MConnect, Grids, DBGrids; type TForm1 = class(TForm) DBGrid1: TDBGrid; DataSource1: TDataSource; ClientDataSet1: TClientDataSet; DCOMConnection1: TDCOMConnection; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin DCOMConnection1.ComputerName:='192.168.0.1'; //это например DCOMConnection1.ServerName:='Project1.Server';// Имя сервера DCOMConnection1.ServerGUID:='{9BE3AC7C-FB4E-458A-BC37-BE4F20AF1FB1}';// GUID моего сервера DCOMConnection1.Connected:=true; MessageDlg(BoolToStr(DCOMConnection1.Connected),mtInformation,[mbOK],0); ClientDataSet1.ProviderName:='DataSetProvider1';//имя провайдера ClientDataSet1.Active:=true; MessageDlg(BoolToStr(ClientDataSet1.Active),mtInformation,[mbOK],0); end; end. ПОСЛЕ НАЖАТИЯ НА КНОПКУ КЛИЕНТ ДОЛЖЕН ПОЛУЧИТЬ ДАННЫЕ, MESSAGEDLG ПОКАЗЫВАЕТ ЧТО КЛИЕНТ К СЕРВЕРУ ВРОДЕ-БЫ ПОДКЛЮЧАЕТСЯ (ИНАЧЕ СВОЙСТВА DCOMConnection1.Connected И ClientDataSet1.Active БЫЛИ = 0), НО ВИНДА ВЫДАЕТ ОШИБКУ С НАДПИСЬЮ ОТКАЗАНО В ДОСТУПЕ! Последний раз редактировалось Admin, 01.10.2009 в 22:38. |
#5
|
|||
|
|||
Разреши на компах DCOM и DTS. Не помню точно где настройка, поройся.
|
#6
|
|||
|
|||
Сделал тоже самое через SocketConnection работает на ура!
Спасибо всем за обсуждение. Вопрос решен. |
#7
|
|||
|
|||
Здравствуйте.
Не могли бы вы подсказать как работать с SocketConnection к чему он подключается, хоть примерно. А то по нему нигде ничего найти не могу... |