各位大牛:我想实现一个多表查询的一个结果集怎么放到dataset里阿?

zqj9899 2005-11-10 06:20:18
Dataset1 myset = new Dataset1();
//string strSql = "select * from A ,B where A.a1=B.b1";
try
{
string strCnn = "Server=.;Database=A;uid=sa; password=sa";
SqlConnection conn = new SqlConnection(strCnn);
SqlDataAdapter dataadpter = new SqlDataAdapter(strSql,strCnn);
//dataadpter.Fill(??)
单表的时候可以dataadpter.Fill(myset,"表名");
可是我这里涉及到2个表Fill方法的参数怎么写啊?
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
finally
{
conn.Close();

}
CrystalReport1 test = new CrystalReport1();
test.SetDataSource(myset);
crystalReportViewer1.ReportSource = test;
...全文
186 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yj0867 2005-11-23
  • 打赏
  • 举报
回复
不知道我说清楚了吗?有问题可以再讨论。
yj0867 2005-11-23
  • 打赏
  • 举报
回复
DataSet相当于1个容器,容器中存放着查询得到的记录。
Adapter.Fill()方法只是向DataSet中放数据,第2个参数是一个虚拟的表名,与实际的表名没有关系。你可以为虚拟表名起任何的名称,比如上例中可以写作:dataadapter.Fill(myset,"table")。
DataSet可以加入多个虚拟表,访问时可以用myset.Tables[0]或myset.Tables["虚拟表名"]。
另外你可以在SQL Server的查询分析器中测试一下SQL,就会发现,得到的是综合了表A和表B的记录,而不是一条表A的数据一条表B的数据。
zr1982930 2005-11-22
  • 打赏
  • 举报
回复
只能用一个DataSet,这个DataSet里包含主表和子表!多个DataSet好像是不行的!
beckham88 2005-11-21
  • 打赏
  • 举报
回复
用xml文件作为数据源,先把数据倒入xml文件中,让后再让报表取xml文件中的数据,呵呵,可能速度会慢点!
zqj9899 2005-11-21
  • 打赏
  • 举报
回复
解决了,下先在dataset里定义n个 表结构,然后动态的采用push模式添加数据就行了,如果有问题欢迎交流QQ:63356675
htto://www.itvod.net
5swords 2005-11-11
  • 打赏
  • 举报
回复
当然,可能有另外的办法,CR可能可以对多表作些处理。不过我觉得这太麻烦。

不好意思,我也是初学者,胡说一气,请见谅。
5swords 2005-11-11
  • 打赏
  • 举报
回复
最后总是一个查询,如果你还是两个,要并成一个

然后做成VIEW
zqj9899 2005-11-11
  • 打赏
  • 举报
回复
怎么把多个dataset放进去阿,
这么说吧.
我想把主表放到一个dataset里
然后把从表也到一个dataset里

然后一起在一个报表里显示出来.怎么办啊?
5swords 2005-11-11
  • 打赏
  • 举报
回复
用视图吧,简单
zqj9899 2005-11-11
  • 打赏
  • 举报
回复
报的错误也是
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints
zqj9899 2005-11-11
  • 打赏
  • 举报
回复
Dataset1 myset = new Dataset1();
string strCnn = "Server=.;Database=A;uid=sa; password=sa";
string strSql = "select DISTINCT (A.ProductCode) ,A.StationCode ,A.CompanyCode from B, A where A.ProductCode = A.ProductCode and B.ProductCode in (select DISTINCT B.ProductCode from A,B where A.ProductCode = B.ProductCode) GROUP BY A.ProductCode,A.StationCode,A.CompanyCode"
string strSql2 = "select (min(B.createdate)),sum(B.Quantity) as Quantity ,sum(B.ReturnQty) as ReturnQty from B, A where B.ProductCode = A.ProductCode and B.ProductCode in (select DISTINCT B.ProductCode from A,B where A.ProductCode = B.ProductCode) GROUP BY A.ProductCode,A.StationCode,A.CompanyCode";
SqlConnection myConnection = new SqlConnection(strCnn);
try
{
SqlDataAdapter myAdapter = new SqlDataAdapter();
myAdapter.TableMappings.Add("Table", "A");
myConnection.Open();
SqlCommand myCommand = new SqlCommand(strSql,myConnection);
myAdapter.SelectCommand = myCommand;
myAdapter.Fill(myset);
SqlDataAdapter adpProducts = new SqlDataAdapter();
myAdapter.TableMappings.Add("Table", "B");
SqlCommand cmdProducts = new SqlCommand(strSql2,myConnection);
adpProducts.SelectCommand = cmdProducts;
adpProducts.Fill(myset);


}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
finally
{
if(myConnection!=null)
{
myConnection.Close();
}
}
CrystalReport2 complexRepTest = new CrystalReport2();
complexRepTest.Database.Tables[0].SetDataSource(myset.Tables[0]);
complexRepTest.Database.Tables[1].SetDataSource(myset.Tables[1]);
crystalReportViewer1.ReportSource = complexRepTest;
zqj9899 2005-11-11
  • 打赏
  • 举报
回复
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints
总是抱这个错误
CHONGLOU 2005-11-10
  • 打赏
  • 举报
回复
楼上的说的差不多,我也遇到过类似问题,应该可以用视图解决.把多个表的数据作成一个视图,再从视图读数据.不过多是在push模式里用到
murphydai 2005-11-10
  • 打赏
  • 举报
回复
多表查询的结果就是一个表.如果想dataset中放两个表就fill两次.dataadpter.Fill(myset,"表名1");
更改dataadpter的selectcommand的commandstring 查询表二.
dataadpter.Fill(myset,"表名2");
5swords 2005-11-10
  • 打赏
  • 举报
回复
用VIEW应该可以吧
5swords 2005-11-10
  • 打赏
  • 举报
回复
sql呢?什么叫多表查询?

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧