我的第一个存储过程如下所示:Use [Stock]GoCreate Proc Get_OrdersASSELECT [Number_Order] ,[Date_Order] ,[FullName] ,[Location]FROM [Order]我的第二个存储过程如下所示:USE [Stock]GOALTER Proc [dbo].[Get_Order_Res]ASSELECT i.Name_Item ,od.[ID_Order] ,od.[Project] ,od.[Length] ,od.[Width] ,od.[Quantity] ,od.[Weight] ,od.[Supplier] ,od.[GDS_Name] ,od.[GDS_Date] ,od.[WorkshopName] ,od.[WorkshopDate] ,od.[ReservedQty] FROM OdredDetails od INNER JOIN ItemQuantity iq ON iq.ID_ItemQte = od.ID_ItemQte INNER JOIN item i ON i.ID_Item = iq.ID_Item INNER JOIN [Order] ord ON ord.Number_Order=od.ID_Order where ord.[Location]='PRODUCTION'在我的 c# 代码中,我使用此代码从存储过程中获取数据 public DataTable Get_Order_Res() { DAL.DataAccessLayer DAL = new DAL.DataAccessLayer(); DataTable dt = new DataTable(); dt = DAL.SelectData("Get_Order_Res", null); DAL.Close(); return dt; } public DataTable Get_Orders() { DAL.DataAccessLayer DAL = new DAL.DataAccessLayer(); DataTable dt = new DataTable(); dt = DAL.SelectData("Get_Orders", null); DAL.Close(); return dt; }在我的表单中,我使用此代码创建主详细信息视图 public partial class FRM_Reserved : Form{BL.CLS_Order ord = new BL.CLS_Order();DataTable master = new DataTable();DataTable details = new DataTable();DataSet dataSet = new DataSet();public FRM_Reserved() {InitializeComponent(); master = ord.Get_Orders();details = ord.Get_Order_Res();dataSet.Tables.Add(master);dataSet.Tables.Add(details);dataSet.Relations.Add("OderDetails",dataSet.Tables["master"].Columns["Number_Order"],dataSet.Tables["details"].Columns["ID_Order"]);gridControl3.DataSource = dataSet.Tables["master"];但是当我运行代码时,我得到错误:未将对象引用设置为对象的实例。
1 回答
![?](http://img1.sycdn.imooc.com/54584f9d0001219b02200220-100-100.jpg)
胡说叔叔
TA贡献1804条经验 获得超8个赞
由于您没有为数据表命名,因此当您尝试访问它们时,它会返回 null。
dataSet.Tables["master"] // this returns null
要解决此问题,请为您的数据表命名
DataTable master = new DataTable("master"); DataTable details = new DataTable("details");
- 1 回答
- 0 关注
- 146 浏览
添加回答
举报
0/150
提交
取消