我正在填充DataSet中的两个表。从数据集中的第二个表中检索列时,我收到错误。请帮忙!
"位置0没有行。"
这是我的代码。
存储过程
CREATE proc [dbo].[spDispatchDetails]
(
@JobNo int,
@Programme nvarchar(100)
)
as
begin
select ReceivedFrom,ChallanNo,ChallanDate,JobNo,ReceivingDate,LotNo from tblOrders where JobNo=@JobNo and OrderStatus='In Process'
select Quantity from tblProgramme where JobNo=@JobNo and Programme=@Programme
end
我正在分享我的代码图片。
答案 0 :(得分:0)
可能它不会返回任何行
在访问其中的行之前,您需要检查ds.Table[1]
中的行数。
确保ds.Table[1].Rows.Count > 0
答案 1 :(得分:0)
位置0处没有行
此问题意味着没有为数据集中第二个表执行 SQL 查询返回的行。例如,如果Quantity
表与tblProgramme
和JobNo
匹配,那么Programme
值就不存在。
ADO.NET
的一个问题是检查类型和行数等所涉及的工作量。
要解决此问题,您应该检查以确保表存在且行数至少为1,甚至列也存在。
if (ds.Tables.Count == 2 && // Ensure two tables in the dataset
ds.Tables[1].Rows.Count > 0 && // Ensure second table has a row
ds.Tables[1].Rows[0]["Quantity"] != DBNull.Value) // Ensure value for Qty
{
// Then do something with it...
}
作为旁注,我建议使用 ORM ,因为它几乎消除了原始ADO.NET
样板代码引入的所有问题。
答案 2 :(得分:0)
首先检查SQL是否返回行,尝试手动执行查询。调试时确保正确发送参数(下拉选择值)
错误告诉您第二个表中没有行。理想情况下,始终检查行数是否大于零
答案 3 :(得分:0)
在开头您应检查您的过程是否将任何行返回到ds.Tables[1]
,因为此错误对于这种情况非常典型。
请检查您的程序的这一部分:
select Quantity from tblProgramme where JobNo=@JobNo and Programme=@Programme
如果你有任何行,请告诉我们。