1, 拼接sql时, exec sp_executesql @sql报错“Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.”
这是因为@sql类型应该为nvarchar()
==========================================
2, 存储过程中用到事务,return别忘了提交事务
=========================================
3,EXECUTE sp_executesql @SQLString,N'@PageIndex int,@PageSize int',@PageIndex,@PageSize
sp_executesql批处理是支持参数的,如上()
==========================================
4, update join 从一个结果集更新一张表 (On上是条件)
update table1
set t.aaa=b.aa
from talbe1 t left join
table2 a on a.ddd=t.ddd
----------Demon begin--------------------
set nocount on;
declare @T1 table
(
ID int identity(0,1),
FirstName nvarchar(30),
CWID varchar(10)
)
declare @T2 table
(
ID int identity(0,1),
FirstName nvarchar(30),
CWID varchar(10)
)
insert into @T1 (FirstName,CWID) values('Lee','CHXHI')
insert into @T1 (FirstName,CWID) values('ROCK','EWERB')
insert into @T1 (FirstName,CWID) values('LINKIN','CHXXX')
insert into @T1 (FirstName,CWID) values('JIANG','CHQAA')
insert into @T1 (FirstName,CWID) values('TAYLEN','CHPEE')
insert into @T2 (CWID) values('CHXHI')
insert into @T2 (CWID) values('EWERB')
insert into @T2 (CWID) values('CHXXX')
insert into @T2 (CWID) values('CHQAA')
insert into @T2 (CWID) values('CHPEE')
insert into @T2 (FirstName,CWID) values('1111','aaa')
-- 当关联条件的字段为同一个名字时,这种写法不能重命名(变量表的话,也不能用表名)
--update @T2 set FirstName=b.firstname
--from @T1 b where b.ID=ID
select * From @T2
-- 下面这种写法解决了上面的问题
--没有匹配的不更新
update t2
set FirstName=t1.FirstName
from @T2 t2
inner join
@T1 t1 on t1.ID=t2.ID
--没有匹配的设为null
--update t2
--set FirstName=t1.FirstName
--from @T2 t2
--left join
--@T1 t1 on t1.ID=t2.ID
--
select *from @T2
set nocount off;
-------------Demon end--------------------
4.5 delete join
delete from t1 from t1 inner join t2
on t1.id = t2.tid
=======================================
5,SSRS做报表中,最后某些单元格中加url,链接到新的
①在报表设计视图中,右键单击要添加链接的文本框、图像或图表,然后单击“属性”。
②在“属性”对话框中,单击“操作”。
③选择“转到 URL”。 其他部分将显示在此选项的对话框中。
④在“选择 URL”中,键入或选择某一 URL 或者计算结果为某一 URL 的表达式,或者单击下拉箭头并单击包含 URL 的字段的名称。
⑤单击“确定”。
⑥(可选)文本的格式不会自动设置为链接。 对于文本,很有必要更改文本的颜色和效果以指示该文本是一个链接。 例如,在功能区的“主页”选项卡中的“字体”部分中,将颜色更改为蓝色,并将效果更改为下划线。
⑦若要测试该链接,请单击“运行”以预览报表,然后单击对其设置此链接的报表项。
======================================
6,SSRS加URL,url中传参
文本框属性--操作--选择‘转到URL’,在选择URL中输入自己的
=Parameters!URL.Value & "AdjustID=21" & "&CAT=" & Fields!CAT.Value & "&BD="&Fields!BD.Value & "&PU=" &Fields!PU.Value
如果想在新页面打开
="javascript:void(window.open('" &
Parameters!URL.Value & "AdjustID=21" & "&CAT=" & Fields!CAT.Value & "&BD="&Fields!BD.Value & "&PU=" &Fields!PU.Value
& "','_blank'))"
======================================
6.1 SSRS 中tooltip中换行
例子: “aaa” & vbcrlf & "bbb"
7, SSRS 安全除零
①自定义函数
Public Function SafeDivide(ByVal top, ByVal bottom) As Decimal
If IsNothing(top) Or IsNothing(bottom) Then
Return 0
End If
If bottom = 0 Or top = 0 Then
Return 0
End If
Return top / bottom
End Function
②调用=Code.SafeDivide(top,bottom)
7.1 ,SSRS文本框两位小数,为0显示'-'之类的
【】设置format属性 0.00;-0.00;'-'
7.2 tablix 组 (暂不是通用,只是个别体验)
--列组
① 添加列父组,选过分组依据后,勾选“组头”
② 删除自动生成的多余列、行
③ 在列组中【插入行】--【组内侧】
--行组
插入行组,不勾“组头”
7.3 隔行变色
backgroundColor属性 =Iif(RowNumber(Nothing) Mod 2, "#F2F2F2", "White")
===========================================
8, sql 语句优化
select distinct contractno,productLine
from(
select ContractNo,ProductLine from SAP_SalesOrder_M where ContractNo='AH100259T-0000'
) a
效率远远高于
select distinct ContractNo,ProductLine from SAP_SalesOrder_M where ContractNo='AH100259T-0000'
==============================================
9, Jquery UI
function Loading() { $.blockUI({ css: { border: 'none', padding: '15px', backgroundColor: '#000', '-webkit-border-radius': '10px', '-moz-border-radius': '10px', opacity: 0.5, color: '#fff'} }); }
10,
/*
-- 问题
-- 描述:salesPortal中根据合同号到一张表T里找PU,但是T中一个合同号有可能有多个PU,逻辑是:关联到的
-- 那个结果集中Amount最大留下,别的都不要,即取金额最大的那个PU
--
*/
declare @t table (
id int identity(1,1),
contractNo varchar(200),
pu varchar(100),
amount int
)
insert into @t (contractNo,pu,amount)
values('CV0001','AA',1000)
insert into @t (contractNo,pu,amount)
values('CV0001','BB',10)
insert into @t (contractNo,pu,amount)
values('CV0001','CC',1)
insert into @t (contractNo,pu,amount)
values('CV0002','AA',1)
insert into @t (contractNo,pu,amount)
values('CV0002','BB',1000)
insert into @t (contractNo,pu,amount)
values('CV0002','CC',1000)
select * from @t
select contractNo,amount from @t group by contractNo,amount
--
select distinct p.contractno,max(p.amount) over(partition by p.contractno) as amount
from @t as p
--- 分组后再根据 contractNo amount 关联原表
--问题是金额相同有两条
;with aa as(select contractno ,max(amount) as amount from @t t group by t.contractno)
select distinct tt.contractNo,tt.pu from
@t tt join aa on tt.contractNo=aa.contractNo and aa.amount=tt.amount
11,
IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
12
--Jquery: 在不同机器上ID不一定一样
报表隐藏 除了Excel 其他导出方式 脚本
$("#ctl00_MainContent_ReportViewer1_ctl05_ctl04_ctl00_Menu div:not(:eq(4))").hide()
---反射将其他项的m_isVisible设为false
reportint service报表导出只显示EXCEL格式
前端: onprerender="ReportViewer_PreRender"
cs端: protected void ReportViewer_PreRender(object sender, EventArgs e)
{
foreach (RenderingExtension extension in ReportViewer1.ServerReport.ListRenderingExtensions())
{
if (extension.Name != "EXCEL")
{
FieldInfo fi = extension.GetType().GetField("m_isVisible", BindingFlags.Instance | BindingFlags.NonPublic);
fi.SetValue(extension, false);
}
}
}