2011-11-03 3 views
0

클래스 프로젝트로서 인벤토리를 추적하는 Access 2010 데이터베이스를 만듭니다. 이 질문의 목적을 위해 두 개의 관련 테이블 인 Assets 및 Actions와 하나의 관련 양식 인 Update Asset이 있습니다. 내 목표는 누군가가 Assets 테이블의 레코드를 업데이트 할 때마다 Actions 테이블에 새 레코드를 삽입하도록하는 것입니다. 새 작업 레코드에는 저장시 현재 레코드에 포함 된 필드의 스냅 숏이 포함됩니다.Access 2010 매크로에서 매크로 오류

업데이트 자산 양식에는 업데이트 후 이벤트에 첨부 된 AuditLog라는 매크로가 있습니다. 매크로는 다음과 같은 매개 변수와 함께 RUNSQL 명령을 사용하여

SQL 문 :

INSERT INTO Actions (AssetTag, LocationID,Slot,Status,Timestamp,TechID) ; 
SELECT(AssetTag,LocationID,Slot,Status,LastUpdated,TechID) FROM Assets WHERE 
    Assets!AssetTag = Me!AssetTag ; 

를 사용하여 트랜잭션 :

그러나, 나는 레코드를 저장 갈 때, 나는 다음과 같은 오류가 발생합니다 :

문 INTO INSERT에서 구문 오류

매크로 이름 : AuditLog 보고서

액션 이름 : RUNSQL

인수 : 동작 (AssetTag, LocationID, 슬롯, 상태, 타임 스탬프, TechID) INTO INSERT; ! SELECT (AssetTag, LocationID는, 슬롯, 상태, LastUpdated, TechID) 자산은 자산 AssetTag 나를 = WHERE AssetTag, 예를

오류 번호 :! 나는 데이터베이스와 폴더를 추가 한

신뢰할 수있는 위치 목록에 액세스하십시오. 액세스 권한은 분명히 내 장점이 아니므로 도움을 주시면 감사하겠습니다.

답변

0

그것은 나의 장점은 하나,하지만 난 세미 콜론 복합 명령문해야 SQL Server와 같은 표현/문장의 끝과 그이라고 내기 (선택 ...에) 아니에요 따라서

첫 번째 세미콜론을 제거하십시오.

작업 INTO

INSERT (AssetTag, LocationID, 슬롯, 상태, 타임 스탬프, TechID) SELECT (AssetTag, LocationID, 슬롯, 상태, LastUpdated, TechID) 자산 WHERE 자산 AssetTag 나를 = AssetTag!!

0

세미콜론은 성명을 "완료"합니다. 본질적으로 당신이하는 일은 INSERT INTO Actions (AssetTag, LocationID, Slot, Status, Timestamp, TechID)에서 성명서를 잘라 버리는 것입니다. < -

나중에 참조 할 수 있도록 액세스 할 때에는 세미콜론을 사용할 필요가 거의 없습니다. 그것은 당신을 위해 그것을 추가 할 수 있습니다,하지만 이런 것들을 피하기 위해 그냥 넣지 마십시오.

0

다른 사람들이 제안했듯이, 세미콜론은 범인입니다. Access SQL 문에 대한 향후 문제가있을 때 Access 쿼리 디자이너에 문을 붙여 넣을 수 있습니다. 이렇게하면 쿼리 디자이너가 구문 문제가있는 코드를 강조 표시하여 문제를 찾을 수 있습니다.

관련 문제