2011-02-15 4 views
2

여러 컴퓨터에서 실행되는 응용 프로그램이 있습니다 (대략 2).이 응용 프로그램은 네트워크에있는 공유 mdb를 업데이트합니다. 두 사용자가 한 번에 공유 mdb를 업데이트하려고하지만 한 명의 사용자 만이 문제를 해결할 수 있습니다 한 번에 mdb를 업데이트 할 수 있습니다. 다른 사용자가 열 수 없습니다. 누구나 다중 사용자 환경을 지원한다고 제안 할 수 있습니까?MS Access 2007은 다중 사용자 환경을 지원할 수 있습니까?

편집 :
우리는 다음 확인 버튼을 클릭하면 dbTimeDomain=TADOConnection 그 값이

'Provider=Microsoft.ACE.OLEDB.12.0; 
Mode=Share Deny None; 
Extended Properties=""; 
Locale Identifier=1033; 
Jet OLEDB:Registry Path=""; 
Jet OLEDB:Database Password=""; 
Jet OLEDB:Engine Type=4; 
Jet OLEDB:Database Locking Mode=0; 
Jet OLEDB:Global Partial Bulk Ops=2; 
Jet OLEDB:Global Bulk Transactions=1; 
Jet OLEDB:New Database Password=""; 
Jet OLEDB:Create System Database=False; 
Jet OLEDB:Encrypt Database=False; 
Jet OLEDB:Don't Copy Locale on Compact=False; 
Jet OLEDB:Compact Without Replica Repair=False; 
Jet OLEDB:SFP=False; 
Data Source=Q:\BEL_01\BEL_GADM\ACCESS\Restrictions.mdb; 
Jet OLEDB:System database=C:\Program Files\Tele Atlas\Common Files\DPT.MDW; 
User ID=dbadpt; 
Password=dbadpt; 

입니다 그것은 다음과 같은 기능이

procedure TFrmRoadAttrib.FormActivate(Sender: TObject); 
if dmTimeDomain <> nil then 
    begin 
    if not (dmTimeDomain.dbTimeDomain.InTransaction) then 
    begin 
     dmTimeDomain.dbTimeDomain.BeginTrans; 
    end; 
    end; 

라고 활성화됩니다 TFormRoadAttrib.When 한 형태가있다 코드 실행

if dmTimeDomain <> nil then 
begin 
     if (dmTimeDomain.dbTimeDomain.InTransaction) then 
      dmTimeDomain.dbTimeDomain.CommitTrans; 
    end; 
end;                 

친절히 제안합니다.

+0

delphi 태그를 제거하십시오. 그것은 당신의 질문에 적용 가능하거나 도움이되지 않습니다. –

+0

사용자 중 한 명이 델파이 애플리케이션을 사용하고 있다면 어떻게 될까요? 알기에 충분한 정보가 제공되지 않지만 Delphi 데이터 액세스 레이어에서 문제가 발생할 수 있습니다. 사실, 아래의 주석을 읽었으므로, 정확하게이 경우입니다. 델파이 태그는 분명히 속하지만, 델파이 사용자가 옵션이 무엇인지 파악할 수 있도록 델파이 코드가 필요합니다. –

+0

거래를 제어하는 ​​Delphi 코드를 게시하십시오. 그것은 아마도 문제의 원인 일 수 있습니다. –

답변

4

액세스는 확실히 다중 사용자 환경을 지원하지만 사용 권한을 올바르게 설정해야합니다. 모든 사용자는 데이터베이스가 위치한 디렉토리에 파일을 작성할 수 있어야하며 모든 사용자는 다른 사용자가 해당 디렉토리에서 작성한 파일을 수정할 권한이 있어야합니다. 많은 것을 망쳐 놓을 수있는 방법이 있습니다. 이는 Access에서 동시. 다중 사용자 액세스를 관리하기위한 메커니즘의 일부로 별도의 .ldb 파일을 사용하기 때문입니다.

한 사용자가 공유 디렉터리에 텍스트 파일을 만든 다음 다른 사용자가 해당 파일을 열고 변경 내용을 저장할 수 있는지 확인하는 것이 좋습니다.

+0

스티브 감사합니다.그러나 이것은 문제가 아닙니다. 모든 사용자는 네트워크 드라이브에 대한 완전한 액세스 권한을가집니다. 한 사용자가 mdb를 닫으면 다른 사용자가 mdb를 열고 열 수 있습니다. – anshul

+3

두 사용자가 데이터베이스를 직접 또는 링크 된 테이블을 통해 여는 중입니까? 직접 액세스하는 경우 사용자가 "단독 액세스"를 위해 데이터베이스를 열려고 시도하지 않았는지 확인하십시오. 또한 권한 설정이 복잡 할 수 있으므로 제안한 테스트를 수행하는 것이 좋습니다. 사용자가 디렉토리에 대한 모든 액세스 권한을 가질 수는 있지만, 다른 사용자가 수정할 수 없도록 디렉토리의 한 사용자가 만든 새 파일의 경우 –

+0

이 파일이 유용 할 수 있습니다. http://office.microsoft.com/en-us/access-help/about-sharing-an-access -database-on-a-network-mdb-HP005240860.aspx 응용 프로그램에서 백 엔드 데이터베이스의 개체를 수정할 수 있습니까? – Fionnuala

1

둘 다 앱을 사용할 수 있어야합니다. 한 사용자가 양식이나 표를 편집하는 경우 다른 사용자는 동일한 객체를 편집하지 못하도록 잠급니다. 그러나 일단 앱이 "프로덕션"상태가되면 앱에 아무런 영향이 없어야합니다. 몇 년 전 MS SQL Server 백엔드 (stil MS Access 프론트 엔드)로 큰 응용 프로그램을 변환하는 데 도움이되었고, 그 시점까지는 15 명의 사용자가 동시에 응용 프로그램을 성공적으로 사용하고있었습니다. 앱이 너무 커서 (100 개의 양식, 100 개의 테이블, 수백 개의 행이있는 일부), 성능상의 이유로 이동했습니다. 그렇지 않으면 그들은 아직도 완전히 접근하고있을 것입니다.

0

일반 액세스 mdb 파일 대신 액세스 프로젝트 (adp 확장자) 사용을 고려하십시오. 액세스 프로젝트는 Office CD의 별도 설치 파일로 제공되는 SQL 서버 데스크톱 엔진과 작동합니다. 이는 근본적으로 SQL 서버가 약간 쇠약해진 다운 버전을 실행하고이 서버가 모든 동시성 문제를 처리한다는 것을 의미합니다. 또한 DB가 Access 프로젝트에 비해 너무 커지면 DB를 완전한 SQL Server 시스템으로 쉽게 포팅 할 수 있습니다. 저장 프로 시저 (Stored Procedures) 등 SQL Server로 수행 할 수있는 Access Project에서 대부분의 작업을 수행 할 수 있으며 설치 및 연결하기가 쉽습니다.

+0

Steve Jorgensen의 대답에 대한 의견은 프런트 엔드가 Access가 아니라 Delphi 앱임을 보여 주므로 적용 할 수없는 제안입니다. –

+0

또한 ADP로 2 개의 응용 프로그램을 작성 했으므로 권장하지 않습니다. ADP는 해결하는 것보다 더 많은 문제를 만듭니다. –

관련 문제