Хорошо, так что это займет некоторое объяснение.
Процесс, который я пытаюсь выполнить, - это получить данные из табличной функции в SQL, а затем заполнить набор данных возвращаемыми значениями.
Затем мне нужно выполнить этот запрос еще два раза, чтобы запросить альтернативную таблицу номеров. Затем добавьте в ту же таблицу, что и предыдущие запросы.
Это должно быть как можно быстрее, поэтому в настоящее время я использую adapter.fill для заполнения наборов данных, а затем dataset.merge, чтобы поместить их все в одну таблицу.
Проблема в том, что запрос может возвращать дубликаты, которые тратят время и пространство, поэтому я сделал столбец 3 (part_ID) первичным ключом для остановки дубликатов.
Когда он запускается с .merge, он завершается при первом экземпляре дублирования и не продолжается с заполнением.
Код ниже - это то, что я использовал, чтобы исправить это, мне просто было интересно, есть ли лучшее, более элегантное решение.
</p>
<pre> 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
Спасибо за любую помощь или совет ^ __ ^