わかりましたので、これには説明が必要です。
私がやろうとしているプロセスは、SQL のテーブル関数からデータを取得し、返された値をデータセットに入力することです。次に、このクエリをさらに 2 回実行して、別の数値テーブルをクエリする必要があります。次に、前のクエリと同じテーブルに追加します。これは可能な限り高速である必要があるため、現在、adapter.fill を使用してデータセットを作成し、dataset.merge を使用してそれらすべてを 1 つのテーブルに配置しています。
問題は、クエリが時間とスペースを浪費する重複を返す可能性があることです。このため、重複を停止するために列 3(part_ID) を主キーにしました。
これを .merge で実行すると、複製の最初のインスタンスで終了し、作成を続行しません。
以下のコードは、これを修正するために使用したものです。よりエレガントなソリューションがあるかどうか疑問に思っていました。
com = New SqlCommand(sqlPN, myConnect)
adapter.SelectCommand = com
adapter.Fill(temp, "Table(0)")
Dim data As New DataSet
data = temp
temp.Tables(0).Columns(3).Unique = True
firstSet = temp.Tables(0).Rows.Count
temp.AcceptChanges()
If temp.Tables(0).Rows.Count < maxRecords Then
Dim sqlAlt As String = "select Top " & (maxRecords + 10 - temp.Tables(0).Rows.Count) & " * from getAltEnquiry('" & tbSearchFor.Text & "') ORDER BY spn_partnumber"
adapter.SelectCommand.CommandText = sqlAlt
adapter.FillLoadOption = LoadOption.OverwriteChanges
adapter.Fill(temp, "Table(1)")
For i = 0 To temp.Tables(1).Rows.Count - 1
Try
temp.Tables(0).ImportRow(temp.Tables(1).Rows(i))
Catch e As Exception
End Try
Next
End If
If temp.Tables(0).Rows.Count < maxRecords Then
Dim sqlSuPN As String = "select Top " & (maxRecords + 5 - temp.Tables(0).Rows.Count) & " * from getSuPNEnquiry('" & tbSearchFor.Text & "') ORDER BY spn_partnumber"
adapter.SelectCommand.CommandText = sqlSuPN
adapter.Fill(temp, "Table(2)")
For i = 0 To temp.Tables(2).Rows.Count - 1
Try
temp.Tables(0).ImportRow(temp.Tables(2).Rows(i))
Catch e As Exception
End Try
Next
End If</code>
助けやアドバイスをありがとう^__^