Вот что я сделал в кратком изложении:
Глобально определены две новые таблицы данных (назовем их dtFirstTable и dtSecondTable)
Определены строковая переменная "str" и переменная SqlClient.SqlCommand "sqc"
Создана первая строка sql с переменной в условии (имена столбцов и переменных изменены для простоты):
str = "SELECT *one column* FROM ... "
str &= "WHERE ... LIKE ... "
str &= "OR ColumnX = @variable1 "
sqc.CommandText = str
DoSql.addChars(sqc, @variable1, *globally defined value*)
dtFirstTable = DoSql.GetDataTable(sqc)
Это прекрасно работает. Я ожидаю, что dtFirstTable будет иметь ровно три строки каждый раз, и вот что я получаю. Здорово. Теперь я хочу передать эти три строки в second DataTable с новой строкой SQL-запроса:
str = " SELECT *multiple columns* "
str &= "FROM tblR TR "
str &= "LEFT JOIN tblB TB ON TR.ColumnY = TB.ColumnY "
str &= "WHERE TR.ColumnZ = @variable2 "
sqc.CommandText = str
Теперь, если я просто добавлю следующие строки, все будет работать нормально; Я получу один ряд, и этот ряд будет правильным для того, что я хочу.
DoSql.addChars(sqc, @variable2, *value*)
dtSecondTable = DoSql.GetDataTable(sqc)
НО, я хочу получить ТРИ строки для dtSecondTable, основываясь на трех строках в dtFirstTable. Итак, я пробовал цикл For:
For Each row As DataRow In dtFirstTable.Rows
DoSql.addInt(sqc, "@variable2", row.Item("UniqueID"))
Next row
dtSecondTable = DoSql.GetDataTable(sqc)
Я получаю только одну строку в dtSecondTable, и по синтаксису вижу, что я просто создаю одну строку, затем меняю переменную дважды и перезаписываю одну и ту же строку. У меня вопрос, как мне написать это так, чтобы он добавлял строку в dtSecondTable для каждой строки в dtFirstTable, запрашивая значение «UniqueID» в каждой строке? Большое спасибо!