2011-11-28 3 views
0

설정 한 ADO.NET 각 부모에 대해 여러 부모 행과 여러 자식 행을 삽입 나는 데이터 집합에서 두 datatables 있습니다 : 사용자 데이터내가 제대로 다음과 같은 시나리오를 해결하는 방법을 나에게 설명 할 수 ADO.NET의 하우투 또는 누군가 전문가를 찾고 있어요

  • ParentTable (ParentID, 이름)
  • ChildTable (ParentID, ActivityID, ...) 일정 데이터를

테이블은 의 Identity 열인 ParentID에 의해 데이터베이스 레벨에서 함게 링크됩니다.

두 테이블 모두 GUI의 별도 DataGridView에 바인딩 된 데이터입니다. 테이블 사이에 "1 부모/N 자식"관계가 있어야합니다. 즉, ParentTable (새 사용자)에 새 항목을 만들면 하위 그리드에 DataGrid이라는 클린을 입력하여 사용자의 일정 데이터를 입력합니다. 그래서 각 테이블에 두 개의 DataAdapters을 설정하여 결과를 DataSet으로 채 웁니다. 또한 DataRelation 개체를 설정하고 두 개의 테이블을 ParentID 열로 연결하려면 DataSet에 할당합니다. 또한 ChildTable에 행을 추가 할 때 DataGrid을 사용하면 SetParentRow을 사용하여 부모 행을 설정합니다.

With DAUser 
    .SelectCommand = New SqlCommand("UsersSelect", conn) 
    .SelectCommand.CommandType = CommandType.StoredProcedure 
    .SelectCommand.Parameters.AddWithValue("@UserID", MyID) 
    .Fill(DSData) 
End With 

With DAActivity 
    .SelectCommand = New SqlCommand("ActivitiesSelect", conn) 
    .SelectCommand.CommandType = CommandType.StoredProcedure 
    .SelectCommand.Parameters.AddWithValue("@UserID", MyID) 
    .Fill(DSData) 
End With 

DSData.Relations.Add(New DataRelation("UserActivity", DSData.Tables(0).Columns("ParentID"), DSData.Tables(1).Columns("ParentID"))) 

ChildTable에 행을 추가 :

아직
Private Sub DTChildData_TableNewRow(sender As Object, e As System.Data.DataTableNewRowEventArgs) Handles DTChildData.TableNewRow 
    e.Row.SetParentRow(ParentDataRow) 
End Sub 

ChildTableParentIDParentTable이 업데이트 될 때 DB에서 검색 한 ID 값으로 채워지지 않습니다.

왜? 당신의 양쪽에 ParentID를 참조하고 있기 때문에,

1) 두 테이블 사이의 관계를 가장 가능성이 잘못된 것입니다 : 나는 ...이 문제를 통해

+0

두 번째 채우기 작업 전에 기본 테이블 이름 "테이블"의 이름이 바뀌어 첫 번째 테이블을 덮어 쓰지 않습니다. 또한 Fill 대신 FillSchema를 사용하면 데이터 집합이 전혀 채워지지 않습니다 ... 이상합니다. – Daniel

답변

0

노트의 몇 머리의 심각한 양을 풀어 시작입니다 관계. 그들이 절차를 저장하고 사용자 ID가 저장 프로 시저에서 생성되는 경우 다음 것,

DSData.Relations.Add(New DataRelation("UserActivity", DSData.Tables(0).Columns("UserID"), DSData.Tables(1).Columns("ParentID"))) 

2) 당신은 당신의 삽입 또는 업데이트 명령을 보여주는 것이 아니라, : 나는 당신이 그것을 변경해야 추측하고있다 OUTPUT 매개 변수로 저장 프로 시저 밖으로 다시 전달해야합니다. 삽입/업데이트 된 명령에서 SP와 매개 변수 정의 (있는 경우)를 모두 변경해야합니다.

관련 문제