posts - 22,  comments - 27,  trackbacks - 0

见下图,使用IE9后不知道为什么接收到的SQL语句会出现异常。

操作系统环境:

服务器WIN7 64位 DELL OPTIPLEX 380

开发语言 ASP + SQL

页面编码:UTF-8

代码:

url="..\StdLib\ShowModu.asp?"

url=url & "Query_String=" & URLEncode(TRIM(Query_String)) & "&sSQL=" & URLEncode(sSql)

alert(sSql)

url="..\StdLib\ShowTest.asp?sSQL=" & URLEncode(sSql)

alert(url)

returnValue = Window.ShowModalDialog(url, "Browser_Dialog","dialogTop=199px;dialogLeft=<%=dialogLeft%>;dialogWidth=<%=dialogWidth%>;dialogHeight=520px;scrollbars=no;center=yes;border=thin;help=no" )

function URLEncode(URL){URLEncode=escape(URL);}

测试环境1:

传送前的代码如下:

clip_image002

使用URLencode后的代码:

clip_image004

IE9接收到的代码,出现了异常

clip_image006

而IE8/8/6接收到的代码都正常,下面为IE8接收到的代码。

clip_image008

posted @ 2011-03-25 18:51 Shannon 阅读(111) 评论(0) 编辑

从VS2005开始的时候就已经接触过RDLC报表,一直都在用ASP.NET的本地打印模式,当初就发现RDLC在做自定义报表的时候自动分页和打印纸张有点问题,不是自动分页分不正

确,就是自定义纸张不对,我没测试过WINFORM版本的是否存在过这样的问题,在WEB版上确实存在了这样的问题。

到了VS2008的时候,貌似也没有修正过这样的问题,也可能是我一直都在错误着用,反正我自定义纸张从来没有设置好 ,不得已只能使用相对稳定的水晶报表。

 自从VS2010发布后,我发现这个版本的VS打和编译速度都比VS2008上一个等级 ,再也没有VS2008添加工具的时候蜗牛般的感觉 ,非常舒畅。

然而,就这样  噩梦开始了 ,我的水晶报表升级到VS2010的版本后不能发布 ,查查才发现现在还没有提供 ……  ,不得已尝试一下RDLC  发现VS2010版本的RDLC已经非常不

错,做普通报表的时候给人的感觉是得心应手啊 ,见到VS2010不能使用水晶报表发布之后我开始尝试使用RDLC做我的自定义纸张打印套单 ,现在问题来了 我一一列出如下,

希望有遇见类似问题的给点建议:

 1、自动分页不准,我使用了Letter纸张横向  ,页脚有4CM  页眉有10CM  那么详细内容的行高0.66cm ,按正常走纸详细内容一共只有 6~7CM左右  但是 居然给我预览出33

行,33*0.66 天哪 页眉和页脚都不算高度? (打印机所有能设置的地方都已经设置好了的,绝对没有任何打印机设置方向/纸张问题)

 2、 鉴于第一点问题,我使用了sql的function,使用row_number()分页设置了组数,然后在RDLC的时候使用组强行分组,每10行分一组。

代码
USE [PRTest]
GO
/****** Object:  UserDefinedFunction [dbo].[FN_PRPrint]    Script Date: 10/22/2010 13:52:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
--
 Author:        <Author,,Name>
--
 Create date: <Create Date,,>
--
 Description:    <Description,,>
--
 =============================================
ALTER FUNCTION [dbo].[FN_PRPrint]
(    
    
@prno nvarchar(50)
)
RETURNS @CRE table
(    
     
     RID 
int IDENTITY(1,1NOT NULL
     ,RW 
INT
     ,CompanyNameEN 
nvarchar(200)
     ,DeptCode 
nvarchar(10)
     ,HKAgency 
nvarchar(50)
     ,PRDate 
datetime
     ,NPPNO 
nvarchar(50)
     ,Category 
nvarchar(50)
     ,PRNO 
nvarchar(100)
     ,ABCCODE 
nvarchar(10)
     ,LineDesc 
nvarchar(500)
     ,LineUse 
nvarchar(200)
     ,VendorCode 
nvarchar(50)
     ,LineQty 
decimal(18,2)
     ,LinePrice 
decimal(18,4)
     ,Amount 
decimal(18,2)
     ,CurrencyCode 
nvarchar(10)
     ,ReqDate 
datetime
     ,ReqPay 
datetime
     ,Remark 
nvarchar(500)
)
AS
BEGIN

INSERT INTO @CRE(RW, CompanyNameEN, DeptCode, HKAgency, PRDate, NPPNO, CATEGORY, PRNO, ABCCode, LineDesc, LineUse, VendorCode, LineQty, LinePrice,Amount, CurrencyCode, ReqDate, ReqPay, Remark)
SELECT RW=(row_number()Over(partition by prno Order By PRLine)-1)/10, A.CompanyNameEN,A.DeptCode,A.HKAgency,A.PRDate,A.NPPNO,A.CATEGORY,A.PRNO,A.ABCCode,A.LineDesc,A.LineUse,ISNULL(B.VenDescCN,a.VendorCode) AS VendorCode,A.LineQty,A.LinePrice,Amount=CAST(Isnull(A.LineQty,0)*ISNULL(A.LinePrice,0AS decimal(18,2)),A.CurrencyCode,A.ReqDate,A.ReqPay,A.Remark 
FROM (
    
SELECT  H.CompanyCode,H.HKAgency,CompanyNameEN=C.CompanyNameCN,H.NPPNO,H.CATEGORY, H.DeptCode, H.PRDate,H.PRNO, H.CurrencyCode,
        H.ABCCode, H.Remark, D.PRLine, D.LineDesc, D.LineUse, 
        D.MoldNO, D.PartNO, d.VendorCode, D.LineQty, D.LinePrice,
        D.ReqDate,D.ReqPay
    
FROM   PRHeader H
    
LEFT JOIN PRDetail D ON H.PRNO = D.PRNO 
    
INNER JOIN Company C ON C.CompanyCode=H.CompanyCode
    ) A
LEFT JOIN VENDOR B ON A.CompanyCode=B.CompanyCode And A.VendorCode=B.VenCode
WHERE PRNO=@PRNO

declare @sy int
declare @rw int
SELECT @sy=(10-max(rid)%10from @CRE
SELECT @rw=max(rw) from @CRE

INSERT INTO @CRE(RW, CompanyNameEN, DeptCode, HKAgency, PRDate, NPPNO, CATEGORY, PRNO, ABCCode, LineDesc, LineUse, VendorCode, LineQty, LinePrice,Amount, CurrencyCode, ReqDate, ReqPay, Remark)    
SELECT top (@sy@rw,null,null,null,null,null,null,null,null,null,null,null,null,null,0,null,null,null,null From PRHeader
    
RETURN 
END

 

 

 3、设置完分组后又发现一个新的问题,如果行数小于10行的数据,它的总计会紧贴详细内容,而并非我所想要的固定打在某个位置,所以我在function中判断如果行数小于

10的自动补全。

 4、结果出来了,能正常预览了 ,也能正常打印至PDF打印机了  但是  ,另外的一个噩梦又开始了 ,我的自定义纸张在我本机上打印没任何问题,在其它电脑上不管怎么设置都打印不

出正确的效果

 

RDLC,真的很难说爱你啊  

posted @ 2010-10-22 14:15 Shannon 阅读(387) 评论(1) 编辑

创建临时表有好多种方式

Create Tabel #TB

Declare #TB Table 

 

…………

 

未知道你是否使用过

 

--创建临时表
Use ReportServerTempDB
GO

If OBJECT_ID('Tempdb.dbo.#DB')>0 Drop Table #DB
Select TOP 0 UserID=SessionID,OL =CAST(null as  BitINTO #DB from dbo.SessionData

 

这样子创建的临时表就不会存在排序和原来的数据库有差异的问题,不要要注意尽可能不要=于主键……(等于主键的时候该值的属性和=于的一样)  除非有特殊需要

 

posted @ 2010-07-19 09:08 Shannon 阅读(61) 评论(0) 编辑

如有一个表 

 --建临时表

Create Table #TB
(
    FG_NO 
NVARCHAR(20)
    ,Part_No 
NVARCHAR(20)
)

 

 

废话就不说了 

以前的写法N累才能拿到结果,不多说 

 

 --插入测试记录

INSERT INTO #TB
SELECT 'FG1','P1' Union All 
SELECT 'FG2','P1' Union All 
SELECT 'FG3','P1' Union All 
SELECT 'FG4','P2' Union All 
SELECT 'FG5','P2' Union All 
SELECT 'FG6','P2'

--Or
INSERT INTO #TB(FG_NO,Part_No) Values('FG1','P1'),('FG2','P1'),('FG3','P1'),('FG4','P2'),('FG5','P2'),('FG6','P2');

--记得以前使用ACCESS的时候是FG_NO +FG_NO就能合并到一行
SELECT Part_No,FG_NO
FROM (SELECT DISTINCT Part_No FROM #TB) A OUTER APPLY(
        
SELECT FG_NO= STUFF(REPLACE(REPLACE(
            (
                
SELECT FG_NO FROM #TB N
                
WHERE Part_No = A.Part_No
                
FOR XML AUTO
            ), 
'<N FG_NO="'','), '"/>'''), 11'')
)N


--结果
--
Part_No    FG_NO
--
P1       FG1,FG2,FG3
--
P2       FG4,FG5,FG6

 

 

posted @ 2010-07-18 10:06 Shannon 阅读(58) 评论(0) 编辑

先看代码

Create   Procedure   up_test1   as   
    
Select   '1111'   --这里没有问题   
go   
Create   Procedure   up_test2  AS   
    
create   table   #tt   (a   Varchar(4))
    
insert   into   #tt   Exec   up_test1    
go   
Create   Procedure   up_test3   as   
    
Create   Table   #ttt   (b   varchar(4))   
    
Insert   Into   #ttt   Exec   up_test2      
go   
     


exec   up_test3   --这个执行就不能通过。  

 

 

 

经过向BAIDU GOOGLE 等大仙求救都无任何音讯后自己摸索 

 简单更改了一下存储过程就能执行通过

 

--
--
 Create   Procedure   up_test1   as   
--
    Select   '1111'   --这里没有问题   
--
go 
  
Alter   Procedure   up_test2  AS   
    
create   table   #tt   (a   Varchar(4))
    
Declare  @strsql nvarchar(2000)
    
set  @strsql='insert   into   #tt'
    
Exec   up_test1   

go   
--Create   Procedure   up_test3   as   
--
    Create   Table   #ttt   (b   varchar(4))   
--
    Insert   Into   #ttt   Exec   up_test2      
--
go   
     

exec   up_test3   --这个执行就能通过。 

 

 

……

 

有时候稍微转个小弯就能搞定问题 

posted @ 2010-07-18 09:38 Shannon 阅读(502) 评论(1) 编辑

很久没有写BLOG了 ,发现自己离大道越来越远

最近身体状况不是很好,脖子有点酸痛,颈椎病的前期症状啊

为了防止恶化,现在上班的时候经常在扭脖子 不知道这样会不会好点?

posted @ 2009-08-07 12:10 Shannon 阅读(22) 评论(0) 编辑
摘要: 最近发现以前写的利用逗号分隔来导出EXCEL会存在某些问题,如某个字段内容存在逗号的时候会造成数据移位到cnblogs里面看了一些导出Excel的方法,总结分析了一下,一下的方法最有效好处: 1、不存在Datagridview分页问题。 2、速度还不错。 3、优于使用逗号分隔的方法,不存在数据移位。 4、封装比较简单。 public static void ExportExcel(System.W...阅读全文
posted @ 2009-06-29 17:31 Shannon 阅读(1432) 评论(1) 编辑
摘要: 复制的时候留意一下默认值和默认绑定这两个值,一般都要选择True,向导默认为False不然复制过去的资料没有默认值阅读全文
posted @ 2009-04-13 11:34 Shannon 阅读(91) 评论(0) 编辑
摘要: 如图,怎样才能获取UserID,UserName,我查了userlist是空的阅读全文
posted @ 2009-03-09 12:22 Shannon 阅读(128) 评论(3) 编辑
摘要: 最近搬迁SQL服务器,有一Job调用到SSIS包,发现Job历史记录都正常,但真正的数据并没有执行到经查发现SSIS包里面的Connection Manager居然还是指着旧服务器离谱的是MSDB里面看到SSIS包并没有修改属性一项,只有Run Package的时候能更改一下,运行完毕后连接字符又变回连接旧服务器搜索MSDN BAIDU GOOGLE并无类似解决方案 汗 自己动手,打算用暴力了把S...阅读全文
posted @ 2009-02-14 11:30 Shannon 阅读(683) 评论(2) 编辑
昵称:Shannon
园龄:4年9个月
粉丝:1
关注:1

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

搜索

 
 

常用链接

我的标签

随笔档案

最新评论

阅读排行榜

评论排行榜

推荐排行榜