遇到一个可能是关联方面的问题,请高手指教

Aro0223 2011-06-15 11:17:37
我现在要根据3个表的联合查询的数据来绑定报表,查询的结果没问题,但是绑定后怎么数据确实查出啦的结果一直重复显示
代码是这样的
sql = "select * from Transactions,InvoiceTable,CustTable where Transactions.InvoNumNew=InvoiceTable.InvoNumNew and InvoiceTable.CustNum=CustTable.CustCode "
If Frminvoice.DataGridView1.RowCount >= 1 Then
sql = sql + "and InvoiceTable.InvoNumNew ='" & Frminvoice.DataGridView1(0, Frminvoice.DataGridView1.CurrentRow.Index).Value.ToString() & "' "
Else
sql = sql + "and InvoiceTable.[Date]=(select max([Date]) from InvoiceTable) "
End If
da = New OleDbDataAdapter(sql, myConn)
myDataSet = New DataSet2()
da.Fill(myDataSet, "tables")
Dim crpttick = New CrptTicked()
crpttick.SetDataSource(myDataSet.Tables("tables"))
CrystalReportViewer1.ReportSource = crpttick

DataSet2

...全文
107 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿泰 2011-06-15
  • 打赏
  • 举报
回复
sql = "select * from Transactions,InvoiceTable,CustTable where 。。
这个语句,最终出来的是一个结果集。

da.Fill(myDataSet, "tables")

这个就相当于把你的结果集放到了一个叫tables的表里。
也就是说,所谓的3张表,你用sql已经处理成一个表了。

所以你的水晶报表里,其实也就是一张表,这个表的结构就是你这个语句出来的那些字段。
表名叫tables,当然也可以是其他。


具体操作就是改造dataset2,只保留一个有那么多字段的表
用新的dateset2重新构造报表。应该就行了~
Aro0223 2011-06-15
  • 打赏
  • 举报
回复
泰哥你能在给我解释仔细点吗,谢谢
查询的结果是放在tables中,而报表正常显示就应该是tables中的数据
我报表中是绑定了3个表,你说的改造dataset2指的是?应该怎么改造呢
阿泰 2011-06-15
  • 打赏
  • 举报
回复
不好意思。前面有点想当然了,没仔细看。
你仔细看下你的代码,再对照下你的水晶报表里的表。其实是错的。

你代码里已经对3个表进行了关联,最终放到dataset里的,其实就是一个tables的表数据
但是你的水晶报表里却用3个表
这种情况,你的dataset应该只放一个表,字段就是
select * from Transactions,InvoiceTable,CustTable 里的这些
如果不需要那么多的话,就只挑选几个报表上用到的就可以了。
尽量不要用Select * ,而是用具体的字段。

具体操作就是改造dataset2,只保留一个有那么多字段的表
用新的dateset2重新构造报表。应该就行了~
小笨熊 2011-06-15
  • 打赏
  • 举报
回复
换种连接方式吧?比如左连接。这样写sql不太好。或者加distinct关键字吧
Aro0223 2011-06-15
  • 打赏
  • 举报
回复
这个我有关联http://hi.csdn.net/space-6428469-do-album-picid-835028.html
就应为这样我不知道问题出在哪里了
整个数据好像是按照InvoiceTable中的时间来显示的,但是我的查询结果是对的
阿泰 2011-06-15
  • 打赏
  • 举报
回复
dataset没什么问题
关键是水晶报表里你可能没设置关联关系,按照这个图检查一下,多表需设置


显示不全的话点这里
http://hi.csdn.net/space-3756756-do-album-picid-594735.html
Aro0223 2011-06-15
  • 打赏
  • 举报
回复
阿泰 2011-06-15
  • 打赏
  • 举报
回复
xuandong1990 2011-06-15
  • 打赏
  • 举报
回复
换种连接方式吧?比如左连接。这样写sql不太好。或者加distinct关键字吧
Aro0223 2011-06-15
  • 打赏
  • 举报
回复
太谢谢泰哥了,问题解决了
我是把SQL语句中*改为所有要用到的字段后就可以了
但这里我还是有点不解的是用*和所需的字段查出的结果除了多几个字段外数据的条数都是一样的,为什么会有这样的差别呢,还望泰哥解惑
Aro0223 2011-06-15
  • 打赏
  • 举报
回复
现在可以来个远程协助嘛?我QQ635140279
阿泰 2011-06-15
  • 打赏
  • 举报
回复
水晶报表模板rpt文件和用来做数据源的dataset文件发到hicsdn@yeah.com,晚些我看下。
Aro0223 2011-06-15
  • 打赏
  • 举报
回复
http://hi.csdn.net/space-6428469-do-album-picid-835198.html
还是不行,出来的结果还是跟以前一样

4,816

社区成员

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

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