2012-09-13 3 views
0

쿼리에 연결된 마스크가 있습니다.ms-access : vba를 사용하여 현재 행을 삭제하십시오.

이 마스크는 액세스 테이블 (한 번에 하나의 레코드)에 레코드를 표시합니다 (예 : A 테이블).

사용자가 버튼을 클릭하면 레코드가 다른 테이블 (예 : B)에 복사되고 원래 테이블 (A)에서 삭제되어야합니다. 또한 마스크는 다음 또는 이전 레코드 (있는 경우)로 전달해야합니다.

테이블 B는 키 필드를 가질 수 없습니다.

어떻게 이것을 vba를 통해 얻을 수 있습니까?

답변

0

단추 복사를 누른 다음 단추를 눌러 양식에 표시된 레코드를 삭제하십시오.

Sub btnCopy() 
    Dim strSQL as string 
    strSQL = "INSERT INTO TableB SELECT fld1, fld2 FROM TableA WHERE fld1 = '" & txtFld1 & "'" 
    CurrentDb.Execute strSQL 
    strSQL = "DELETE FROM TableA WHERE fld1 = '" & txtFld1 & "'" 
    CurrentDb.Execute strSQL 
End Sub 
+0

where 부분을 사용할 수 없습니다. 표 A와 B는 다릅니다. 레코드가 몇 가지 방법으로 변형되어 B 테이블에 복사 된 다음 A 테이블에서 원래 레코드를 삭제해야하지만이 레코드는 키로 식별되지 않습니다. 실제로 A 테이블에는 Excel 파일에서 가져온 데이터가 들어 있습니다 (Excel 파일에는 "고유"필드가 없음). – Sefran2

+0

@Cricket - Excel에서 데이터를 가져올 때 Autonumber를 사용하여 B 테이블에 기본 키 열이 있어야합니다. Excel 파일에있을 필요는 없습니다. – JeffO

+0

@Cricket 쿼리를 사용할 필요가 없으므로 "마스크"로 양식을 의미하는 경우 양식 레코드 세트에서 삭제할 수 있습니다. 양식을 사용하여 현재 레코드를 삭제할 때는 키가 필요하지 않지만 키가 있으면 항상 좋은 생각입니다. – Fionnuala

관련 문제