조건부로 두 개의 데이터 테이블을 채워야합니다. 필자는 로컬 XML 데이터베이스와 원격 SQL Server에서 데이터가 제공되는 다른 데이터 테이블에서 데이터를 가져온 데이터 테이블을 보유하고 있습니다.두 데이터 테이블을 병합하는 가장 좋은 방법
원격 데이터 테이블에 업데이트가 있으면 로컬 데이터 테이블을 업데이트/병합해야합니다. 이 코드 데이터에서
Public Sub MargeTwoTable()
Dim SQL As String = ""
Dim RemoteTable As New DataTable
Dim LocalTable As DataTable
Dim dal As New DalComon
Dim yy As Integer = 0
Dim UpdateDate As String
Dim TableName As String = "V_Book_Price"
LocalTable = LoadDataTable(TableName, True)
UpdateDate = LocalTable.Compute("MAX(update_date)", Nothing)
SQL = "select * from V_Book_Price where Update_Date > '" & UpdateDate & "'"
RemoteTable = dal.GetDataSetBySQL(SQL).Tables(0)
If RemoteTable.Rows.Count > 0 Then
For i = 0 To RemoteTable.Rows.Count - 1
Dim st As DataRow
Dim mm() As DataRow = LocalTable.Select("ID = '" & RemoteTable.Rows(i).Item("ID") & "'")
If mm.Length = 0 Then
st = LocalTable.NewRow
For yy = 0 To RemoteTable.Columns.Count - 1
st(yy) = RemoteTable.Rows(i)(yy)
Next
LocalTable.Rows.Add(st)
Else
st = mm(0)
For yy = 0 To RemoteTable.Columns.Count - 1
If IsDate(RemoteTable.Rows(i)(yy)) Then
st(yy) = CDate(RemoteTable.Rows(i)(yy)).ToString("s")
Else
st(yy) = RemoteTable.Rows(i)(yy)
End If
Next
mm = Nothing
End If
Next
End If
End Sub
는 로컬 데이터베이스를 날짜 게터를 업데이트 원격 데이터베이스에서 온다 : 여기에 지금까지 가지고있는 것입니다. 두 테이블 모두 "ID"를 기본 키로 사용합니다. 코드는 잘 작동하지만 문제는 1000 개가 넘는 레코드가 업데이트되면이 함수는 루프를 사용하는 데 너무 오래 걸리는 것입니다.