不好意思,第一个错了,问题应该为
dbinfor.SetValues();
SqlConnection conn=new SqlConnection(dbinfor.connectstring());
conn.Open();
SqlDataAdapter ad=new SqlDataAdapter("select * from OrderForm",conn);
SqlCommandBuilder builder=new SqlCommandBuilder(ad);
DataSet ds=new DataSet();
ad.Fill(ds,"OrderForm");
ad=new SqlDataAdapter("select * from OrderDetail",conn);
ad.Fill(ds,"OrderDetail");
ds.Relations.Add("OrderDetails",ds.Tables["OrderForm"].Columns["OrderNum"],ds.Tables["OrderDetail"].Columns["OrderNum"]);
conn.Close();
return ds;
我把这个返回的dataset绑定到一个dataGrid没有问题,但如果在第一句的查询语句改为"select * from OrderForm where OrderNum=2",就出错了,为什么呢?
是不是要把第二句改为"select * from OrderDetail where OrderNum=2 in OrderForm"之类的?这里好象有语法错误:)

解决方案 »

  1.   

    try :
    "select * from OrderForm where OrderNum='2'"
      

  2.   

    ordernum是long型的,这两个分别用都没问题,如果用了relation就有问题
      

  3.   

    怎么会是select * from OrderDetail where OrderNum=2 in OrderForm?
    你的“in OrderForm”什么意思?
      

  4.   

    错了,应该是"select*from OrderDetail,OrderForm where OrderForm.OrderNum="+Num1;
    但这样写出来后在datagrid里面显示了那个“OrderDetails”,点开后什么也没有
    我再把问题说一次吧,应该是如果两个select分别是"select*from OrderForm","select*from OrderDetail",然后ralations.add后,那个dataset在datagrid里面显示就没有问题,但如果在第一个select语句前面加 一个条件比如"select * from OrderForm where Address='"+adr+"'",这样的化在datagrid里面显示了OrderForm,但在OrderForm的子集OrderDetail里面就什么也没有,这是为什么呢?