![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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 к чему он подключается, хоть примерно. А то по нему нигде ничего найти не могу... |