2010-05-05 7 views
2

난 중복 항목의 톤과 MS 액세스 데이터베이스에서 일하고 있어요. 문제는 학생들의 테이블이 있다는 것입니다. 때로는 특정 학생의 정보를 업데이트하는 대신 누군가 다른 학생으로 다시 학생을 추가 할 수 있습니다. 나는 모든 복사본을 없애기를 원한다. (차이점을 구분할 방법이 거의 없기 때문에 고통 스럽다.) 다른 테이블이 복제본에 의존한다는 점을 제외하고는 복제본을 삭제하는 것만으로도 괜찮을 것이다. 특정 ID에 의존하는 모든 테이블을 유지하도록 선택한 ID에 의존하도록 어떻게 변경할 수 있습니까? MS Access 2003에서 고유 ID로 중복 항목을 제거하려면 어떻게합니까?

 
Student ID | L. Name |F. Name 

ANDY-01 | Andy | Andy 

ANDY-02 | Andy | Andy 

이 그런 과정 테이블에 내가 ANDY-01 촬영 한 것입니다 과정이있을 것이다, 그리고 과정이 ANDY-02을 찍은 것 :

는 다음과 같이 표시됩니다. ANDY-01과 ANDY-02를 ANDY-01로 갖는 모든 테이블의 모든 항목을 병합하려고합니다. 나는 이것에 대해 어떻게 갈 것인가?

+0

나는 최선의 방법은 학생 테이블에 "ID 여야 함"열을 추가하고 관련 테이블을 업데이트하는 것입니다. – Fionnuala

+0

각 학생의 데이터를 기반으로 ID를 생성하는 것과 비슷합니까? 문제는 ID를 생성하기에 충분한 관련 데이터가 없다는 것입니다. 내가 가진 것은 그들의 이름, 성 및 경우에 따라 (내가 먼저 해결할 경우) 자신의 ID에 추가 된 생년월일입니다. 그것은 꽤 엉망입니다 – Jeff

+0

그럼 다른 테이블과의 관계는 무엇입니까? – Fionnuala

답변

2

일을 리호의 대답. 여러 테이블을 업데이트하려면 아래에 나와있는 것과 같은 프로 시저를 만들고 ID 값을 수동으로 업데이트하고 각 학생에 대해 프로 시저를 실행하십시오.
이전 ID와 새 ID를 매핑하는 테이블이나 쿼리가있는 경우 테이블을 읽고 각 학생에 대해이 프로 시저를 호출하는 다른 프로 시저를 작성할 수 있습니다.

Public Sub UpdateStudent() 
    Dim oldID As String 
    Dim newID As String 

    oldID = "ID1" 
    newID = "ID2" 

    DoCmd.Execute "update another_table set student_id='" & newID & "' where student_id=" & oldID 
    DoCmd.Execute "update yet_another_table set student_id='" & newID & "' where student_id=" & oldID 
End Sub 
+0

나는 나의 VB 코드에 약간의 문제가있다. 이것은 내가 가지고있는 것입니다 :. 옵션은 데이터베이스를 공공 하위 RemoveDupelicateDepartments 비교() 희미한 oldID 문자열 희미한 NEWID 문자열 oldID = "DND-01" NEWID = "DEPA-04" DoCmd으로.& NEWID & RUNSQL "[HomeDepartment] = SET UPDATE [클린 학생 테이블]" "WHERE [HomeDepartment] ="& oldID & "; " 최종 하위 . 나는 그것을 실행할 때마다,이 매개 변수 나에게 묻습니다"DEPA " 및 "DND". 그것은 SQL 쿼리로 잘 작동합니다. VB에서 문자열을 잘못 선언 할 수 있습니다. – Jeff

+0

오 형 신이 서식이 잘못되었습니다. – Jeff

+0

ID가 정수 대신 문자열 인 경우 따옴표로 묶어야합니다. 문자열을 사용하는 나의 예. SQL 문장에서 작은 따옴표를 주목하라. – BenV

2

당신은 그냥 업데이트 SQL 확인해야합니다 (나는 ANDY-01 및 ANDY-02을 구별하고있어 방법에 대해 걱정하지 마십시오)에 대한

update another_table set student_id=:ID2 where student_id=:ID1

+0

어쨌든 단일 쿼리에서 하나 이상의 테이블을 업데이트하도록 만들 수 있습니다. 또는 다른 언어 (MSVB?)를 사용하여 한 번에 여러 쿼리를 수행 할 수있는 방법 일 수 있습니까? – Jeff

+0

@Riho : "= :"은 무엇입니까? 그건 제트/ACE에 의해 제대로 실행되지 않을거야. * 관련된 데이터베이스가 무엇인지주의를 기울였습니까? –

+0

: ID1 - 실제 값으로 대체 할 매개 변수 – Riho

관련 문제