{系统环境变量}
EnvUpdate ( )
;更新环境变量
EnvGet ( “变量名称” )
;取环境变量
ClipGet ( )
;取剪辑板文本
EnvSet ( “变量名称” [, "值"] )
;置环境变量
ClipPut ( “文本” )
;置剪辑板文本
{文件,目录,磁盘管理}
IniRead (”文件名”, “功能区”, “关键字”, “缺省值” )
;Ini文件读关键字的值
IniDelete ( “文件名”, “功能区”, “关键字” )
;Ini文件删除关键字
IniWrite ( “文件名”, “功能区”, “关键字”, “值” )
;Ini文件写关键字的值
FileInstall ( “源文件”, “目标文件” [,参数] )
;安装文件
FileFindFirstFile ( “文件名” )
;查找文件(第一次)
FileFindNextFile ( 文件号)
;查找文件(继续)
FileRecycle ( “源文件” )
;放入回收站
FileChangeDir ( “目录” )
;改变当前目录
FileCreateShortcut ( “文件名”, “快捷方式名” [, "工作目录", "args", "desc", "图标", "热键"] )
;建立快捷方式
DirCreate ( “目录” )
;目录创建
DirCopy ( “源目录”, “目标目录” [,参数] )
;目录复制
DirRemove ( “目录” [,参数] )
;目录删除
DirMove ( “源目录”, “目标目录” [,参数] )
;目录移动
DriveGetDrive ( “类别” )
;驱动器查找
FileGetLongName ( “完整路径和文件名” )
;取长文件名
DriveSpaceTotal ( “路径” )
;取磁盘空间
DriveSpaceFree ( “路径” )
;取磁盘剩余空间
FileGetShortName ( “完整路径和文件名” )
;取短文件名
DriveGetLabel ( “路径” )
;取驱动器卷标
DriveGetType ( “路径” )
;取驱动器类型
DriveGetFileSystem ( “路径” )
;取驱动器文件格式
DriveGetSerial ( “路径” )
;取驱动器序列号
DriveStatus ( “路径” )
;取驱动器状态
FileGetVersion ( “文件名” )
;取文件版本
FileGetSize ( “文件名” )
;取文件大小
FileGetTime ( “文件名” [,选项] )
;取文件日期
FileGetAttrib ( “文件名” )
;取文件属性
FileSaveDialog ( “标题”, “初始目录”, “文件类型” [,选项] )
;文件保存对话框
FileOpen ( “文件名”,打开方式 )
;文件打开
FileOpenDialog ( “标题”, “初始目录”, “文件类型” [,选项] )
;文件打开对话框
FileRead ( 文件号或”文件名”,字符个数 )
;文件读
FileReadLine ( 文件号或”文件名” [,行号] )
;文件读行
FileCopy ( “源文件”, “目标文件” [, 参数] )
;文件复制
FileClose ( 文件号 )
;文件关闭
FileSelectFolder ( “提示文本”, “根目录”,参数 )
;文件夹选择
FileDelete ( “路径” )
;文件删除
FileExists ( “路径” )
;文件是否存在
FileWrite ( 文件号或”文件名” , “内容” )
;文件写
FileWriteLine ( 文件号或”文件名” , “内容”)
;文件写行
FileMove ( “源文件”, “目标文件” [,参数] )
;文件移动
DriveSetLabel ( “路径”, “卷标名” )
;置驱动器卷标
FileSetTime ( “文件”, “日期”, 选项 [,参数] )
;置文件日期
FileSetAttrib ( “文件”, “+-RASHNOT” [,参数] )
;置文件属性
{键盘控制}
Send ( “按键” [,参数] )
;发送
HotKeySet ( “热键” [, "自定义功能函数"] )
;置热键
{鼠标控制}
MouseGetCursor ( )
;取鼠标指针类型
MouseGetPos ( )
;取鼠标坐标
MouseDown ( “按键” )
;鼠标按下
MouseClickDrag ( “按键”, 第一点横坐标, 第一点纵坐标, 第二点横坐标, 第二点纵坐标[,速度] )
;鼠标按住拖动
MouseClick ( “按键” [,横坐标,纵坐标[,次数 [,速度 ]]] )
;鼠标点击
MouseUp ( “按键” )
;鼠标放开
MouseMove ( 横坐标,纵坐标 [,速度] )
;鼠标移动
{数学函数}
Exp ( n )
;e的n次平方
BitNOT ( 数值 )
;非运算
BitOR ( 值1,值2 )
;或运算
Log ( 数字或数学表达式 )
;取对数
ACos (数字或数学表达式)
;取反余弦
ATan ( 数字或数学表达式 )
;取反正切
ASin ( 数字或数学表达式)
;取反正弦
Abs (数字或数学表达式)
;取绝对值
Mod ( 值1,值2 )
;取模数
Sqrt ( 数字或数学表达式 )
;取平方根
Random ( [[最小值 ,]最大值] )
;取随机数
Cos (数字或数学表达式)
;取余弦
Tan ( 数字或数学表达式 )
;取正切
Sin ( 数字或数学表达式 )
;取正弦
Round (数字或数学表达式[,小数点后保留位数] )
;四舍五入
BitXOR ( 值1,值2 )
;位或运算
BitShift ( 值,移动数 )
;位移运算
BitAND ( 值1,值2 )
;与运算
{信息框,对话框}
ProgressOn ( “标题”, “主文本” [, "子文本" [, 横坐标 [, 纵坐标[,选项]]]] )
;打开进度条窗口
ProgressOff ( )
;关闭进度条窗口
SplashOff ( )
;关闭置顶窗口
ProgressSet ( 进度值 [, "子文本" [, "主文本"]] )
;进度设置
InputBox ( “标题”, “提示” [, "缺省文本" [, "密码符号" [,宽度,高度 [,左边,右边[,等待时间]]]]] )
;输入框
MsgBox ( 按钮参数, “标题”, “信息文本” [,等待时间] )
;信息框
SplashImageOn ( “标题”, “图像文件名” [,宽度 [,高度 [,横坐标[,纵坐标 [,选项]]]]] )
;置顶图像窗口
SplashTextOn ( “标题”,”文本”[,宽度[,高度[,横坐标[,纵坐标[,选项[,"字体名称"[,"字体大小"[,"字体重量"]]]]]]]] )
;置顶文本窗口
ToolTip ( “提示文本” [,横坐标,纵坐标] )
;置提示文本
TrayTip ( “标题”, “提示文本”, 等待时间 [,图标选项] )
;置托盘气泡提示(2000/xp)
{系统函数}
SoundPlay ( “文件名” [,等待方式] )
;播放声音
Call ( “自定义功能函数” )
;调用自定义功能函数
CDTray ( “盘符”, “开关命令” )
;光驱开关
AdlibEnable ( “自定义功能函数” [,间隔时间] )
;激活意外窗口处理
TimerStop ( 时间标志 )
;计时结束
TimerStart ( )
;计时开始
Exit (0)
;结束
AdlibDisable ( )
;禁止意外窗口处理
BlockInput ( 参数 )
;禁止用户输入
Break ( 参数 )
;禁止用户退出
MemGetStats ( )
;取内存状态
AutoItWinGetTitle ( )
;取系统窗口标题
PixelGetRGB(横坐标,纵坐标)
;取像素点RGB三色
PixelGetColor ( 横坐标 , 纵坐标 )
;取像素点颜色
PixelSearch ( 左边, 顶边, 右边, 底边, 颜色值 [, shade-variation] [,间隔像素数]] )
;搜索颜色
URLDownloadToFile ( “连接地址及文件名”, “存储到的文件名” )
;下载文件
SetError ( 值 )
;置变量@error
AutoItWinSetTitle ( “新标题” )
;置系统窗口标题
SoundSetWaveVolume ( 音量大小 )
;置音量
{进程管理}
ProcessWait ( “进程” [,等待时间] )
;等待进程存在
ProcessWaitClose ( “进程” [,等待时间] )
;等待进程关闭
ProcessClose ( “进程” )
;关闭进程
Shutdown ( 关机方式 )
;关机
ProcessExists ( “进程” )
;进程是否存在
Sleep ( 时间 )
;睡眠/暂停运行
RunAsSet ( ["用户名", "domain", "密码"] )
;以别人身份登录运行
RunWait(@ComSpec & ” /c ” & ‘DOS命令行’, “”,参数)
;运行DOS命令
RunWait ( “文件名” [, "工作目录" [, 参数]] )
;运行并等待结束
Run ( “文件名” [, "工作目录" [,参数]] )
;运行程序
{注册表管理}
RegRead ( “键路径”, “键名” )
;读键值
RegDelete ( “键路径” [, "键名"] )
;删除键
RegWrite ( “键路径”, “键名”, “类型”, 值 )
;写键值
{字符串管理}
StringFormat ( “格式”, $var1 [, ... $var32] )
;格式化字符串
StringLen ( “字符串” )
;取长度
StringRight ( “字符串”,字符数 )
;取右边
StringMid ( “字符串”,开始位置,字符数 )
;取中间
StringLeft ( “字符串”,字符数 )
;取左边
StringStripCR ( “字符串” )
;删除回车符
StringStripWS ( “字符串”,参数 )
;删除空格
StringTrimRight ( “字符串”,字符数 )
;删除右边
StringTrimLeft ( “字符串”,字符数 )
;删除左边
StringIsASCII ( “字符串” )
;是否为ASCII
StringIsDigit ( “字符串” )
;是否为阿拉伯数字
StringIsUpper ( “字符串” )
;是否为大写
StringIsFloat ( “字符串” )
;是否为浮点小数
StringIsSpace ( “字符串” )
;是否为空
StringIsXDigit ( “字符串” )
;是否为十六进制字符
StringIsAlNum ( “字符串” )
;是否为数字
StringIsLower ( “string” )
;是否为小写
StringIsInt ( “字符串” )
;是否为整数
StringIsAlpha ( “字符串” )
;是否为字母
StringAddCR ( “字符串” )
;添加换行符
StringReplace ( “字符串”, “查找的字符串”, “替换后的字符串” [,数量 [,区分大小写]] )
;文本替换
StringUpper ( “字符串” )
;转换为大写
StringLower ( “字符串” )
;转换为小写
StringInStr ( “字符串”, “字符” [,大小写] )
;字符包含
StringSplit ( “字符串”, “参考符” )
;字符串分离
{变量与转换函数}
IsDeclared ( 变量 )
;变量是否被声明
Asc ( “字符” )
;取Asc码
Eval ( 变量或表达式 )
;取变量值
UBound ( 数组名 [,维数] )
;取数组大小
Int ( 小数或表达式 )
;取整
Chr ( ASC码 )
;取字符
IsAdmin ( )
;是否为管理员
IsNumber ( 变量 )
;是否为数字
IsArray ( 变量 )
;是否为数组
IsFloat ( 变量或数值 )
;是否为小数
IsInt ( 变量或数值 )
;是否为整数
IsString ( 变量 )
;是否为字符
Dec ( “十六进制” )
;转换为十进制
Hex ( 十进制数, 长度 )
;转换为十六进制
Number ( 表达式 )
;转换为数字
String ( 表达式 )
;转换为字符
{窗口管理}
WinExists ( “标题” [, "文字"] )
;窗口是否存在
WinActive ( “标题” [, "文字"] )
;窗口是否激活
WinSetOnTop ( “标题”, “文字”, 参数 )
;窗口置顶
WinWait ( “标题” [, "文字" [,等待时间]] )
;等待窗口出现
WinWaitClose ( “标题” [, "文字" [,等待时间]] )
;等待窗口关闭
WinWaitActive ( “标题” [, "文字" [,等待时间]] )
;等待窗口激活
WinWaitNotActive ( “标题” [, "文字" [,等待时间]] )
;等待窗口取消激活状态
WinMenuSelectItem ( “标题”,”文字”,”菜单项1″ [,"菜单项2" [,"菜单项3"……]] )
;调用菜单
WinClose ( “标题” [, "文字"] )
;关闭窗口
WinMinimizeAllUndo ( )
;恢复“全部最小化”的窗口
WinActivate ( “标题” [, "文字"] )
;激活窗口
WinKill ( “标题” [, "文字"] )
;强制关闭窗口
WinGetTitle ( “标题” [, "文字"] )
;取窗口标题
WinGetHandle ( “标题” [, "文字"] )
;取窗口句柄
WinGetClientSize ( “标题” [, "文字"] )
;取窗口客户区大小
WinGetClassList ( “标题” [, "文字"] )
;取窗口类列表
WinGetText ( “标题” [, "文字"] )
;取窗口文字
WinGetCaretPos ( )
;取窗口中控件坐标
WinGetState ( “标题” [, "文字"] )
;取窗口状态
WinGetPos ( “标题” [, "文字"] )
;取窗口坐标
WinMinimizeAll ( )
;全部最小化
WinMove ( “标题”, “文字”,横坐标,纵坐标[,宽度 [,高度]] )
;移动窗口
WinSetTitle ( “标题”, “文字”, “新标题” )
;置窗口标题
WinSetState ( “标题”, “文字” ,参数 )
;置窗口状态
{控制管理}
ControlCommand ( “窗口标题”, “窗口文字”, “控件类名称”, “命令”, “选项” )
;发送控制命令
ControlSend ( “窗口标题”, “窗口文字”, “控件类名称”, “文本” [,参数] )
;发送文本到控件
ControlDisable ( “窗口标题”, “窗口文字”, “控件类名称” )
;禁止控件
ControlGetFocus ( “窗口标题” [, "窗口文字"] )
;取焦点控件的类名称
ControlGetPos ( “窗口标题”, “窗口文字”, “控件类名称” )
;取控件位置
ControlGetText ( “窗口标题”, “窗口文字”, “控件类名称” )
;取控件文字
StatusbarGetText ( “窗口标题” [, "窗口文字" [, 状态栏部分]] )
;取状态栏文本
ControlSetText ( “窗口标题”, “窗口文字”, “控件类名称”,”新文本” )
;设置控件文本
ControlClick ( “窗口标题”, “窗口文字”, “控件类名称” [,鼠标按键] [,点击次数]] )
;鼠标点击控件
ControlShow (”窗口标题”, “窗口文字”, “控件类名称”)
;显示控件
ControlMove ( “窗口标题”, “窗口文字”, “控件类名称”,横坐标,纵坐标[,宽度 [,高度]] )
;移动控件
ControlHide (”窗口标题”, “窗口文字”, “控件类名称”)
;隐藏控件
ControlEnable ( “窗口标题”, “窗口文字”, “控件类名称” )
;允许控进
ControlFocus ( “窗口标题”, “窗口文字”, “控件类名称” )
;置焦点
{系统设置}
AutoItSetOption ( “MustDeclareVars”,参数 )
;变量是否预先声明
AutoItSetOption ( “WinTitleMatchMode”,参数 )
;标题匹配方式
AutoItSetOption ( “WinWaitDelay”,参数 )
;窗口等待延迟
AutoItSetOption ( “SendAttachMode”,参数 )
;发送跟随模式
AutoItSetOption ( “SendKeyDelay”,参数 )
;发送延迟
AutoItSetOption ( “CaretCoordMode”,参数 )
;符号坐标匹配方式
AutoItSetOption ( “SendCapslockMode”,参数 )
;恢复大小写状态
AutoItSetOption ( “WinDetectHiddenText”,参数 )
;检测隐藏文字
AutoItSetOption ( “WinSearchChildren”,参数 )
;检测子窗口
AutoItSetOption ( “SendKeyDownDelay”,参数 )
;键盘按下延迟
AutoItSetOption ( “MouseClickDownDelay”,参数 )
;鼠标按下延迟
AutoItSetOption ( “MouseClickDelay”,参数 )
;鼠标单击延迟
AutoItSetOption ( “MouseClickDragDelay”,参数 )
;鼠标拖动延迟
AutoItSetOption ( “MouseCoordMode”,参数 )
;鼠标坐标匹配方式
AutoItSetOption ( “ExpandEnvStrings”,参数 )
;特殊符号扩展
AutoItSetOption ( “TrayIconDebug”,参数 )
;托盘代码提示
AutoItSetOption ( “WinTextMatchMode”,参数 )
;文字匹配方式
AutoItSetOption ( “PixelCoordMode”,参数 )
;像素点坐标匹配方式
AutoItSetOption ( “TrayIconHide”,参数 )
;隐藏托盘
AutoItSetOption ( “RunErrorsFatal”,参数 )
;遇错终止
“^\d+$” //非负整数(正整数 + 0)
“^[0-9]*[1-9][0-9]*$” //正整数
“^((-\d+)|(0+))$” //非正整数(负整数 + 0)
“^-[0-9]*[1-9][0-9]*$” //负整数
“^-?\d+$” //整数
“^\d+(\.\d+)?$” //非负浮点数(正浮点数 + 0)
“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮点数
“^((-\d+(\.\d+)?)|(0+(\.0+)?))$” //非正浮点数(负浮点数 + 0)
“^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$” //负浮点数
“^(-?\d+)(\.\d+)?$” //浮点数
“^[A-Za-z]+$” //由26个英文字母组成的字符串
“^[A-Z]+$” //由26个英文字母的大写组成的字符串
“^[a-z]+$” //由26个英文字母的小写组成的字符串
“^[A-Za-z0-9]+$” //由数字和26个英文字母组成的字符串
“^\w+$” //由数字、26个英文字母或者下划线组成的字符串
“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$” //email地址
“^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$” //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年
“^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$” //Emil
“(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?” //电话号码
“^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$” //IP地址
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$
SQL操作全集
下列语句部分是Mssql语句,不可以在access中使用。
SQL分类:
DDL—数据定义语言(Create,Alter,Drop,DECLARE)
DML—数据操纵语言(Select,Delete,Update,Insert)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
Create DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
— 创建 备份数据的 device
USE master
EXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:\mssql7backup\MyNwind_1.dat’
— 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ —like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count * as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、说明:几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
A、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
其次,大家来看一些不错的sql语句
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1 <>1
法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
例子:..from b in ‘”&Server.MapPath(”.”)&”\data.mdb” &”‘ where..
4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、说明:在线视图查询(表名1:a )
select * from (Select a,b,c FROM a) T where t.a > 1;
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2
9、说明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where …..
12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff(’minute’,f开始时间,getdate())>5
13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:前10条记录
select top 10 * form table1 where 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、说明:随机取出10条数据
select top 10 * from tablename order by newid()
18、说明:随机选择记录
select newid()
19、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,…)
20、说明:列出数据库里所有的表名
select name from sysobjects where type=’U’
21、说明:列出表里的所有的
select name from syscolumns where id=object_id(’TableName’)
22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
select type,sum(case vender when ‘A’ then pcs else 0 end),sum(case vender when ‘C’ then pcs else 0 end),sum(case vender when ‘B’ then pcs else 0 end) FROM tablename group by type
显示结果:
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)
对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环:
Randomize
RNumber = Int(Rnd*499) +1
While Not objRec.EOF
If objRec(”ID”) = RNumber THEN
… 这里是执行脚本 …
end if
objRec.MoveNext
Wend
这很容易理解。首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID 的值、检查其是否匹配RNumber。满足条件的话就执行由THEN 关键字开始的那一块代码。假如你的RNumber 等于495,那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了?
采用SQL,你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示:
Randomize
RNumber = Int(Rnd*499) + 1
SQL = “Select * FROM Customers Where ID = ” & RNumber
set objRec = ObjConn.Execute(SQL)
Response.WriteRNumber & ” = ” & objRec(”ID”) & ” ” & objRec(”c_email”)
不必写出RNumber 和ID,你只需要检查匹配情况即可。只要你对以上代码的工作满意,你自可按需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到你需要的记录这样就大大降低了处理时间。
再谈随机数
现在你下定决心要榨干Random 函数的最后一滴油,那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random 示例扩展一下就可以用SQL应对上面两种情况了。
为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:
SQL = “Select * FROM Customers Where ID = ” & RNumber & ” or ID = ” & RNumber2 & ” or ID = ” & RNumber3
假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 Select 语句只显示一种可能(这里的ID 是自动生成的号码):
SQL = “Select * FROM Customers Where ID BETWEEN ” & RNumber & ” AND ” & RNumber & “+ 9″
注意:以上代码的执行目的不是检查数据库内是否有9条并发记录。
随机读取若干条记录,测试过
Access语法:Select top 10 * From 表名 orDER BY Rnd(id)
Sql server:select top n * from 表名 order by newid()
mysqlelect * From 表名 order By rand() Limit n
Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)
语法elect table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where …
使用SQL语句 用…代替过长的字符串显示
语法:
SQL数据库:select case when len(field)>10 then left(field,10)+’…’ else field end as news_name,news_id from tablename
Access数据库:Select iif(len(field)>2,left(field,2)+’…’,field) FROM tablename;
Conn.Execute说明
Execute方法
该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:
1.执行SQL查询语句时,将返回查询得到的记录集。用法为:
Set 对象变量名=连接对象.Execute(”SQL 查询语言”)
Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。
2.执行SQL的操作性语言时,没有记录集的返回。此时用法为:
连接对象.Execute “SQL 操作性语句” [, RecordAffected][, Option]
·RecordAffected 为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。
·Option 可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。
·BeginTrans、RollbackTrans、CommitTrans方法
这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。
事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。
BeginTrans和CommitTrans用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对象的Error集合来实现,若Error集合的成员个数不为0,则说明有错误发生,事务处理失败。Error集合中的每一个Error对象,代表一个错误信息。
文章转载自【迷失路上│Lost63’s Blog】http://www.lost63.com/article.asp?id=531
这里整理下asp页面下出现乱码的问题,好多ajax读取的数据出现乱码的解决方法,asp.net,php等语言的乱码,解决原理都是一样的。
这个是网页编码的问题。中文一般采用的是gb2312这样的话显示中文基本上不会出现乱码。但是有时候我们用的是一种国际上通用的utf-8格式。如果utf-8格式人不是很了解的话是容易出现乱码的。
有许多朋友问过我,为什么在ASP里指定了codepage为65001还经常显示乱码.才子在这里将这个问题详细解释一下,以免很多朋友再走弯路,甚至排斥UTF-8.
asp网页utf8乱码如果你还不知道UTF-8是什么东东,那才子建议你先去搜索一下UTF-8的相关资料吧.
UTF-8编码之所以被越来越多的人接受甚至喜欢,肯定是有道理的,在WEB2.0盛行的今天,在大谈多浏览器兼容的同时,不得不想到字符编码不同所造成的乱码现象同样需要得到很好的处理…..
在N年以前,IE6以下的所有版本,只要没有安装相应的字库,访问相关的页面都是会乱码的,例如,我是IE5 (Windows2000默认) 的版本,在没有安装IE繁体字库的情况下,访问任何繁体页面的网站都是会乱码的,当然前提是该页面采用了BIG5的Charset,而UTF-8作为一种国际编码就能很好的处理该问题,只要将页面存为UTF-8编码格式,再在页面上将codepage及charset全部定义为utf-8就可以在任何客户端浏览器中显示出完全正确的内容,完全不会乱码……
好了,才子这里以ASP页面为例,以一个实例来看具体操作吧:
在这才子推荐用Editplus来写代码,才子也专门写过一篇Editplus的使用教程,有兴趣的朋友可以点击这里 去看看.
打开新建一个ASP页面,相信玩ASP的朋友都会留意到,许多下载的源码里,页面最上方一般都有一句:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
前面的language应该不用多说了,vbscript就是ASP默认的脚本语言,其实完全可以不用写,写了好像还会影响页面执行效率,在这里我们先不讨论这个问题. 后面的codepage就是关键了,目的就是告诉浏览器,此页面是何种编码,936代表是简体中文,而950代表繁体中文,65001就是我们今天说的UTF-8编码了.我们将936改成65001,整句如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
再加上输出几个中文字看看能不能正确显示吧.
<%
Response.Write "第一次测试UTF-8页面"
%>
OK,直接点击”保存”,执行这个页面看看,如果不出意外,大家可能看到显示出的是 “一尾UTF-8页” 这几个字,中文有乱码的现象,什么原因呢?
OK,请大家再点击最上面的 “文件” 菜单,选择”另存为”,最下面一行有个编码,默认应该是ANSI的,请大家点下拉框,选择UTF-8,再点保存,再执行试试看,如果不出意外,乱得更厉害了,呵呵,晕了吧.别急,想想原因,因为我们做的页面是HTML返回的,以前我们写HTML时,看到body前面,也就是head里都有一句meta,应该是这样的:
也就是指定页面以gb2312编码返回结果,一定要写在有返回结果输出的前面.大家都知道gb2312是简体中文吧,我们今天说的是UTF-8编码,我们就将gb2312改成UTF-8吧,全部代码如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Response.Write "第一次测试UTF-8页面"
%>
再执行看看,嗯,这次正常显示了吧…….
asp网页utf8乱码结论:采用UTF-8编码,除了要将文件另存为UTF-8格式之外,还需要同时指定codepage及charset.
保证asp叶面一定不会出现乱码的代码应该是这样的:
(假定是UTF-8的叶子)
<%@ CODEPAGE=65001 %>
<% Response.CodePage=65001%>
<% Response.Charset="UTF-8" %>
可以建立公共文件code.asp,所有页面都包含这个编码指定.
ASPUpLoad 文件上传
我们来创建一个简单的能上传3个文件的HTML form,和控制上传的脚本。
这里是第一个HTML文件
Test1.htm:
<HTML>
<BODY BGCOLOR=”#FFFFFF”>
<FORM. METHOD=”POST” ENCTYPE=”multipart/form-data” ACTION=”UploadScript1.asp”>
<INPUT TYPE=FILE SIZE=60 NAME=”FILE1″><BR>
<INPUT TYPE=FILE SIZE=60 NAME=”FILE2″><BR>
<INPUT TYPE=FILE SIZE=60 NAME=”FILE3″><BR>
<INPUT TYPE=SUBMIT VALUE=”Upload!”>
</FORM>
</BODY>
</HTML>
每个 <INPUT TYPE=FILE> 项在浏览器中显示成为一个带有”Browse…”按钮的文本输入框。如果你没看见Browse按钮,很有可能说明你的浏览器不支持文件上传。
这里是相应的上传脚本 UploadScript1.asp:
<HTML>
<BODY>
<%
Set Upload = Server.CreateObject(”Persits.Upload.1″)
Count = Upload.Save(”c:\upload”)
%>
<% = Count %> files uploaded.
</BODY>
</HTML>
ASP脚本的第一行仅仅创建了一个AspUpload对象的实例。第二行调用组件的Save方法,它实际上的作用是:它解析从浏览器发送的东西,计算出有多少个文件正在上传,并且把他们存在服务器上指定的目录。目录名可能以反斜线结束,也可能不是。所有文件将以他们原来的名字存放在目录中。我们很快将看到如何更改任意或者所有文件的名字。
Save方法返回成功上传的文件数量。万一发生错误,这个方法将抛弃之。
注意你能够使用我们的form中任意或者全部三个输入框。AspUpload有足够的智慧判断出哪些输入框使用了,哪些没有。
使用FILES和FORMS集合访问单个form项
我们看看第二组示例:
Test2.htm
<HTML>
<BODY BGCOLOR=”#FFFFFF”>
<FORM. METHOD=”POST” ENCTYPE=”multipart/form-data” ACTION=”UploadScript2.asp”>
File 1:<INPUT TYPE=FILE NAME=”FILE1″>
Description 1:<INPUT TYPE=TEXT NAME=”DESCR1″><BR>
File 2:<INPUT TYPE=FILE NAME=”FILE2″>
Description 2:<INPUT TYPE=TEXT NAME=”DESCR2″><BR>
<INPUT TYPE=SUBMIT VALUE=”Upload!”>
</FORM>
</BODY>
</HTML>
UploadScript2.asp <HTML>
<BODY>
<%
Set Upload = Server.CreateObject(”Persits.Upload.1″)
Upload.Save “c:\upload”
%>
Files:<BR>
<%
For Each File in Upload.Files
Response.Write File.Name & “=” & File.Path & ” (” & File.Size & “)<BR>”
Next
%>
<P>
Other items:<BR>
<%
For Each Item in Upload.Form
Response.Write Item.Name & “=” & Item.Value & “<BR>”
Next
%>
</BODY>
</HTML>
注意我们的HTML form现在有两种输入框,TYPE=FILE 和 TYPE=TEXT。因为我们form的ENCTYPE属性,我们不再能通过标准的ASP Response.Form. 集合来访问form变量。此处Upload.Form. 来解决了问题。这个集合实际上和Response.Form一样,也就是,我们能通过整形或字串型索引访问它的元素。例如:
Set Item1 = Upload.Form(”DESCR1″)
或者
Set Item1 = Upload.Form(1).
我们也能够使用上面示例代码显示的For-Each语句遍历集合中的项。Form集合包含FormItem类型的对象,它只有两个字串属性,Name 和 Value (缺省属性).
记住Upload.Form集合仅仅包含非文件项,也就是不同于<INPUT TYPE=FILE>,这点很重要。AspUpload提供另外一个集合,叫做Files,来包含UploadedFile类型的对象,这种对象代表已经上传的来自<INPUT TYPE=FILE>项的文件。很象Form集合,Files集合的项能够通过使用字串或者整形索引,或者一个For-Each语句访问,象上面的示例显示的一样。
运行示例2以后,我们将看到象这样的一些东西:
Files:
FILE1=c:\upload\File1.xls (108544)
FILE2=c:\upload\File2.zip (211687)
Other items:
DESCR1=bla bla
DESCR2=test test
注意我们已经通过UploadedFile对象相应的Path和Size属性获得了上传过的文件的目标路径和文件大小。
如果我们的form只包含一个文件输入框,<INPUT TYPE=FILE NAME=”ONLYFILE”>,那么没有必要使用For-Each语句。我们只需要这么说
Response.Write Upload.Files(”ONLYFILE”).Path
或者,更常用的
Response.Write Upload.Files(1).Path
要点:Files和Form集合在调用Save方法前都不会装入,因此在调用Upload.Save前就查询这些集合是不正确的。
” 错误!
Upload.Save( Upload.Form(”Path”) )
限制文件大小
也许你需要限制上传文件的大小,以防止服务器磁盘空间拥塞。你所需要做的一切就是在调用Save之前在你的Upload对象中调用SetMaxSize:
Set Upload = Server.CreateObject(”Persits.Upload.1″)
Upload.SetMaxSize 50000, False
Upload.Save “c:\upload”
在这个例子中,我们将上传文件的大小限制在50000字节内。第二个可选参数指定超出文件最大范围的部分是否应该被删除(如果设成false或者不设),或者作为错误例外拒绝接收(如果设成True) 。
强制特有文件名
缺省的,AspUpload将覆盖上传路径中已有的文件。如果你不想这样,可以配置组件,为上传文件产生特有的名字来防止覆盖已有文件。方法是,在调用Save前设置上传管理器的OverwriteFiles属性:
Upload.OverwriteFiles = False
缺省值是true。
为防止名字冲突,AspUpload将在原来文件名后面加上用圆括号括起来的整数。例如,如果文件MyFile.txt已经存在于上传目录了,并且另外一个同名文件正在上传,AspUpload会将新文件存为 MyFile(1).txt。如果我们上传更多的MyFile.txt,他们将被存MyFile(2).txt, MyFile(3).txt,等等。
移动、拷贝、删除文件
文件上传对象提供了一些方法供你移动、拷贝或者删除上传的文件。这些方法是
file.Move( NewName As String )
file.Copy( NewLocation As String, Optional Overwrite)
file.Delete
根据NewName参数,Move方法将文件移动到其他目录或者给他更名。假设文件abc.txt上传到了目录
c:\Upload。那么调用
file.Move “c:\WINNT\abc.txt” 将把文件移动到 c:\WINNT, 而调用
file.Move “c:\Upload\xyz.txt” 只会更改文件名。
要知道Move方法有个副作用是很重要的:当这个方法成功调用后,这个文件对象的Path属性将指向新目录/名字。
Copy属性把文件拷贝到新目录/名字。新目录必须是完全合法的路径。 Overwrite参数如果设成True或者不设,就会指示Copy方法覆盖新目录里的已有文件。 如果设成False,当文件在新目录中已经存在地时候,会导致方法失败。与Move方法不同,这个方法不会影响Path属性。
有时你可能选择使用Delete方法,例如你在把文件作为BLOBs存入数据库中,并且不再需要它放在你的上传路径里时。将文件存入数据库是我们下一个要讨论的主题。
把文件作为BLOBs存入数据库
许多数据库管理系统象Ms Access或者SQL Server将允许你将任意文件存为”binary large objects”(BLOBs)。一个MS Access表格能够在OLE Object型的数据字段中存放二进制文件。在SQL Server中,相应的数据类型是IMAGE。存放的文件以后能够重新取出供下载,或者用ADO显示。
AspUpload让你只使用短短一行代码就能把上传文件存入数据库!让我们看看第三组示例文件。文件 Test3.htm几乎和Test1.htm相同,因此我们不再把它显示在这里。文件UploadScript4.asp 很值得我们注意:
<HTML>
<BODY>
<%
Set Upload = Server.CreateObject(”Persits.Upload.1″)
Upload.Save “c:\upload”
On Error Resume Next
For Each File in Upload.Files
File.ToDatabase “DSN=data;UID=sa;PWD=xxx;”, “insert into Blobs(id, Path, BigBlob) values(12, ”” & File.Path & “”, ?)”
if Err <> 0 Then
Response.Write “Error saving the file: ” & Err.Description
Else
File.Delete
Response.Write “Success!”
End If
Next
%>
</BODY>
</HTML>
这一行
On Error Resume Next
指示asp当以外发生时,不要显示错误信息,只将意外代码和描述存放到内建的Err对象,并且继续脚本的执行。
下一行
File.ToDatabase “DSN=data;UID=sa;PWD=xxx;”, “insert into Blobs(id, Path, BigBlob) values(12, ”” & File.Path & “”, ?)”
是将文件存放入数据库所采用的一切。我们来检查一下这个方法的两个参数:
第一个参数是下列格式的ODBC连接字串:
“DSN=datasource;UID=userid;PWD=password;<other optional parameters>”
第二个参数是SQL INSERT或者UPDATE语句,带有一个问号(?),并且只能带一个。它的作用是为要存储的文件提供空间容器。在这个例子中,我们下部的数据库表Blobs包含三栏:一个Integer ID,一个VARCHAR Path,和一个IMAGE BigBlob。这个SQL INSERT语句将12放入ID栏,文件路径放入Path栏,真实文件放入BigBlob栏。
下一行检查语句在成功执行前是否正确。如果成功,Err对象取值0并且删除文件
(File.Delete行),因为文件已经存入数据库,不需要再放在上传路径中了。否则,Err包含一个数字错误代码,并且Err.Description包含对于意外的语言描述。
将GIF和JPEG图象存入数据库很常见。将图象从数据库中取出并显示在HTML页中,你不需要使用任何第三方组件。ADO就能完成任务。
在你的HTML页面中放入普通<IMG>标签,将SRC属性指向一个ASP脚本,例如
<IMG SRC=”GetImage.asp?id=4″>
GetImage.asp 脚本看起来可能会是这样
<%
Set db = Server.CreateObject(”ADODB.Connection”)
db.Open “data”
Set rs =db.Execute(”SELECT BigBlob FROM Blobs where id = ” & Request(”id”) )
Response.ContentType = “image/jpeg” ”(or “image/gif”)
Response.BinaryWrite rs(”BigBlob”)
%>
===========================================
使用AspUpload组件上传文件,使用范例代码如下:
AspUpload组件上传测试
<form method=”POST” enctype=”multipart/form-data” action=”?act=upload”>
<input type=”file” size=”40″ name=”file1″><br>
<!–<input type=”file” size=”40″ name=”file2″><br>
<input type=”file” size=”40″ name=”file3″><br>–>
<br>其他表单项<input type=”text” name=”uploadText” value=”"><br>
<br><input type=”submit” value=”上传文件”>
</form>
<%
if request(”act”) = “upload” then
AllowExt = “jpg,png,gif,zip,rar,sql,txt,bak”
On Error Resume Next
‘ 新建AspUpload对象
Set Upload = Server.CreateObject(”Persits.Upload”)
‘ 限制文件大小
Upload.SetMaxSize 4194304, True
‘ 上传路径–当前目录下的test目录
uploadDir = Server.MapPath(”test”)
‘ 尝试创建路径文件夹,true表示忽略目录已存在错误
Upload.CreateDirectory uploadDir, true
‘ 先上传文件至服务器内存
Count = Upload.Save()
‘ 检测上传错误
If Err.Number = 8 Then
Response.Write chinese2unicode(”错误: 文件过大!”)
Response.end
Else
If Err <> 0 Then
response.write chinese2unicode(”发生错误:”)
response.write chinese2unicode(Err.Description)
response.end
End If
End If
‘Response.Write chinese2unicode(”共 ” & Count & ” 个文件”) & “<br><br>”
‘ 指定一个上传的表单文件
Set File = Upload.Files(”file1″)
If Not File Is Nothing Then
‘ 获取原本文件名
Filename = File.Filename
‘ 获取文件扩展名
Fileext = File.Ext
‘ 检测文件格式是否合格
ChkStr = “,”&Lcase(AllowExt)&”,”
If Instr(ChkStr,”,”&right(Fileext,3)&”,”) <= 0 Then
Response.Write chinese2unicode(”错误: 文件类型不正确!”)
response.write “<br>”
response.write chinese2unicode(”只允许:”&AllowExt)
‘ 删除内存中的临时文件,以释放内存或硬盘空间(还可用Copy、Move两个指令)
File.Delete
‘ 检测是否存在文件
elseif Upload.FileExists(uploadDir & “\” & Filename) Then
File.SaveAs uploadDir & “\” & Filename
Response.Write chinese2unicode(”已覆盖存在相同文件名的文件: “) & File.Path
‘ 保存文件
else
File.SaveAs uploadDir & “\” & Filename
Response.Write chinese2unicode(”文件已保存到: “) & File.Path
end If
Else
Response.Write chinese2unicode(”错误: 您并没有选择文件!”)
End If
Response.Write “<br><br>”
” 批量上传文件,去掉注释即可用。
For Each File in Upload.Files
‘File.SaveAs uploadDir & “\” & File.FileName
‘Response.Write chinese2unicode(”文件已保存到: “) & File.Path & “<br>”
Next
‘Response.Write “<br><br>Files:<br>”
For Each File in Upload.Files
‘Response.Write File.Name & “= ” & File.Path & ” (” & File.Size &” bytes)<br>”
Next
” 列出其他表单内容(必须执行Upload.Save()后才有效)
For Each Item in Upload.Form
Response.Write Item.Name & ” = ” & Item.Value & “<br>”
Next
‘列出指定的表单内容
Response.Write “<br>”&chinese2unicode(”列出指定内容uploadText:”&Upload.Form
(”uploadText”).value)
end if
‘ gb2312转unicode,解决中文乱码问题
function chinese2unicode(Str)
dim i
dim Str_one
dim Str_unicode
for i=1 to len(Str)
Str_one=Mid(Str,i,1)
Str_unicode=Str_unicode&chr(38)
Str_unicode=Str_unicode&chr(35)
Str_unicode=Str_unicode&chr(120)
Str_unicode=Str_unicode& Hex(ascw(Str_one))
Str_unicode=Str_unicode&chr(59)
next
Response.Write Str_unicode
end function
%>
=================================================
我常用到的一些ASPUPLOAD组件的操作
1、Err.Number为8时表示:文件大小超过MaxSize。
2、读取表单内容时可直接使用obj.Form(”item”)来读取。
3、读取上传文件时 需要Set file1=obj.Files(”file1″),然后针对file1来读取各属性的值。
4、相对文件的各属性值如下:
FileName 文件名(无路径)
Ext 文件扩展名(有大小写)
Path 完整的文件绝对路径
Folder 上传到主机上的绝对路径(后面有/)
Size 文件大小(Byte)
ImageType 图片类型(BMP GIF JPG JPEG PNG可以自动辨别)
ImageWidth 图片高度
ImageHeight 图片的高度
5、AspUpload上传的判断代码:
Set oUpload = Server.CreateObject(”Persits.Upload”) ’创建一个Object
On Error Resume Next ’用于读出错误代码
oUpload.SetMaxSize 1048576, True ’设置一个文件最大值
UpCount = oUpload.Save(Server.MapPath(”./”)) ’上传文件并返回文件的数量
‘判断文件大小是否超过限制
If Err.Number = 8 Then
Response.Write “文件超过指定大小”
Set oUpload = Nothing
Response.End
End If
‘判断文件是否上传
If UpCount = 0 Then
Response.Write “没有选择要上传的文件”
Set oUpload = Nothing
Response.End
End If
‘指定文件的连接
Set file1=oUpload.Files(”file1″)
‘把上传的文件拷贝到temp文件夹下并改名为temp.jpg
file1.Copy Server.MapPath(”temp/temp.jpg”)
‘把上传的文件移动到temp2文件夹下并改名为temp2.jpg
file1.Move Server.MapPath(”temp2/temp2.jpg”)
‘删除文件
==================================================
AspUpload组件的属性中文说明
UploadManager 属性
=============================================
CodePage As Long (Read/Write)
可以把表单的文本项目名和文件名的字符从指定的CodePage转换为Unicode,比如表单是按UTF-8提交的,那么这个属性应该设置为65001。其他的如1251 (Cyrillic), 1255 (Hebrew), 1256 (Arabic)等等。
用法:
Upload.CodePage = 65001
——————————————-
DetectMacBinary As Boolean (Read/Write)
默认为True。 这个属性用来控制是否检测上传的文件是MacBinary格式的,如果是则从中提取“data fork”。AspUpload 3.0 Beta 1. 不支持。
用法:
Upload.DetectMacBinary = False
——————————————–
Directory (Path As String, Optional SortBy, Optional Ascending) As Object (Read-Only)
返回一个集合,这个集合包括指定目录的所有子目录和文件的引用。
在这个集合里,子目录总是优先于文件.Path 可以包括通配符 * 和 ?。
SortBy 可以是: SORTBY_NAME (1, default). SORTBY_TYPE (2), SORTBY_SIZE (3), SORTBY_CREATIONTIME (4), SORTBY_LASTWRITETIME (5), and SORTBY_LASTACCESSTIME (6).
Ascending 默认为True。
用法:
<!–METADATA TYPE=”TypeLib” UUID=”{B4E1B2DE-151B-11D2-926A-006008123235}”–>
Set Dir = Upload.Directory(”c:\path\*.*”, SORTBY_SIZE)
For Each Item in Dir
…
Next
——————————————-
Expires As Date (Read-Only)
如果已经注册,返回9/9/9999,否则返回失效期。
用法:
Response.Write Upload.Expires
——————————————-
Files As Object (Read-Only)
返回一个集合,这个集合包含有上传文件的引用。
使用这个集合之前,必须调用Save或 SaveVirtual方法。
要引用一个单个文件,可以使用从1开始的整数下标,或者相应的文件框的名称。
要列举集合里的项目,可以使用For/Each 语句。
用法:
Set File = Upload.Files(1)
Set File = Upload.Files(”FILE1″)
For Each File in Upload.Files
…
Next
——————————————-
Form As Object (Read-Only)
返回一个集合,这个集合包括所有不是文件框的表单项目的引用。
使用这个集合之前,必须调用Save或 SaveVirtual方法。
要引用一个单个表单项目,可以使用从1开始的整数下标,或者相应的项目的名称。
要列举集合里的项目,可以使用For/Each 语句。
用法:
Name = Upload.Form(1)
Name = Upload.Form(”Name”)
For Each Item in Upload.Form
Response.Write Item.Value
Next
——————————————-
IgnoreNoPost As Boolean (Read/Write)
当Upload.Save方法被脚本直接调用,而不是通过表单提交时,可以避免 “Wrong Content-Type”这个错误。当表单和相应的上传脚本在同一个文件时,这个属性很有用。
用法:
Upload.IgnoreNoPost = True
——————————————-
OverwriteFiles As Boolean (Read/Write)
默认为True。如果设置为False,那么当文件名已经存在时,AspUpload会在原文件名后附加“(12)”这种形式的字符。这个属性影响Save, SaveVirtual 和 File.SaveAs方法。
用法:
Upload.OverwriteFiles = False
——————————————-
PreserveFileTime As Boolean (Read/Write)
默认为Flase。如果设置为True,会试图保护上传文件的上次修改时间。
这个属性只是客户端使用XUpload或者JUpload 的时候有用。
当使用常规Form提交的时候,它没有任何作用。
用法:
Upload.PreserveFileTime = False
——————————————-
ProgressID As String (Read/Write)
上传进度条所用的,用来区分上传进程。
用法:
Upload.ProgressID = Request.QueryString(”PID”)
——————————————-
RegKey As String (Read/Write)
指定注册码,如果没有指定,AspUpload会从系统注册表读取。
用法:
Upload.RegKey = “12345-67890-12345″
——————————————-
TotalBytes As Long (Read-Only)
返回上传的总字节数。
只能在成功调用Save(SaveVirtual)方法后调用这个属性。
用法:
Response.Write Upload.TotalBytes
——————————————-
TotalSeconds As Long (Read-Only)
返回上传持续的总时间。
只能在成功调用Save(SaveVirtual)方法后调用这个属性。
用法:
Response.Write Upload.TotalSeconds
——————————————-
Version As String (Read-Only)
返回组件的版数,如:”3.0.0.0″.
用法:
Response.Write Upload.Version
——————————————-
XP环境变量及其返回值
1.环境变量的设置有几种方式?
设置环境变量有两种方式:第一种是在命令提示符运行窗口中设置;第二种是通过单击“我的电脑→属性→高级”标签的“环境变量”按钮设置。需要注意的是,第一种设置环境变量的方式只对当前运行窗口有效,关闭运行窗口后,设置就不起作用了,而第二种设置环境变量的方式则是永久有效。
2.如何在命令提示符窗口中设置环境变量?
在“开始→运行”框中输入“cmd”后按“确定”按钮,出现命令运行窗口。在命令提示符下输入“set”即可查看环境变量设置。要查看具体某个环境变量的设置,比如要查看path环境变量的设置,可以输入“set path”。要创建一个环境变量,比如要创建一个名为aa的,值为“c:”的环境变量,可以输入“set aa=c:”命令。而要删除一个环境变量,比如要删除aa环境变量,则可输入“set aa=”命令(注意=后面不能有空格)。如何更改一个环境变量的设置呢?更改环境变量有两种情况:一是追加方式,即在不改变环境变量现有设置的情况下,增加变量的值,比如要给环境变量aa增加一个值为“D:”的设置,可以输入“set aa=%path%;D:”。另一种是完全修改方式,对于这种方式,我们可以采用直接创建一个环境变量的方法来实现。
3.用户变量和系统变量的关系是什么?
点击“我的电脑→属性→高级”标签的“环境变量”按钮,出现“环境变量”对话框,如果当前是以Administrator登录系统的用户,对话框的上面为Administrator的用户变量,对话框的下面为系统变量(即相当于系统中所有用户的用户变量)。有的时候我们会看到在用户变量和系统变量中都存在某一个环境变量,比如path,那么path的值到底是用户变量中的值还是系统变量中的值,或者两者都不是呢?答案是两者都不是。path变量的值是用户变量中的值与系统变量中的值的叠加。
4.改变环境变量和环境变量中的值应该注意什么?
环境变量和环境变量的值不要含有空格,也不要用中文,切记!
5.局部 返回所有“用户配置文件”的位置。
%APPDATA% 局部 返回默认情况下应用程序存储数据的位置。
%CD% 局部 返回当前目录字符串。
%CMDCMDLINE% 局部 返回用来启动当前的 Cmd.exe 的准确命令行。
%CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。
%COMPUTERNAME% 系统 返回计算机的名称。
%COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。
%DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。
%ERRORLEVEL% 系统 返回最近使用过的命令的错误代码。通常用非零值表示错误。
%HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。
%HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。
%HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。
%LOGONSEVER% 局部 返回验证当前登录会话的域控制器的名称。
%NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。
%OS% 系统 返回操作系统的名称。Windows 2000 将操作系统显示为 Windows_NT。
%PATH% 系统 指定可执行文件的搜索路径。
%PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。
%PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值: x86,IA64。
%PROCESSOR_IDENTFIER% 系统 返回处理器说明。
%PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。
%PROCESSOR_LEVEL% 系统 返回处理器的版本号。
%PROMPT% 局部 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。
%RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。
%SYSTEMDRIVE% 系统 返回包含 Windows XP 根目录(即系统根目录)的驱动器。
%SYSTEMROOT% 系统 返回 Windows XP 根目录的位置。
%TEMP% and %TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其它应用程序则需要 TMP。
%TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关 time 命令的详细信息,请参阅 Time。
%USERDOMAIN% 局部 返回包含用户帐户的域的名称。
%USERNAME% 局部 返回当前登录的用户的名称。
%UserPrefix% 局部 返回当前用户的配置文件的位置。
%WINDIR% 系统 返回操作系统目录的位置。
6. xp默认系统环境变量
(1)用户变量:
TEMP %USERPROFILE%\Local Settings\Temp
TMP %USERPROFILE%\Local Settings\Temp
(2)系统变量:
ComSpec %SystemRoot%\system32\cmd.exe
FP_NO_HOST_CHECK NO
NUMBER_OF_PROCESSORS 1
OS Windows_NT
Path %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
PATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE x86
PROCESSOR_IDENTIFIER x86 Family 15 Model 4 Stepping 9, GenuineIntel
PROCESSOR_LEVEL 15
PROCESSOR_REVISION 0409
TEMP %SystemRoot%\TEMP
TMP %SystemRoot%\TEMP
windir %SystemRoot%
TeamViewer是一个能穿透内网的远程控制,是在任何防火墙和NAT代理的后台用于远程控制、桌面共享和文件传输的简单且快速的解决方案。
为了连接到另一台计算机,只需要在两台计算机上同时运行TeamViewer即可而不需要进行一个安装的过程。该软件第一次启动在两台计算机上自动生成伙伴ID。只需要输入你的伙伴的ID到TeamViewer,然后就会立即建立起连接。
这款软件是至今唯一的一款能穿透内网的远程控制软件,可以穿透各种防火墙,要求双方都安装这个软件,使用时要求双开打开软件并且接受连接即可,最大优势在于此软件任何一方都不需要拥有固定IP地址,双方都可以相互控制,只要连入Internet即可,不受防火墙影响!
官方網站
http://www.teamviewer.com/index.aspx
官方下載
http://www.teamviewer.com/download/TeamViewer_Setup.exe
中文绿色版下载
http://www.brsbox.com/filebox/down/fc/b1cd4cf601b560294fee08a1d04af232
我非常喜欢解谜游戏,对这类型的作品实在是难以抗拒。令人开心的是今年出现了几款非常优秀的作品,像是先前介绍过将时间谜题发挥得淋漓致尽的 Braid、PS Network 独占的造桥游戏 Elefunk (制作公司倒了 =.=) 与充满浓浓 Escher 味的无限回廊,还有这款名字就很有趣的 World of Goo.
昨天刚接触了 World of Goo,就被可爱的 Goo 吸引住了
▽ 游戏主菜单
World of Goo的故事是说一群叫做 Goo 的生物… 这游戏有故事吗? 我承认我没有很仔细看剧情,总之就是努力走到终点的游戏。
▽ 基本的结构就是扩展,然后一直堆上去
▽ 一直组合到终点的水管
游戏进行的方法很简单,就是用黏呼呼的 Goo 来组合成一些”结构”,让其他 Goo 能沿着这个结构走到终点,只要有足够数量的 Goo 走到终点就可以过关,被拿去做结构的 Goo 就只能当弃子了。
▽ 开始造桥过河
▽ 啊啊啊啊~ 桥垮了… 囧rz
当然不是每一关都像上图那麽简单的,结构必要考虑重量、坚固性、平衡性等问题,其实这部分有点像 Elefunk.每一关都还有一些奇怪的限制,像是要避开这讨厌的轮锯,Goo 被锯到翘掉了,不能补充
▽ 死亡的 Goo 无法补充,死太多就只能重来了
Goo分成许多种族,每个种族的能力有所不同。黑色的 Goo 是基本型,黏性有限,而且无法重复使用。绿色的 Goo 黏性较强、可以重复使用,但不如黑色坚固。红色的 Goo 可以飘浮在空中… 每个关卡都要善用这些 Goo 的能力,帮助更多的 Goo 逃出禁锢。
▽ 用绿色 Goo 组合超大浮力结构
差不多讲完了,World of Goo 的概念和玩法就是这麽简单,但关卡的 机车度 挑战性很高,全部关卡数相当多,蛮耐玩的。每一关逃出的 Goo 越多,分数就越高,同时会累积到盖塔模式。盖塔模式是一个小游戏,累积越多逃出的 Goo 就有越多 Goo 来盖塔,最後塔的高度会上传到网路上,跟其他人一较高下 (画面上飘来飘去的云就是别人盖的高度)
▽ 成绩结算画面
World of Goo有发行 Wii 与 PC 版本,售价 20 美元有找,官网上的宣传写了一句 100% Region Free (百分之百不分区),读起来有种好笑的感觉 (尤其是想到 Xbox360 分区分很凶).
—————–: 分割线 :—————–
趁这个机会顺便介绍一下 Independent Games Festival (IGF),独立游戏创作嘉年华。IGF 成立於 1998 年,2008 年是第十一届,IGF 创立的宗旨是鼓励游戏创意与独立游戏制作团队 (就是非 EA、Ubisoft 那种大公司的团队).
会从每年的参赛者中颁出八到十个奖项,但奖项”似乎”不是非常固定,除了 Grand Prize 最大奖外,其他有游戏设计、音效、画面等奖项,还有一些名字既奇怪又不固定的奖 (简单讲,我也不晓得那是什麽).每年的得奖者都是一等一的优秀作品,不论是创意或水准都令人大开眼界。事实上,Castle Crasher 和 Braid 都是 IGF 得奖作品哦就是 2008 年 IGF 最佳游戏设计 (Design Innovation) 与最佳技术奖 (Techical Excellence) 的得奖者,你知道 World of Goo 的制作经费多少钱吗?? 仅仅美金两千五百元不过这些小制作的游戏不表示真的有机会上市… 像 2008 年 Grand Prize 得主 Crayon Physics Deluxe,一直都没有完成上市,我可是非常看好这一款作品呢!
如果你对市场主流的车枪球 (飙车、杀人、打假球) 游戏感到厌倦的话,不妨试试 IGF 以创意胜出的得奖作品,说不定可以找回最初玩 game 的乐趣

