(VB 답변,하지만 당신은 변환 할 수 있어야한다)
가 전체 데이터 세트를로드하는 하나의 쿼리를 사용하려면 ...
- 멀티 결과 쿼리를 만듭니다.
- 데이터 집합의 테이블 어댑터 중 하나에 대한 쿼리를 만듭니다 (입력 된 매개 변수를 활용하는 등).
- 생성 된 코드의 복사본으로 쿼리를 오버로드합니다.
- 마지막 fill (datatable) 문을 fill (dataset) 문으로 바꿉니다.
- 형식화 된 테이블을 수정하기 위해 테이블을 매핑하는 코드를 실행하십시오.
1) 결과를 반환하는 SELECT 문이 여러 개인 저장 프로 시저 또는 SQL 문을 작성하십시오.
2) 데이터 집합의 테이블 어댑터 중 하나에서 새 쿼리를 추가하십시오.
3)이 쿼리에 대해 생성 된 코드를 가져옵니다. 가장 쉬운 방법은 코드에서 쿼리의 메서드를 사용하고 메서드를 마우스 오른쪽 단추로 클릭 한 다음 "정의로 이동"을 선택하는 것입니다. 그 방법을 별도의 cs 또는 vb 파일에 저장하십시오.(코드 블록 B 참조)
메서드가 작동하려면 네임 스페이스 및 tableadapter 부분 클래스를 가져와야합니다.
4) 오버로드 된 함수에 매개 변수로 데이터 집합을 추가합니다. 이 데이터 세트는 새로운 채우기 문장의 대상이됩니다. (코드 블록 B 참조)
5) 데이터 세트 결과 테이블을 일치 시키려면 다음 코드를 사용하십시오.
Public Shared Sub DatasetAutoMerge(ByVal Source As Data.DataSet, ByVal Target As Data.DataSet)
Target.EnforceConstraints = False
For Each dtTarget As Data.DataTable In Target.Tables
For Each dtSource As Data.DataTable In Source.Tables
Dim dtMatch = dtSource
For Each dcTarget As Data.DataColumn In dtTarget.Columns
If Not dtSource.Columns.Contains(dcTarget.ColumnName) Then
'The source does not have a column we need by name, not a match'
dtMatch = Nothing
Exit For
End If
Next
If dtMatch IsNot Nothing Then
dtTarget.Merge(dtMatch, False, Data.MissingSchemaAction.Ignore)
Exit For
End If
Next
Next
Target.EnforceConstraints = True
End Sub
코드 블록 B (재정의 방법의 최종 버전의 샘플, VB)
Namespace dsMyDatasetTableAdapters
Partial Public Class Table1TableAdapter
Public Overridable Overloads Function Fill(ByVal dataset As dsMyDataset, ByVal OrderNumber As String) As Integer
Me.Adapter.SelectCommand = Me.CommandCollection(0)
If (RecordID Is Nothing) Then
Me.Adapter.SelectCommand.Parameters(0).Value = Global.System.DBNull.Value
Else
Me.Adapter.SelectCommand.Parameters(0).Value = CType(OrderNumber, String)
End If
'end autogenerated code'
'Start Custom Code'
Dim dsDump As New Data.DataSet
Me.Adapter.Fill(dsDump)
DatasetAutoMerge(dsDump, dataset)
End Function
End Class
End Namespace
나는이 과정을 몇 번 사용했습니다. 이 모든 것을 동시에로드하려면 별도의 쿼리를 작성하는 것보다 훨씬 낫습니다. 이게 너를 돕기를 바란다.
데이터 세트에 DataRelations가 포함되어 있습니까 –