收藏的函数

whb147在CSDN各个板块的得分综合表
 
板块 专家分 信誉分 等级
 
Web 开发 10038 100 
扩充话题 334 100 
.NET技术 285 100 
C/C++ 30 100 
MS-SQL Server 25 100 
其他数据库开发 5 100 
 
----------------------------------------------------------------------
前一段时间,看到好多人提问说怎么传数组到存储过程中,其实我也没有办法,
现在只想到一个暂行的方法,以飨观众,呵呵呵
传数组当然不行咯,我们就传字符串,用","隔开,当然,你也可以用别的隔开
tname(0)="whb147",tname(1)="ray",tname(2)="ack",
你构造成字符串
如  @tname='whb147,ray,ack,'
然后到存储过程中去切开,sql中没有split,只好用别的方法咯
看到CHARINDEX可以查找
Substring 可以取字符 感觉有办法了,呵呵呵
经测试,可行,测试代码如下:拷贝到查询分析器运行即可
----------------------------------------------------------
declare @tname varchar(100)
declare @start int
declare @end int
declare @sub varchar(100)

set @tname='whb147,ray,ack,'
set @start=0
set @end =1
while (@end > 0) begin
  set @start=@end
  select @end=CHARINDEX(',', @tname, @end+1)

  if (@end >= @start) begin
    set @sub = Substring(@tname, @start, @end-@start)
    set @sub = Replace(@sub, ',', '')
    print @sub
  end
end

---------------------------
显示结果
whb147
ray
ack
---------------------------
这只是一个暂行的办法
=======================================
--------------------------------------------------------------------------------
--  作者:wxz
--  发布时间:2002-10-25 12:24:42

--  收集ASP的自定义函数!
本主题专为收集ASP的自定义函数,你在学习中如果有好的自定义函数请拿出来,大家一起学习!最好说明用法。(本贴谢绝灌水)


Rem 汉字判断
function isChinese(para)
       on error resume next
       dim str
       dim i
       if isNUll(para) then
          isChinese=false
          exit function
       end if
       str=cstr(para)
       if trim(str)="" then
          isChinese=false
          exit function
       end if
       for i=1 to len(str)
     c=asc(mid(str,i,1))
             if c>=0 then
    isChinese=false
              exit function
           end if
       next
       isChinese=true
       if err.number<>0 then err.clear
   end function
%>

如:
if not isChinese(request("name")) then
 errmsg=errmsg+"
"+"<li>用户名应为汉字"
 founderr=true
else
 username=trim(request("name"))
end if


这样更简单
 for(i=0;i<realname.length;i++){
  char=realname.charCodeAt(i); 
  if(!(char>255)){ 
   alert("真实姓名应为汉字!");
   userform.realname.focus();
   return false;
   }
  }

-------------------------------------------------------
生成一个不重复的随即数字 

Sub CalCaPiao()
Dim strCaiPiaoNoArr() As String
Dim strSQL As String
Dim strCaiPiaoNo As String
strCaiPiaoNo = "01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33"
Dim StrTempArr(7) As String
Dim strZhongJiangArr(7) As String
strCaiPiaoNoArr = Split(strCaiPiaoNo, ",")
Dim intRand As Integer
Dim i As Integer
Dim j As Integer
i = 0
Dim find As Boolean
Do While True
find = False
Randomize
intRand = Int((33 * Rnd) + 1)
For j = 0 To i - 1
If StrTempArr(j) = CStr(intRand) Then
find = True
End If
Next
If Not find Then
StrTempArr(j) = CStr(intRand)
strZhongJiangArr(i) = CStr(intRand)
'Text1(i) = strZhongJiangArr(i)
i = i + 1
If i = 7 Then
Exit Do
End If
End If
Loop
End Sub
-------------------------------------------------------------
 
--  作者:wxz
--  发布时间:2002-10-25 21:13:52

-- 
人民币小写转换为大写

<%
'****人民币大小写转换格式****
dim str(9)
str(0)="零"
str(1)="壹"
str(2)="贰"
str(3)="叁"
str(4)="肆"
str(5)="伍"
str(6)="陆"
str(7)="柒"
str(8)="捌"
str(9)="玖"
aa=Request.form("source")
hh=formatnumber(aa,2,-1)
aa=replace(hh,".","")
aa=replace(aa,",","")
for i=1 to len(aa)
s=mid(aa,i,1)
mynum=str(s)
select case(len(aa)+1-i)
case 1: k= mynum&"分"
case 2: k= mynum&"角"
case 3: k= mynum&"元"
case 4: k= mynum&"拾"
case 5: k= mynum&"佰"
case 6: k= mynum&"仟"
case 7: k= mynum&"万"
case 8: k= mynum&"拾"
case 9: k= mynum&"佰"
case 10: k= mynum&"仟"
end select
m=m&k
next
%>


<html>
<head>
<title>数字转换</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<!--
Elseif(s=".") then
n=m
i=i+2
for j=i to len(aa)
s=mid(aa,i,1)
mynum=str(s)
select case(len(aa)+1-i)
case 1: p= mynum&"分"
case 2: p= mynum&"角"
end select
m=m&p
next
-->

<body bgcolor="#FFFFFF">
<form method="post" name="forma">
<input type="text" name="source" value="<%=hh%>">
=
<input type="text" name="result" value="<%=m%>" size="40">

<input type="submit" name="Submit" value="提交 " >
</form>
</body>
</html>
------------------------------------------------------------------------
 
--  作者:wxz
--  发布时间:2002-11-1 19:33:36

-- 
用正则表达式写的HTML分离函数
存成.asp文件,执行,你用ASPHTTP抓内容的时候用这个很爽,当然自己要改进一下了
<%
Option Explicit

Function stripHTML(strHTML)
'Strips the HTML tags from strHTML

Dim objRegExp, strOutput
Set objRegExp = New Regexp

objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = "<.+?>"

'Replace all HTML tag matches with the empty string
strOutput = objRegExp.Replace(strHTML, "")

'Replace all < and > with < and >
strOutput = Replace(strOutput, "<", "<")
strOutput = Replace(strOutput, ">", ">")

stripHTML = strOutput 'Return the value of strOutput

Set objRegExp = Nothing
End Function


%>

<form method="post" id=form1 name=form1>
<b>Enter an HTML String:</b><br/>
<textarea name="txtHTML" cols="50" rows="8" wrap="virtual"><%=Request("txtHTML")%></textarea>
<p>
<input type="submit" value="Strip HTML Tags!" id=submit1 name=submit1>
</form>

<% if Len(Request("txtHTML")) > 0 then %>
<p><hr><p>
<b><u>View of string <i>with no</i> HTML stripping:</u></b><br/>
<xmp>
<%=Request("txtHTML")%>
</xmp><p>
<b><u>View of string <i>with</i> HTML stripping:</u></b><br/>
<pre>
<%=StripHTML(Request("txtHTML"))%>
</pre>
<% End If %>

--------------------------------------------------------------------------------
 
--  作者:wxz
--  发布时间:2002-11-10 15:15:44

-- 
如何检测备注字段的字节数
视服务器操作系统语种不同,而采取不同的方法: 
1.E文下,len(rs("field")),就行了.len("中文abc")=7 
2.Z文下,复杂一点,len("中文abc")=5 
lenB("中文abc")=10,所以需要自己写程序判断其长度. 
function  strLen(str) 
dim  i,l,t,c 
l=len(str) 
t=l 
for  i=1  to  l 
c=asc(mid(str,i,1)) 
if  c<0  then  c=c+65536 
if  c>255  then 
t=t+1 
end  if 
next 
strLen=t 
end  function
--------------------------------------------------------------------------------
--  作者:wxz
--  发布时间:2002-12-10 13:03:57

--  qq在线显示程序核心代码
<%
Function GetURL(url)
Set Retrieval = CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "GET", url, False, "", ""
.Send
GetURL = .ResponseText
End With
Set Retrieval = Nothing
End Function

Function qqonline(qqid)
Dim T,Start,Length,PicURL
'找到该用户界面的源代码
T=GetURL("http://search.tencent.com/cgi-bin/friend/oicq_find?oicq_no=";&qqid)
'查找字符串ShowResult(的位置
Start=Instr(1,T,"ShowResult("+chr(34))
'查找字符串http://的位置
Start=Instr(Start,T,"http://";)
'查找包含字符串的长度
Length=Instr(Start,T,chr(34)+","+chr(34))-Start
PicURL=Mid(T,Start,Length)
pic_right=right(picurl,5)
pic_left=left(pic_right,1)
if pic_left="2" then
qqonline="在线"
else
qqonline="离线"
end if
End Function
%><%=qqonline(24080411)%>
---------------------------------------------------

1. οncοntextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键
<table border οncοntextmenu=return(false)><td>no</table> 可用于Table

2. <body onselectstart="return false"> 取消选取、防止复制

3. οnpaste="return false" 不准粘贴

4. οncοpy="return false;" oncut="return false;" 防止复制

5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标

6. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夹中显示出你的图标

7. <input style="ime-mode:disabled"> 关闭输入法

8. 永远都会带着框架
<script language="javascript"><!--
if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页
// --></script>

9. 防止被人frame
<SCRIPT LANGUAGE=javascript><!--
if (top.location != self.location)top.location=self.location;
// --></SCRIPT>

10. <noscript><iframe src=*.html></iframe></noscript> 网页将不能被另存为

11. <input type=button value=查看网页源代码
οnclick="window.location = 'view-source:'+ 'http://www.csdn.net/'">

12. 怎样通过asp的手段来检查来访者是否用了代理
<% if Request.ServerVariables("HTTP_X_FORWARDED_FOR")<>"" then
response.write "<font color=#FF0000>您通过了代理服务器,"& _
"真实的IP为"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")
end if
%>

13. 取得控件的绝对位置

//javascript
<script language="javascript">
function getIE(e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert("top="+t+"/nleft="+l);
}
</script>

//VBScript
<script language="VBScript"><!--
function getIE()
dim t,l,a,b
set a=document.all.img1
t=document.all.img1.offsetTop
l=document.all.img1.offsetLeft
while a.tagName<>"BODY"
set a = a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"
end function
--></script>

14. 光标是停在文本框文字的最后
<script language="javascript">
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart('character',e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value="123" οnfοcus="cc()">

15. 判断上一页的来源
asp:
request.servervariables("HTTP_REFERER")

javascript:
document.referrer

16. 最小化、最大化、关闭窗口
<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" value="Close"></OBJECT>

<input type=button value=最小化 οnclick=hh1.Click()>
<input type=button value=最大化 οnclick=hh2.Click()>
<input type=button value=关闭 οnclick=hh3.Click()>
本例适用于IE

17.
<%
'定义数据库连接的一些常量
Const adOpenForwardOnly = 0 '游标只向前浏览记录,不支持分页、Recordset、BookMark
Const adOpenKeyset = 1 '键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark
Const adOpenDynamic = 2 '动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览(ACCESS不支持)。
Const adOpenStatic = 3 '静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动

Const adLockReadOnly = 1 '锁定类型,默认的,只读,不能作任何修改
Const adLockPessimistic = 2 '当编辑时立即锁定记录,最安全的方式
Const adLockOptimistic = 3 '只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等
Const adLockBatchOptimistic = 4 '当编辑时记录不会被锁定,而更改、插入和删除是在批处理方式下完成的

Const adCmdText = &H0001
Const adCmdTable = &H0002
%>

=======================================================================
生成execl文件

<!-- #include file=../inc/connect.asp -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>下载excel文件</title>
</head>

<body>
<%
set rs=server.CreateObject("adodb.recordset")
dbopen
sql=request("sql")
sql=replace(sql,"|百分号|",ucase("%"))
title=request("title")
'response.write sql & "<br/>"
rs.open sql,conn,3,2


set xlapp=server.createobject("excel.application")
xlapp.Visible = False
set mybook=xlapp.Workbooks.Add
set mysheet=mybook.worksheets(1)
myarray=split(title,"|")
'增加表头
for i=0 to ubound(myarray)-1
rangex=ucaSE(chr(65+i))
mysheet.range(rangex & 1 ).value=cstr(myarray(i))
next
set myarray=nothing

if rs.recordcount>0 then
j=1
do while not  rs.eof
j=j+1'行
for i=0 to rs.fields.count-1
if i<26 then
rangex=ucaSE(chr(65+i))
'response.write rangex & j  & "<br/>"
if not isnull(rs.fields(i).value) then   mysheet.range(rangex & j ).value=cstr(rs.fields(i).value)
end if
next
rs.movenext
loop
end if

'response.write rs.fields.count & "<br/>"
'response.write rs.recordcount & "<br/>"
randomize
myfilename=Session("UserRealName") & date() & "-" & cint(rnd *10000) & ".xls"
mypath=server.mappath("excel.asp")
myarray=split(mypath,"/")
mypath=""
for i=0 to ubound(myarray)-1
mypath=mypath &  myarray(i) & "/"
next
'response.write mypath & myfilename
mybook.saveas(mypath & myfilename)

mybook.close
xlapp.quit

set mysheet=nothing
set mybook=nothing
set xlapp=nothing
%>
<img src="../i/D_Wealth_Out.gif" width="16" height="16"><a name="download" href="<%="download.asp?filename="  & myfilename%>">下载
<%=myfilename%></a>
</body>
</html>


显示表的属性
-----------------------------------------
SELECT
表名=case when a.colorder=1 then d.name else '' end,
表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,
字段序号=a.colorder,
字段名=a.name,
标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
SELECT name FROM sysindexes WHERE indid in(
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
))) then '√' else '' end,
类型=b.name,
占用字节数=a.length,
长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允许空=case when a.isnullable=1 then '√'else '' end,
默认值=isnull(e.text,''),
字段说明=isnull(g.[value],''),
索引名称=isnull(h.索引名称,''),
索引顺序=isnull(h.排序,'')
FROM syscolumns a
left join systypes b on a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id  and d.xtype='U' and d.status>=0
left join syscomments e on a.cdefault=e.id
left join sysproperties g on a.id=g.id and a.colid=g.smallid 
left join sysproperties f on d.id=f.id and f.smallid=0
left join(--这部分是索引信息,如果要显示索引与表及字段的对应关系,可以只要此部分
select 索引名称=a.name,c.id,d.colid
,排序=case indexkey_property(c.id,b.indid,b.keyno,'isdescending')
when 1 then '降序' when 0 then '升序' end
from sysindexes a
join sysindexkeys b on a.id=b.id and a.indid=b.indid
join (--这里的作用是有多个索引时,取索引号最小的那个
select id,colid,indid=min(indid) from sysindexkeys
group by id,colid) b1 on b.id=b1.id and b.colid=b1.colid and b.indid=b1.indid
join sysobjects c on b.id=c.id and c.xtype='U' and c.status>=0
join syscolumns d on b.id=d.id and b.colid=d.colid
where a.indid not in(0,255)
) h on a.id=h.id and a.colid=h.colid
--where d.name='要查询的表'    --如果只查询指定表,加上此条件
order by a.id,a.colorder
--------------------------------------------------------------------
存储过程分页技术
if exists(select * from sysobjects where id = object_id('GetRecordFromPage'))
drop proc GetRecordFromPage
go
-- 获取指定页的数据
CREATE PROCEDURE GetRecordFromPage
    @tblName      varchar(255),       -- 表名
    @fldName      varchar(255),       -- 字段名
    @PageSize     int = 10,           -- 页尺寸
    @PageIndex    int = 1,            -- 页码
    @IsCount      bit = 0,            -- 返回记录总数, 非 0 值则返回
    @OrderType    bit = 0,            -- 设置排序类型, 非 0 值则降序
    @strWhere     varchar(1000) = ''  -- 查询条件 (注意: 不要加 where)
AS

declare @strSQL   varchar(6000)       -- 主语句
declare @strTmp   varchar(100)        -- 临时变量
declare @strOrder varchar(400)        -- 排序类型

if @OrderType != 0
begin
    set @strTmp = '<(select min'
    set @strOrder = ' order by [" + @fldName +"] desc'
end
else
begin
    set @strTmp = '>(select max'
    set @strOrder = ' order by [' + @fldName +'] asc'
end

set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
    + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
    + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
    + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
    + @strOrder

if @strWhere != ''
    set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
        + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
        + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
        + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
        + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

if @PageIndex = 1
begin
    set @strTmp = ' '
    if @strWhere != ''
        set @strTmp = ' where ' + @strWhere

    set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
        + @tblName + ']' + @strTmp + ' ' + @strOrder
end

if @IsCount != 0
    set @strSQL = 'select count(*) as Total from [' + @tblName + ']'

exec (@strSQL)

GO
----------------------------------------------

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值