Заполнить типизированный набор данных с помощью UNION ALL SQL-запроса - PullRequest
0 голосов
/ 27 июля 2010

У меня здесь странная ситуация, и я надеюсь, что кто-нибудь сможет мне помочь. У меня нет той же проблемы при использовании нетипизированного набора данных.

OK. У меня есть типизированный набор данных MyDS с типизированной таблицей данных MyTable (TableID, Title, Message).

Таблица заполняется результатами из двух таблиц, используя UNION ALL


Select
  TableAID,
  TableATitle,
  Message
FROM TableA

UNION ALL

Select
  TableBID,
  TableBTitle,
  Message
FROM TableB

Dim cmd As SqlCommand = New SqlCommand("SQL", conn)

Dim da AS SqlDataAdapter = New SqlDataAdapter(cmd)
da.Fill(MyDS.MyTable)

Запрос хорошо работает на SQL Server, но когда я перебираю код, я нахожу неверный TableAID или TableAID.

Таблица A имеет 1 строку, а TableB - 15 строк. Итак, мой набор данных возвращает 16 строк (так что в основном это ситуация с деталями мастера). Все столбцы возвращают правильные соответствующие данные, кроме TableAID и TableBID.

TableAID имеет значение = 100 , а TableBID имеет 10, 11, 12, 13, ......... 24 , но когда я прохожу,

MyDS.MyTable(<strong>i</strong>).TableID
остается 100 во всех 16 записях вместо 100, 10, 11, 12, 13, ......... 24. Название, данные сообщения верны. TableAID и TableBID - мои основные ключи.

i = от 0 до 15

Это как наборы типизированных данных обрабатывают UNION? Я не хотел создавать два типизированных таблицы данных, создавать отдельные SQL для каждого и создавать отношения.

1 Ответ

0 голосов
/ 27 июля 2010

Мне удалось это исправить. Это был не набор данных вообще. Я на самом деле использовал сохраненный процесс, который выбирал из вида, и у меня было 2 вида (view1 и view2), которые были почти одинаковыми. Таким образом, приведенный выше sql был из view2, но хранимый процесс использовал view1. Я использовал представления, потому что утверждение было сложнее, чем это. Так что мой девиз: если у меня есть сложный SQL-файл SELECT, который мне нужно использовать в моем хранимом процессе, включите его и просмотрите простой процесс для работы. Код

            
 Dim cmd As SqlCommand = New SqlCommand("StoredProcedureName", conn)
 cmd.CommandType = CommandType.StoredProcedure

Не


Dim cmd As SqlCommand = New SqlCommand("SQL", conn)

Я почти хотел заменить набранный набор данных на нетипизированный, потому что у меня не хватало времени. Сроки. лол Спасибо, что заставили меня думать, что это не набор данных, так как вы не могли понять, в чем может быть проблема. LOL

...