我在这里有一个奇怪的情况,我希望有人可以帮助我。使用无类型数据集时,我没有遇到同样的问题。
行。我有一个带有类型数据表MyTable的类型化数据集MyDS(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。
TableA有1行,TableB有15行。所以我的数据集返回16行(所以基本上它是一个主要细节情况)。除TableAID和TableBID之外,所有列都返回正确的相应数据。
TableAID的值= 100 ,TableBID的 10,11,12,13,......... 24 ,但是当我单步执行时,该
MyDS.MyTable(i).TableID
在16个记录中保持100,而不是100,10,11,12,13,......... 24。标题,消息数据是正确的。 TableAID和TableBID是我的主键。
我 = 0到15
这是类型化数据集处理UNION的方式吗?我不想创建两个类型化的数据表,并为每个数据表创建单独的SQL并创建关系。
答案 0 :(得分:0)
我设法解决了这个问题。它根本不是数据集。我实际上使用的是从视图中选择的存储过程,我有两个几乎相同的视图(view1和view2)。所以上面的sql来自view2,但是存储过程是使用view1。我使用了观点,因为声明比这复杂。所以我的动机是,如果我有一个复杂的SELECT sql,我需要在我的存储过程中使用它,把它放在视图上并有一个简单的proc来使用。 代码是
Dim cmd As SqlCommand = New SqlCommand("StoredProcedureName", conn)
cmd.CommandType = CommandType.StoredProcedure
不
Dim cmd As SqlCommand = New SqlCommand("SQL", conn)
我几乎想用非类型的数据集替换我的类型数据集,因为我的时间已经不多了。最后期限。大声笑 感谢您让我认为它不是数据集,因为您无法弄清楚可能出现的问题。 LOL