① C# 如何把一些水晶报表的sql语句中判断出那些是查询字段,那些是表名,那些是查询条件
给你一个例子 基本可以传递参数 到水晶报表 可以查询 并且可以将参数字段显示为你需要的值
以前采用vb6做的动态传递水晶报表参数字段,存在一个缺陷就是在设计水晶报表的时候没有按照注释的那里写的(直接拖参数字段到预览的界面)就不会出现水晶报表提示要输入离散值的消息框。其实也不完全是这样的,有时我按照这种方式操作仍然有这个输入离散值消息框的提示,具体是什么原因造成的还不是很清楚,估计开发水晶报表的明白内部机制的友扰原因,我只想能顺畅的使用就可以了,可出现不相关的输入提示就直接影响到客户使用程序。
我在做DotNet2005时用的是水晶报表10,在传递参数后。有加入了设置显示报表控件的参数对象集合为传递的参数值【CRViewer91.ParameterFieldInfo = m_Report.ParameterFields 】运行程序就没有这个输入离散值的提示。vb6使用水晶报表9.0不知道加入这个设置是否能解决问题。暂时我还没有条件测试主要是计算机上没有安装水晶报表9,不过也是一种解决这个问题的办法哗蚂。先在这里保存起来,待有条件了测试下,没有这条语句可能在设计报表rpt文件的时候和程序动态调用可就要来乱告埋回的测试了 。 哈~~~~~~
Private Sub DisplayReport1()
'' ==========================================================
' 开发人员:段利庆
' 编写时间:2008-09-01
' 过程名称:DisplayReport
' 参数说明:
' 功能说明:动态载入水晶报表文件(*.rpt)显示打印预览
'
' 其他说明:程序采用的是Crystal Reports 9.1版本
' 工程引用:Crystal Reports 9 ActiveX Designer Design and Runtime Library
' 控件:CRViewer91
'
'
'' ==========================================================
'*中央错误处理
On Error GoTo PROC_ERR
Dim m_Application As New CRAXDDRT.Application
Dim m_Report As CRAXDDRT.Report
Dim strSQL As String
strSQL = "SELECT * FROM 视图_收费_计量仪表 "
Dim strRptPath As String
strRptPath = App.Path & "\Crystal_RPT_Para\Sell_Meter.rpt"
Debug.Print "strRptPath:" & strRptPath
Set m_Report = Nothing
Set m_Report = m_Application.OpenReport(strRptPath, 1)
'*防止弹出水晶报表数据库登录对话框
m_Report.Database.Tables.Item(1).TestConnectivity
m_Report.Database.Tables.Item(1).ConnectBufferString = objdata.ConnectionString
m_Report.SQLQueryString = strSQL
'****************************************************
'*参数字段传递参数
'*
'*搞了2天了终于找到原因了 08-09-03
'*1.在新建一个参数字段,一定要直接拖放到预览里面
'* 否则拖到设计里面就要弹出输入离散值的消息框
'*
'*2.GetItemByName("MyParaT") 参数是参数字段的名称
'*
m_Report.DiscardSavedData
m_Report.ParameterFields.GetItemByName("MyParaT").ClearCurrentValueAndRange
m_Report.ParameterFields.GetItemByName("MyParaT").AddCurrentValue (Text1.Text)
m_Report.ParameterFields.GetItemByName("k1").ClearCurrentValueAndRange
m_Report.ParameterFields.GetItemByName("k1").AddCurrentValue (Text1.Text)
m_Report.ParameterFields.GetItemByName("k2").ClearCurrentValueAndRange
m_Report.ParameterFields.GetItemByName("k2").AddCurrentValue (Text1.Text)
'*-----------------------------------------------------
'* 以下这句是否能彻底解决弹出离散值输入框问题
'*是根据vb2005 Crystal Report10 顺畅的处理结果得出的
'*2009-08-26
'CRViewer91.ParameterFieldInfo = m_Report.ParameterFields
'*传递的对象 用下面的语句
'*Set CRViewer91.ParameterFieldInfo = m_Report.ParameterFields
'*-----------------------------------------------------
'****************************************************
CRViewer91.DisplayGroupTree = False
CRViewer91.ReportSource = m_Report
CRViewer91.Zoom 1
CRViewer91.ViewReport
'*结束子程序
PROC_EXIT:
Exit Sub
'*错误处理,显示出错信息
PROC_ERR:
MsgBox " ErrNumber: " & Err.Number & vbCrLf & _
"ErrDescription: " & Err.Description & vbCrLf & _
" Mole: " & Me.Caption & vbCrLf & _
" Procere: " & "DisplayReport"
GoTo PROC_EXIT
End Sub
② 水晶报表嵌套子报表的SQL条件是循环得到主报表的某个字段
select 产品 编码
from 产品表
wherer len(编码,1) = "2"
这样的数据库设计得扰拍很差,产品总得有个字段,叫指迅产品类型吧,一个字段能包括的信息是有限的,不要指望产品编码缓逗羡能包含产品类别这个信息,就算能包括,也要建议一下类别的表,这样查询起来也快啊
③ U8自定义报表中的SQL语句解疑
表之间通过字段关联后加条件
④ sqlserver 统计报表的 sql语句怎么写
--动态语句
declare@sqlvarchar(8000)
select@sql=isnull(@sql+'],[','')+NAMEfromT_CSDN_ONEgroupbyNAME
set@sql='['+@sql+']'
EXEC('select*from(select*fromT_CSDN_ONE)apivot(SUM(ISNULL(MONERY,0)forNAMEin('+@sql+'))b')
⑤ 二维报表sql怎么限制条件
我们在sql编写中经常会碰到一些二维数表的情况,一个二维数表中每一个数据都有至少两个条件的约束。
然后我们把数据拍庆粘亏派贴到excl中,通过数据透视表的方式进行处理:
1.首先我们选中数据范围,点击插入,选择数据透视表,点击确定。
2.我们把年限放到x轴,车间放到y轴,人数放入数据中,我们即销贺贺可得到二维报表。
⑥ SQL语句制作报表
t1,t2,t3对应表123
列名用了拼音首字母代替,自己看下吧
SELECT isnull(t1.GG,isnull(t2.gg,t3.gg)) 规格,
isnull(SR,0) 收入,isnull(FC,0) 发出,isnull(jc,0) 结存
FROM
t1 full join t2
on t1.gg=t2.gg
full join t3
on t1.gg = t3.gg
⑦ sql语句中交叉报表的使用
DECLARE@sNVARCHAR(4000)
SELECT@s=ISNULL(@s+',','')+QUOTENAME(标志)
FROM表
---行列转换
DECLARE@SQLNVARCHAR(4000)
SELECT@SQL='
SELECT*
FROM表(带有转换标志)PIVOT(SUM(实际需要字段)
for[标志]in('+@s+')
)A'
EXEC(@SQL)
⑧ 报表统计连续三天或以上的记录怎么写SQL语句
用你的where条件去控制啊,
思想如下:
select * from table where 星期一迟到了 and 星期二迟到了 and 星期三迟到了
⑨ 用SQL查询报表
#我看了你的描述,也没给出表与表之间的关系和字段,以我的理解后,写出以下sql语句,经过测试,可以执行成功
#FeeTable:生活费表包含(学生信息表)也就是外键
#Student:学生信息表包含(班级信息表)也就是外键
#Greade:班级信息表
select
s.nameas学生名称,
g.nameas班级名称,
s.genderas学生性别,
s.teacheras招生老师,
f.liveFeeDateas生活费日期,
f.liveFeeas生活费,
f.sleepFeeDateas住宿费日期,
f.sleepFeeas住宿费,
fareFeeDateas校车费日期,
fareFeeas校车费,
(f.liveFee+f.sleepFee+fareFee)as费用合计
.id=f.studentinnerjoinGreadegons.greade=g.id
groupbys.name,g.name,s.gender,s.teacher,f.liveFeeDate,f.liveFee,f.sleepFeeDate,f.sleepFee,fareFeeDate,fareFee
以上SQL语句要结合你的表结构来适当调整表名、字段、和关联。
希望能帮到你!