2005年04月30日

[转]中华人民共和国军衔、警衔、关衔图解

解放军陆军军衔——将官

陆军上将为我军现行军衔制中陆军最高军衔、军衔条例规定,中央军委副主席、军委委员、总参谋长、总政治部主任一律授予陆军上将军衔。陆军上将还是正大军区职军官的主要军衔。正大军区职包括副总参谋长、总政治部副主任、总后勤部部长、政委、大军区司令员、政委等。


注:黄的为肩章,绿的为软肩章

陆军中将是副大军区职军官的主要军衔。副大军区职包括总后勤部副部长、副政委,大军区副司令员、副政委、参谋长、政治部主任及其他副大军区职军官。此外,陆军中将还是正大军区职和正军职军官的辅助军衔。



(2):陆军少将为陆军正军职和副军职军官的主要军衔。其中正军职包括集团军军长、政委,省军区和军级警备区司令员、政委及其他正军职军官;副军职包括集团军副军长、副政委、参谋长、政治部主任,省军区副司令员、副政委、参谋长、政治部主任及其他副军职军官。此外,陆军少将还是副大军区职和正师职军官的辅助军衔。




(3):解放军陆军军衔——校官

陆军大校为陆军正师职军官的主要军衔。此外,它还是陆军副军职军官和副师职(正旅职)军官的辅助军衔。




(4):陆军上校为陆军副师职(正旅职)军官和正团职(副旅职)军官的主要军衔。




(5):陆军中校为陆军副团职军官的主要军衔。此外,它还是陆军正团职(副旅职)军官和正营职军官的辅助军衔。



 

(9):陆军少校为陆军正营职军官的主要军衔。此外,它还是陆军副团职军官和副营职军官的辅助军衔。



(10):解放军陆军军衔——尉官


陆军上尉为陆军副营职军正连职军官的主要军衔。此外,它还是陆军副连职军官的辅助军衔。



(11):陆军中尉为陆军副连职军官的主要军衔。此外,它还是陆军正连职军官和排职军官的辅助军衔。




(12):陆军少尉为陆军排职军官的主要军衔。陆军少尉是陆军军官军衔中最低的一级。《中国人民解放军军官军衔条例》规定,陆军中等专业学校和大学专科毕业的学员,分配到部队任职后,一般授予陆军少尉军衔。



(13):解放军陆军军衔——文职干部

陆军文职干部技术三级肩章




(16):陆军文职干部肩章,软肩章



(17):解放军陆军军衔——学员

陆军学员肩章,软肩章



(18):解放军陆军军衔:士兵



(19):解放军海军军衔——将官

海军上将为海军正大军区职军官的主要军衔,也是我军现行军衔制中海军最高军衔,一般只授予海军司令员、海军政治委员。其主要标志为:金黄色肩章两佩镶有代表海军的黑色边饰,肩章底版上缀有仿刺绣金色枝叶和三颗金色星徽。




(21):海军中将为海军副大军区职军官的主要军衔。此外,它还是海军正大军区职军官和正军职军官的辅助军衔,即资历较浅的海军正大军区职军官和资深的海军正军职军官,也可被授予海军中将军衔。



(22):海军少将为海军正军职、副军职军官的主要军衔。此外,海军少将还是海军副大军区职和正师职军官的辅助军衔,即资历较浅的海军副大军区职军官及资深的海军正师职军官,也可被授予海军少将军衔。



(23):解放军海军军衔——校官


海军大校为海军正师职军官的主要军衔。此外,它还是海军副军职军官和海军副师职(正旅职)军官的辅助军衔。



(24):海军上校为海军副师职(正旅职)军官和正团职(副旅职)军官的主要军衔。



(25):海军中校为海军副团职军官的主要军衔。此外,它还是海军正团职(副旅职)军官和海军正营职军官的辅助军衔。



26):海军少校为海军正营职军官的主要军衔。此外,它还是海军副团职军官和海军副营职军官的辅助军衔。



(27):解放军海军军衔——尉官


海军上尉为海军副营职军官和海军正连职军官的主要军衔。此外,它还是海军副连职军官的辅助军衔,即资深的海军副连职军官也可被授予海军上尉军衔。



(28):海军中尉为海军副连职军官的主要军衔。此外,它还是海军正连职军官和排职军官的辅助军衔,即资历较浅的正连职军官和资深的排职军官,也可被授予海军中尉军衔。





(31):海军少尉为海军排职军官的主要军衔,也是海军军官军衔中最低的一个等级。《中国人民解放军军官军衔条例》规定,海军中等专业学校及大学专科毕业的学员,分配到部队任职后,一般授予海军少尉军衔。



(33):解放军海军军衔——文职干部

海军文职干部技术三级肩章


(34):海军文职干部肩章,软肩章



(35):解放军海军军衔——学员



(36):解放军海军军衔:士兵




解放军空军军衔——将官

空军上将为空军正大军区职军官的主要军衔,也是我军现行军衔制中空军最高军衔。空军上将军衔一般只授予空军司令员、空军政治委员。



(39):空军中将为空军副大军区职军官的主要军衔。此外,它还是空军正大军区职和正军职军官的辅助军衔,即资历较浅的空军正大军区职军官和资深的空军正军职军官,也可被授予空军中将军衔。



(40):空军少将为空军正军职、副军职军官的主要军衔。此外,它还是空军副大军区职和正师职军官的辅助军衔,即资历较浅的空军副大军区职军官和资深的空军正师职军官,也可被授予空军少将军衔。



(41):解放军空军军衔——校官

空军大校为空军正师职军官的主要军衔。此外,它还是空军副军职和副师职军官的辅助军衔。即资历较浅的空军副军职军官和资深的空军副师职军官,也可授予空军大校军衔。




(42): 空军上校为空军副师职(正旅职)和正团职(副旅职)军官的主要军衔。



(43): 空军中校为空军副团职军官的主要军衔。此外,它还是空军正团职(副旅职)军官和空军正营职军官的辅助军衔。





(44): 空军少校为空军正营职军官的主要军衔。此外,它还是空军副团职军官和空军副营职军官的辅助军衔。




(46):解放军空军军衔——尉官

空军上尉为空军副营职军官和正连职军官的主要军衔。此外,它还是空军副连职军官的辅助军衔,即资深的空军副连职军官也可被授予空军上尉军衔。





(47): 空军中尉为空军副连职军官的主要军衔。此外,它还是空军正连职军官和排职军官的辅助军衔,即资历较浅的空军正连职军官和资深的空军排职军官,也可被授予空军中尉军衔。




(48): 空军少尉为空军排职军官的主要军衔,也是军官军衔中最低的一级。《中国人民解放军军官军衔条例》规定,空军中等专业学校和大学专科毕业的学员,分配到部队任职后,一般授予空军少尉军衔。



(49):解放军空军军衔——文职干部

空军文职干部技术三级肩章







(55):空军文职干部肩章



(56):解放军空军军衔——学员



(57):解放军空军军衔:士兵



(59):武警警衔——将官

武警上将为正大军区职警官的主要警衔。武警上将是武警最高警衔,一般授予武警部队司令员、政治委员。



(60):武警中将是副大军区职警官的主要警衔。武警中将还是武警正大军区职警官和正军职警官的辅助警衔。



(62):武警少将为正军职警官和副军职警官的主要警衔。武警少将还是武警副大军区职警官和正师职警官的辅助警衔。



(64):武警警衔——校官

武警大校为正师职警官的主要警衔。武警大校还是武警副军职警官和副师职警官的辅助警衔。



(67):武警上校为武警副师职警官和正团职警官的主要警衔。



(68):武警中校为武警副团职警官的主要警衔。此外,它还是武警正团职警官和正营职警官的辅助警衔。



(69):武警少校为武警正营职警官的主要警衔。此外,它还是武警副团职警官和副营职警官的辅助警衔。



(70):武警警衔——尉官

武警上尉肩章



(71):武警中尉肩章



(73):武警少尉肩章


(75):小知识:武警警官软肩章

  武警警官软肩章在着制式长、短袖衬衣或作训服时佩带,其军衔标识与硬肩章相同,只是底版采用软材料,星徽用金黄色、横杠用红色人造丝机织而成。武警警官软肩章具有佩带方便、轻便美观、标识清晰、利于隐蔽、无碍活动等特点。此外,由于软肩章上没有金属件,因此便于背扛携带物资,非常适合军官在训练和作战时佩带。

(77):武警警衔——文职干部

武警文职干部技术三级肩章


(78):武警文职干部肩章

武警部队中从事教学、科研、工程技术、医疗卫生、新闻、出版、文化艺术及体育事业的干部一般为文职。文职干部最高服役年龄可达60岁,职务由办事员(排级)到正局级(正师职),但在肩章上不作区分。文职干部肩章分硬、软两种,软肩章为着制式衬衣或作训服时所佩戴。



(80):武警警衔——学员


武警学员肩章为在警校学习的学员所佩带。肩章分硬、软两种,软肩章为着制式衬衣或作训服时所佩带。
凡武警院校毕业初到部队的学员均需有一年实习期,实习期间不授予警衔,仍佩带警校学员肩章



(81):武警警衔——兵




(83):武警警衔——武警士兵礼仪肩章

礼仪肩章是担负天安门国旗护卫、外宾车队护卫等重大礼仪任务的武警士兵佩带的一种特殊肩章。武警士兵礼仪肩章分为列兵、上等兵、下士、中士、上士二等五级。


(84):武警礼仪士兵


(85):武警礼仪士兵护卫国宾车队


(88):人民警察警衔——总警监、副总警监(行政)

总警监(上图):部级正职。总警监警衔标志缀钉一枚橄榄枝环绕一周的国徽。

副总警监(下图):部级副职。副总警监警衔标志缀钉一枚橄榄枝环绕半周的国徽


(89):人民警察警衔——警监(行政)


一级警监(上图): 警监警衔标志由一枚银色橄榄枝和银色四角星花组成。一级警监警衔标志缀钉三枚四角星花。

二级警监(中图):二级警监警衔标志缀钉二枚四角星花。

三级警监(下图): 三级警监警衔标志缀钉一枚四角星花。


(90):人民警察警衔——警督(行政)

警督警衔标志由二道银色横杠和银色四角星花组成。

一级警督(上图):缀钉三枚四角星花。

二级警督(中图):缀钉二枚四角星花。

三级警督(下图):缀钉一枚四角星花.


(91):人民警察警衔——警司(行政)

警司警衔标志由一道银色横杠和银色四角星花组成。

一级警司(上图):缀钉三枚四角星花。

二级警司(中图):缀钉二枚四角星花。

三级警司(下图):缀钉一枚四角星花。





(94):人民警察警衔——警员(行政)

一级警员(上图):缀钉二枚四角星花。

二级警员(下图):缀钉一枚四角星花。


(95):人民警察警衔——警监(技术)

一级警监(上图)
二级警监(中图)
三级警监(下图)

警监警衔标志由一枚银色橄榄枝和银色四角星花组成。担任专业技术职务的人民警察的肩章版面为蓝灰色。


(97):人民警察警衔——警督(技术)

一级警督(上图)
二级警督(中图)
三级警督(下图)


(98):人民警察警衔——警司(技术)

一级警司(上图)
二级警司(中图)
三级警司(下图)


(99):人民警察警衔——警员(技术)

一级警员(上图)
二级警员(下图)


(100):海关关衔——海关总监、副总监

海关总监、海关副总监关衔标志由橄榄叶环绕的海关关徽和五角星下衬五边型的星花组成。


(101):海关关衔——关务监督

关务监督关衔标志为一枚橄榄叶和一枚海关关徽,一级关务监督关衔标志为三枚星花;二级关务监督关衔标志为二枚星花;三级关务监督关衔标志为一枚星花。


(102):海关关衔——关务督察

关务督察关衔标志为三道横杠和一枚海关关徽, 一级关务督察关衔关衔标志为三枚星花;二级关务督察关衔标志为二枚星花;三级关务督察关衔标志为一枚星花。


(103):海关关衔——关务督办

关务督办关衔标志为二道横杠和一枚海关关徽,一级关务督办关衔标志为三枚星花;二级关务督办关衔标志为二枚星花;三级关务督办关衔标志为一枚星花。


(104):海关关衔——关务员

关务员关衔标志为一道横杠和一枚海关关徽, 一级关务员关衔标志为三枚星花;二级关务员关衔标志为二枚星花。

2005年04月26日

一、连接MySQL。

格式: mysql -h主机地址 -u用户名 -p用户密码

1、例1:连接到本机上的MYSQL。

  首先在打开 DOS 窗口,然后进入目录 mysql\bin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好 MySQL,超级用户 root 是没有密码的,故直接回车即可进入到 MySQL 中了,MySQL 的提示符是:mysql>

2、例2:连接到远程主机上的 MySQL。

  假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

mysql -h110.110.110.110 -uroot -pabcd123

(注:u与root可以不用加空格,其它也一样)

3、退出 MySQL 命令: exit (回车)

二、修改密码。

格式:mysqladmin -u用户名 -p旧密码 password 新密码

1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令

mysqladmin -uroot -password ab12

注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

2、例2:再将root的密码改为djg345。

mysqladmin -uroot -pab12 password djg345

三、增加新用户。

(注意:和上面不同,下面的因为是 MySQL 环境中的命令,所以后面都带一个分号作为命令结束符)

格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"

例1、增加一个用户 test1 密码为 abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以 root 用户连入 MySQL,然后键入以下命令:

grant select, insert, update, delete on *.* to test1@"%" Identified by "abc";

但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。

例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库 mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。

grant select, insert, update,delete on mydb.* to test2@localhost identified by "abc";

  如果你不想test2有密码,可以再打一个命令将密码消掉。

grant select, insert, update, delete on mydb.* to test2@localhost identified by "";

  在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。

一、操作技巧

1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。

2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。

二、显示命令

1、显示数据库列表。

show databases;

  刚开始时才两个数据库:mysql 和 test。mysql 库很重要它里面有 MySQL 的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。

2、显示库中的数据表:

use mysql; //打开库,学过 FOXBASE 的一定不会陌生吧

show tables;

3、显示数据表的结构:

describe 表名;

4、建库:

create database 库名;

5、建表:

use 库名;

create table 表名 (字段设定列表);

6、删库和删表:

drop database 库名;

drop table 表名;

7、将表中记录清空:

delete from 表名;

8、显示表中的记录:

select * from 表名;

三、一个建库和建表以及插入数据的实例

drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
    id int(3) auto_increment not null primary key,
    name char(10) not null,
    address varchar(50) default ‘深圳’,
    year date
); //建表结束

//以下为插入字段
insert into teacher values(”,’glchengang’,'深圳一中’,'1976-10-10′);
insert into teacher values(”,’jack’,'深圳一中’,'1975-12-23′);

  注:在建表中(1)将 ID 设为长度为 3 的数字字段 int(3) 并让它每个记录自动加一,auto_increment 并不能为空 not null 而且让他成为主字段 primary key(2)将 NAME 设为长度为 10 的字符字段(3)将 ADDRESS 设为长度 50 的字符字段,而且缺省值为深圳。varchar 和char 有什么区别呢,只有等以后的文章再说了。(4)将 YEAR 设为日期字段。

  如果你在 MySQL 提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为 school.sql,然后复制到 c:\ 下,并在 DOS 状态进入目录 \mysql\bin\ ,然后键入以下命令:

mysql -uroot -p密码 < c:\school.sql

  如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。

四、将文本数据转到数据库中

1、文本数据应符合的格式:字段数据之间用 tab 键隔开,null 值用 \n 来代替.

例:

3 rose 深圳二中 1976-10-10

4 mike 深圳一中 1975-12-23

2、数据传入命令

load data local infile "文件名" into table 表名;

  注意:你最好将文件复制到 \mysql\bin 目录下,并且要先用 use 命令打表所在的库。

五、备份数据库: (命令在DOS的 \mysql\bin 目录下执行)

mysqldump –opt school>school.bbb

  注释:将数据库 school 备份到 school.bbb 文件,school.bbb 是一个文本文件,文件名任取,打开看看你会有新发现。

一、资料定义 ddl(data definition language)
资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。

1、建表格:
create table table_name(
column1 datatype [not null] [not null primary key],
column2 datatype [not null],
…);

说明: 
datatype –是资料的格式,详见表。
nut null –可不可以允许资料有空的(尚未有资料填入)。
primary key –是本表的主键。

2、更改表格 
alter table table_name
add column column_name datatype

说明:增加一个栏位(没有删除某个栏位的语法。
alter table table_name
add primary key (column_name)
说明:更改表得的定义把某个栏位设为主键。
alter table table_name
drop primary key (column_name)

说明:把主键的定义删除。

3、建立索引 
create index index_name on table_name (column_name)
说明:对某个表格的栏位建立索引以增加查询时的速度。

4、删除 
drop table_name
drop index_name


二、的资料形态 datatypes
smallint
16 位元的整数。
interger
32 位元的整数。
decimal(p,s)
p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数
点後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。
float
32位元的实数。
double
64位元的实数。
char(n)
n 长度的字串,n不能超过 254。
varchar(n)
长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n)
和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为
了支援两个字元长度的字体,例如中文字。
vargraphic(n)
可变长度且其最大长度为 n 的双字元字串,n不能超过 2000。
date
包含了 年份、月份、日期。
time
包含了 小时、分钟、秒。
timestamp
包含了 年、月、日、时、分、秒、千分之一秒。

三、资料操作 dml (data manipulation language)
资料定义好之後接下来的就是资料的操作。资料的操作不外乎增加资料(insert)、查询资料(query)、更改资料(update) 、删除资料(delete)四种模式,以下分 别介绍他们的语法:

1、增加资料:
insert into table_name (column1,column2,…)
values ( value1,value2, …)

说明:
1.若没有指定column 系统则会按表格内的栏位顺序填入资料。
2.栏位的资料形态和所填入的资料必须吻合。
3.table_name 也可以是景观 view_name。

insert into table_name (column1,column2,…)
select columnx,columny,… from another_table

说明:也可以经过一个子查询(subquery)把别的表格的资料填入。

2、查询资料:
基本查询
select column1,columns2,…
from table_name

说明:把table_name 的特定栏位资料全部列出来
select *
from table_name
where column1 = xxx
[and column2 > yyy] [or column3 <> zzz]

说明:
1.’*'表示全部的栏位都列出来。
2.where 之後是接条件式,把符合条件的资料列出来。

select column1,column2
from table_name
order by column2 [desc]

说明:order by 是指定以某个栏位做排序,[desc]是指从大到小排列,若没有指明,则是从小到大
排列

组合查询
组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的
表格才能够得到结果的。
select *
from table1,table2
where table1.colum1=table2.column1

说明:
1.查询两个表格中其中 column1 值相同的资料。
2.当然两个表格相互比较的栏位,其资料形态必须相同。
3.一个复杂的查询其动用到的表格可能会很多个。

整合性的查询:
select count (*)
from table_name
where column_name = xxx

说明:
查询符合条件的资料共有几笔。
select sum(column1)
from table_name

说明:
1.计算出总和,所选的栏位必须是可数的数字形态。
2.除此以外还有 avg() 是计算平均、max()、min()计算最大最小值的整合性查询。
select column1,avg(column2)
from table_name
group by column1
having avg(column2) > xxx

说明:
1.group by: 以column1 为一组计算 column2 的平均值必须和 avg、sum等整合性查询的关键字
一起使用。
2.having : 必须和 group by 一起使用作为整合性的限制。

复合性的查询
select *
from table_name1
where exists (
select *
from table_name2
where conditions )

说明:
1.where 的 conditions 可以是另外一个的 query。
2.exists 在此是指存在与否。
select *
from table_name1
where column1 in (
select column1
from table_name2
where conditions )

说明: 
1. in 後面接的是一个集合,表示column1 存在集合里面。
2. select 出来的资料形态必须符合 column1。

其他查询
select *
from table_name1
where column1 like ‘x%’

说明:like 必须和後面的’x%’ 相呼应表示以 x为开头的字串。
select *
from table_name1
where column1 in (‘xxx’,'yyy’,..)

说明:in 後面接的是一个集合,表示column1 存在集合里面。
select *
from table_name1
where column1 between xx and yy

说明:between 表示 column1 的值介於 xx 和 yy 之间。

3、更改资料:
update table_name
set column1=’xxx’
where conditoins

说明:
1.更改某个栏位设定其值为’xxx’。
2.conditions 是所要符合的条件、若没有 where 则整个 table 的那个栏位都会全部被更改。

4、删除资料:
delete from table_name
where conditions

说明:删除符合条件的资料。

说明:关于where条件后面如果包含有日期的比较,不同数据库有不同的表达式。具体如下:
(1)如果是access数据库,则为:where mydate>#2000-01-01#
(2)如果是oracle数据库,则为:where mydate>cast(‘2000-01-01′ as date)
或:where mydate>to_date(‘2000-01-01′,’yyyy-mm-dd’)
在delphi中写成:
thedate=’2000-01-01′;
query1.sql.add(’select * from abc where mydate>cast(‘+””+thedate+””+’ as date)’);

如果比较日期时间型,则为:
where mydatetime>to_date(‘2000-01-01 10:00:01′,’yyyy-mm-dd hh24:mi:ss’);

   后记:其实 MySQL 的对数据库的操作与其它的 SQL 类数据库大同小异,您最好找本将 SQL 的书看看。我在这里只介绍一些基本的,其实我也就只懂这些了,呵呵。最好的MYSQL教程还是"晏子"译的"MYSQL中文参考手册"不仅免费每个相关网站都有下载,而且它是最权威的。可惜不是象"PHP4中文手册"那样是chm的格式,在查找函数命令的时候不太方便。

2005年04月24日
成都美院上演大胆行为艺术 41学生露天全裸(图) 

 

   新快报21日消息 4月13日下午4时,成都南郊牧马山高尔夫球场一侧草坪上演了一幕名为《@41》的行为艺术:以四川音乐学院成都美术学院(川音成都美院)为主体的41位在校男女学生露天全裸,以身体组成电子邮件符号“@”。详细情况

晚上在一个论坛看到链接后,只觉得这些人为了艺术真是不敢想象,只觉得跟平时那此为了艺术怎样怎样的情况可能一样,但是看了图和片新闻几遍之后,忽然发现这张图片特殊之处:行为艺术和图片中的姿势(请原谅我想歪了)。

下面顺便摘录些网页的讨论:

1.过两天俺把俺家的猪赶出来,不摆@,摆个难度高点的&.

白花花的一片,俺也会搞行为艺术。

2.

呵呵,把照片都贴出来吧。。。

今天早上在腾讯网上也看到了。。。

现在的大学生也真够前卫的说。。。。。。。。。。。。。

为了出名也不至于如此吧。。。。。

3.丑死啦..
哪里来的美感...
不过的确是在献身....

4.好强,居然没有邪恶的事情发生

5.我估计这“行为艺术”结束之后难保不会有邪恶的事情发生。。。。

6.

Originally posted by ××× at 2005-4-24 10:20 PM:
就是在献身而己


献给谁。。。。。蓝天白云?。。。。

7.(引用5)刚跟同学在群上讨论这事

一个男同学突然冒出一句:“我知道他们为什么选高尔夫球场了?”
接着一个女同学接:“因为好多球洞”

2005年04月22日

1.如何用Asp判断你的网站的虚拟物理路径
答:使用Mappath方法
<%= Server.MapPath("\")%>

2.我如何知道使用者所用的浏览器?
答:使用the Request object方法
strBrowser=Request.ServerVariables("HTTP_USER_AGENT")
If Instr(strBrowser,"MSIE") <> 0 Then
  Response.redirect("ForMSIEOnly.htm")
Else
  Response.redirect("ForAll.htm")
End If

3.如何计算每天的平均反复访问人数
答:解决方法
<% startdate=DateDiff("d",Now,"01/01/1990")
if strdate<0 then startdate=startdate*-1
avgvpd=Int((usercnt)/startdate) %>
显示结果
<% response.write(avgvpd) %>
that is it.this page have been viewed since November 10,1998

4.如何显示随机图象
<% dim p,ppic,dpic
ppic=12
randomize
p=Int((ppic*rnd)+1)
dpic="graphix/randompics/"&p&".gif"
%>
显示
<img src="<%=dpic%>">

5.如何回到先前的页面
答:<a href="<%=request.serverVariables("Http_REFERER")%>">preivous page</a>
或用图片如:<img src="arrowback.gif" alt="<%=request.serverVariables("HTTP_REFERER")%>">

6.如何确定对方的IP地址
答:<%=Request.serverVariables("REMOTE_ADDR)%>

7.如何链结到一副图片上
答:<% @Languages=vbs cript %>
<% response.expires=0
strimagename="graphix/errors/erroriamge.gif"
response.redirect(strimagename)
%>

8.强迫输入密码对话框
答:把这句话放载页面的开头
<% response.status="401 not Authorized"
response.end
%>

9.如何传递变量从一页到另一页
答:用 HIDDEN 类型来传递变量
<% form method="post" action="mynextpage.asp">
<% for each item in request.form %>
<input namee="<%=item%>" type="HIDDEN"
value="<%=server.HTMLEncode(Request.form(item)) %>">
<% next %>
</form>

10.为何我在 asp 程序内使用 msgbox,程序出错说没有权限
答:由于 asp 是服务器运行的,如果可以在服务器显示一个对话框,那么你只好等有人按了确定之后,你的程序才能继续执行,而一般服务器不会有人守着,所以微软不得不禁止这个函数,并胡乱告诉你 (:) 呵呵) 没有权限。但是ASP和客户端脚本结合倒可以显示一个对话框,as follows:
<% yourVar="测试对话框"%>
<% script language=’javas cript’>
alert("<%=yourvar%>")
</script>

11.有没有办法保护自己的源代码,不给人看到
答:可以去下载一个微软的Windows s cript Encoder,它可以对asp的脚本和客户端javas cript/vbs cript脚本进行加密。。。不过客户端加密后,只有ie5才能执行,服务器端脚本加密后,只有服务器上安装有s cript engine 5(装一个ie5就有了)才能执行。

12.怎样才能将 query string 从一个 asp 文件传送到另一个?
答:前者文件加入下句: Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING"))

13.global.asa文件总是不起作用?
答:只有web目录设置为web application, global.asa才有效,并且一个web application的根目录下 global.asa才有效。IIS4可以使用Internet Service Manager设置application setting 怎样才能使得htm文件如同asp文件一样可以执行脚本代码?

14.怎样才能使得htm文件如同asp文件一样可以执行脚本代码?
答:Internet Sevices Manager -> 选择default web site ->右鼠键->菜单属性-〉主目录-> 应用程序设置(Application Setting)-> 点击按钮 "配置"-> app mapping ->点击按钮"Add" -> executable browse选择 \WINNT\SYSTEM32\INETSRV\ASP.DLL EXTENSION 输入 htm method exclusions 输入PUT.DELETE 全部确定即可。但是值得注意的是这样对htm也要由asp.dll处理,效率将降低。

15.如何注册组件
答:有两种方法。
第一种方法:手工注册 DLL 这种方法从IIs 3.0一直使用到IIs 4.0和其它的Web Server。它需要你在命令行方式下来执行,进入到包含有DLL的目录,并输入:regsvr32 component_name.dll 例如 c:\temp\regsvr32 AspEmail.dll 它会把dll的特定信息注册入服务器中的注册表中。然后这个组件就可以在服务器上使用了,但是这个方法有一个缺陷。当使用这种方法注册完毕组件后,该组件必须要相应的设置NT的匿名帐号有权限执行这个dll。特别是一些组件需要读取注册表,所以,这个注册组件的方法仅仅是使用在服务器上没有MTS的情况下,要取消注册这个dll,使用:regsvr32 /u aspobject.dll example c:\temp\regsvr32 /u aneiodbc.dll

第二种方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改进。MTS允许你指定只有有特权的用户才能够访问组件,大大提高了网站服务器上的安全性设置。在MTS上注册组件的步骤如下:
1) 打开IIS管理控制台。
2) 展开transaction server,右键单击"pkgs installed"然后选择"new package"。
3) 单击"create an empty package"。
4) 给该包命名。
5) 指定administrator帐号或则使用"interactive"(如果服务器经常是使用administrator 登陆的话)。
6) 现在使用右键单击你刚建立的那个包下面展开后的"components"。选择 "new then component"。
7) 选择 "install new component" 。
8) 找到你的.dll文件然后选择next到完成。
要删除这个对象,只要选择它的图标,然后选择delete。
附注:特别要注意第二种方法,它是用来调试自己编写组件的最好方法,而不必每次都需要重新启动机器了。

16. ASP与Access数据库连接:

<%@ language=VBs cript%>
<%
dim conn,mdbfile
mdbfile=server.mappath("数据库名称.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile
%>

17. ASP与SQL数据库连接:

<%@ language=VBs cript%>
<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称
%>

建立记录集对象:

set rs=server.createobject("adodb.recordset")
rs.open SQL语句,conn,3,2

18. SQL常用命令使用方法:

(1) 数据记录筛选:

sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

sql="select * from 数据表 where 字段名 like ’%字段值%’ order by 字段名 [desc]"

sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"

sql="select * from 数据表 where 字段名 in (’值1’,’值2’,’值3’)"

sql="select * from 数据表 where 字段名 between 值1 and 值2"

(2) 更新数据记录:

sql="update 数据表 set 字段名=字段值 where 条件表达式"

sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

(3) 删除数据记录:

sql="delete from 数据表 where 条件表达式"

sql="delete from 数据表" (将数据表所有记录删除)

(4) 添加数据记录:

sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"

sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)

(5) 数据记录统计函数:

AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加

引用以上函数的方法:

sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)

用 rs("别名") 获取统的计值,其它函数运用同上。

(5) 数据表的建立和删除:

CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 数据表名称 (永久性删除一个数据表)

19. 记录集对象的方法:

rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录

--------------------------------

20 Recordset对象方法

Open方法

recordset.Open Source,ActiveConnection,CursorType,LockType,Options

Source
Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。

ActiveConnection
Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。

CursorType
Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
--------------------------------
常数 常数值 说明
--------------------------------
adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。
adOpenKeyset 1 启动一个Keyset类型的游标。
adOpenDynamic 2 启动一个Dynamic类型的游标。
adOpenStatic 3 启动一个Static类型的游标。
--------------------------------
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。

--------------------------------
Recordset属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
--------------------------------
AbsolutePage 不支持 不支持 可读写 可读写
AbsolutePosition 不支持 不支持 可读写 可读写
ActiveConnection 可读写 可读写 可读写 可读写
BOF 只读 只读 只读 只读
Bookmark 不支持 不支持 可读写 可读写
CacheSize 可读写 可读写 可读写 可读写
CursorLocation 可读写 可读写 可读写 可读写
CursorType 可读写 可读写 可读写 可读写
EditMode 只读 只读 只读 只读
EOF 只读 只读 只读 只读
Filter 可读写 可读写 可读写 可读写
LockType 可读写 可读写 可读写 可读写
MarshalOptions 可读写 可读写 可读写 可读写
MaxRecords 可读写 可读写 可读写 可读写
PageCount 不支持 不支持 只读 只读
PageSize 可读写 可读写 可读写 可读写
RecordCount 不支持 不支持 只读 只读
Source 可读写 可读写 可读写 可读写
State 只读 只读 只读 只读
Status 只读 只读 只读 只读
AddNew 支持 支持 支持 支持
CancelBatch 支持 支持 支持 支持
CancelUpdate 支持 支持 支持 支持
Clone 不支持 不支持
Close 支持 支持 支持 支持
Delete 支持 支持 支持 支持
GetRows 支持 支持 支持 支持
Move 不支持 支持 支持 支持
MoveFirst 支持 支持 支持 支持
MoveLast 不支持 支持 支持 支持
MoveNext 支持 支持 支持 支持
MovePrevious 不支持 支持 支持 支持
NextRecordset 支持 支持 支持 支持
Open 支持 支持 支持 支持
Requery 支持 支持 支持 支持
Resync 不支持 不支持 支持 支持
Supports 支持 支持 支持 支持
Update 支持 支持 支持 支持
UpdateBatch 支持 支持 支持 支持
--------------------------------
其中NextRecordset方法并不适用于Microsoft Access数据库。

LockType
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:

--------------------------------
常数 常数值 说明
--------------------------------
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法
adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。
adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、删、改的操作。

来源http://www.blueidea.com/tech/program/2003/985.asp

今日准备把图书馆借的一本ASP参考书还掉,但是忽然发现其中的ASP常用函数内容非常实用,平时经常用到,很舍不得还掉,于是就想到百度上找资料保存起来,可惜跟参考书对照一下,发现部分函数网上的资料并没有,于是就想到所有的集合起来整理,再结合书上的应该比较全面了。现在就只有把资料先收藏在Blog上,有时间再慢慢整理了。

1.函数array() 
功能:创建一个数组变量 
格式:array(list) 
参数:list 为数组变量中的每个数值列,中间用逗号间隔 
例子: 
<% i = array (“1”,”2”,”3”) %> 
结果: i 被赋予为数组 

2.函数Cint() 
功能:将一表达式/其它类型的变量转换成整数类型(int) 
格式:Cint(expression) 
参数:expression 是任何有效的表达式/其它类型的变量 
例子: 
<% 
f = ”234” 
response.write cINT(f) + 2 
%> 
结果: 236 
函数Cint()将字符”234”转换 成整数234.如果表达式为空, 或者无效时,返回值为0; 

3.函数:Creatobject() 
功能:创建及返回一个ActiveX对象. 
格式:Creatobject(obname) 
参数bname 是对象的名称 
例子: 
<% 
Set con = Server.CreateObject(“ADODB.Connection”) 
%> 
结果: 

4.函数Cstr() 
功能:将一表达式/其它类型的变量转换成字符类型(string) 
格式:Cstr(expression) 
参数:expression是任何有效的表达式/其它类型的变量 
例子: 
<% 
s = 3 + 2 
response.write ”The result is: ” & cStr(s) 
%> 
结果:函数Cstr()将整数 5 转换 成字符”5”. 

5.函数Date() 
功能:返回当前系统(server端)的日期 
格式: Date() 
参数:无 
例子<% date () %> 
结果:05/10/00 

6.函数Dateadd() 
功能:计算某个指定的时间和 
格式: dateadd(timeinterval,number,date) 
参数:timeinterval是时间单位(月,日..); number是时间间隔值,date是时间始点. 
例子: 
<% 
currentDate = #8/4/99# 
newDate = DateAdd(“m”,3,currentDate) 
response.write newDate 
%> <% 
currentDate = #12:34:45 PM# 
newDate = DateAdd(“h”,3,currentDate) 
response.write newDate 
%> 
结果: 
11/4/99 
3:34:45 PM 
其中 
“m” = ”month”; 
“d” = ”day”; 
如果是currentDate 格式,则, 
“h” = ”hour”; 
“s” = ”second”; 

7.函数Datediff() 
功能:计算某量个指定的时间差 
格式: datediff(timeinterval,date1,date2[,firstdayofweek[,firstdayofyear]]) 
参数: timeinterval 是时间单位; date1,date2是有效的日期表达式,firstdayofweek,firstdayofyear 是任意选项. 
例子: 
<% 
fromDate = #8/4/99# 
toDate = #1/1/2000# 
response.write ”There are ” & _ 
DateDiff(“d”,fromDate,toDate) & _ 
“ days to millenium from 8/4/99.” 
%> 
结果:There are 150 days to millenium from 8/4/99. 

8.函数day() 
功能:返回一个整数值,对应于某月的某日 
格式: day(date) 
参数: date是一个有效的日期表达式; 
例子<% =date(#8/4/99#) %> 
结果:4 

9.函数formatcurrency() 
功能:转换成货币格式 
格式: formatcurrency(expression [,digit[,leadingdigit[,paren[,groupdigit]]]]) 
参数: expression 是有效的数字表达式;digit表示小数点后的位数;leadingdigit,paren,groupdigit是任意选项. 
例子<%=FormatCurrency(34.3456)%> 
结果34.35 

10.函数Formatdatetime() 
功能:格式化日期表达式/变量 
格式: formatdatetime(date[,nameformat]) 
参数: date为有效的日期表达式/变量;nameformat是指定的日期格式常量名称. 
例子<% =formatdatetime(“08/04/99”,vblongdate) %> 
结果:Wednesday,August 04,1999 
说明: 
描述
返回表达式,此表达式已被格式化为日期或时间。 
语法
FormatDateTime(Date[, NamedFormat])
FormatDateTime 函数的语法有以下参数:

参数 描述 
Date 必选项。要被格式化的日期表达式。 
NamedFormat 可选项。指示所使用的日期/时间格式的数值,如果省略,则使用 vbGeneralDate。 


设置
NamedFormat 参数可以有以下值:
常数 值 描述 
vbGeneralDate 0 显示日期和/或时间。如果有日期部分,则将该部分显示为短日期格式。如果有时间部分,则将该部分显示为长时间格式。如果都存在,则显示所有部分。 
vbLongDate 1 使用计算机区域设置中指定的长日期格式显示日期。 
vbShortDate 2 使用计算机区域设置中指定的短日期格式显示日期。 
vbLongTime 3 使用计算机区域设置中指定的时间格式显示时间。 
vbShortTime 4 使用 24 小时格式 (hh:mm) 显示时间。 

说明
下面例子利用 FormatDateTime 函数把表达式格式化为长日期型并且把它赋给 MyDateTime: 
Function GetCurrentDate 
“FormatDateTime 把日期型格式化为长日期型。
GetCurrentDate = FormatDateTime(Date, 1) 
End Function
 

11.函数Isnumeric() 
功能:返回一个布尔值,判断变量是否为数字变量,或者是可以转换成数字的其它变量. 
格式:isnumeric(expression) 
参数:expression 是任意的变量. 
例子: 
<% 
i=“234” 
response.write isnumeric(i) 
%> 
结果: true. 

12.函数Isobject() 
功能:返回一个布尔值,判断变量是否为对象的变量, 
格式: isobject(expression) 
参数: expression 是任意的变量. 
例子: 
<% 
set con =server.creatobject(“adodb.connection”) 
response.write isobject(con) 
%> 
结果: true 

13.函数:Lbound() 
功能:返回一个数组的下界. 
格式:Lbound(arrayname[,dimension]) 
参数:arrayname 是数组变量,dimension 是任意项 
例子: 
<% 
i = array(“1”,”2”,”3”) 
response.write lbound(i) 
%> 
结果:0

14.函数Lcase() 
功能:将一字符类型变量的字符全部变换小写字符. 
格式:Lcase(string) 
参数:string是字符串变量 
例子: 
<% 
str=“THIS is Lcase!” 
response.write Lcase(str) 
%> 
结果:this is lcase! 

15.函数left() 
功能:截取一个字符串的前部分; 
格式:left(string,length) 
参数:string字符串,length截取的长度. 
例子: <% =left(“this is a test!”,6) %> 
结果:this i 

16.函数len() 
功能:返回字符串长度或者变量的字节长度 
格式:len(string *varname) 
参数:string字符串;varname任意的变量名称 
例子: 
<% 
strtest=“this is a test!” 
response.write left(strtest) 
%> 
结果:15 

17.函数ltrim()
功能:去掉字符串前的空格.
格式:ltrim(string)     
参数:string 字符串. 
例子: <% =ltrim (“ this is a test!”) 
结果:this is a test! 

18.函数Mid()
功能:从字符串中截取字符串. 
格式:mid(string,start [,length])     
参数:string字符串,start截取的起点,length要截取的长度.
例子: 
<% 
strtest=“this is a test, Today is Monday!” 
response.write mid(strtest,17,5) 
%> 
结果:Today 

19.函数minute() 
功能:返回一数值, 表示分钟 
格式:minute(time) 
参数: time是时间变量 
例子lt;% =minute(#12:23:34#) %> 
结果:23 

20.函数month() 
功能:返回一数值, 表示月份 
格式:month(time) 
参数:time是日期变量 
例子<% =month(#08/09/99) %> 
结果:9 
[color=#1E90FF]21.函数monthname()[/color] 
功能:返回月份的字符串(名称). 
格式:Monthname(date [,abb]) 
参数: date是日期变量,abb=true时 则月份的缩写, 
例子: 
<% =monthname(#4/5/99#) %> 
结果:April 

22.函数Now() 
功能:返回系统的当前时间和日期. 
格式:now() 
参数:无 
例子: 
<% =now() %> 
结果: 05/10/00 8:45:32 pm 

23.函数:replace() 
功能:在字符串中查找,替代指定的字符串. 
格式:replace(strtobesearched,strsearchfor,strreplacewith [,start[,count[,compare]]]) 
参数:strtobesearched是字符串; strsearchfor是被查找的子字符串;strreplacewith 是用来替代的子字符串.start,count,compare 是任意选项. 
例子: 
<% 
strtest=“this is an apple.” 
response.write replace(strtest,”apple”,”orange”) 
%> 
结果:this is an orange. 

24.函数right() 
功能:截取一个字符串的后部分 
格式:right(string,length) 
参数:string字符串,length截取的长度. 
例子: 
<% 
strtest=“this is a test!” 
response.write right(strtest,3) 
%> 
结果:st! 

25.函数rnd() 
功能:返回一个随机数值 
格式:rnd[(number)] 
参数:number是任意数值. 
例子: 
<% 
randomize() 
response.write rnd() 
%> 
结果:0/1数值之一,无randomize(), 则不能产生随机数. 

26.函数round() 
功能:完整数值 
格式:round(expression[,numright]) 
参数:expression数字表达式;numright任意选项. 
例子: 
<% 
i=12.33654 
response.write round(i) 
%> 
结果: 12 

27.函数rtrim() 
功能:去掉字符串后的空格. 
格式:rtrim(string) 
参数:string 是字符串 
例子: 
<% 
response.write rtrim(“this is a test! ”) 
%> 
结果:this is a test! 

28.函数second() 
功能:返回一个整数值. 
格式:second(time) 
参数:time是一个有效的时间表达式; 
例子lt;% =second(# 12:28:30#) %> 
结果:30 

29.函数strReverse() 
功能:返回与原字符串排列逆向的字符串. 
格式:strreverse(string) 
参数:string是字符串 
例子<% =strreverse(“this is a test!”) 
结果:!tset a si siht 

30.函数time() 
功能:返回当前系统的时间值. 
格式:time() 
参数:无 
结果:9:58:28 Am 

31.函数trim() 
功能:删去字符串前,后的空格. 
格式:trim(string) 
参数:string 字符串. 
例子: 
<% 
strtest=“ this is a test! ” 
response.write trim(strtest) 
%> 
结果:this is a test! 

32.函数UBound() 
功能:返回一个数组的上界. 
格式:Ubound(expression [,dimension]) 
参数:expression 是数组表达式/数组变量,dimension 是任意项 
例子: 
<% 
i = array(“1”,”2”,”3”) 
response.write ubound(i) 
%> 
结果: 2 

33.函数:UCase() 
功能:将一字符类型变量的字符全部变换成大写字符. 
格式:Ucase(string) 
参数:string是字符串变量 
例子: 
<% 
str=“THIS is Lcase!” 
response.write Lcase(str) 
%> 
结果:THIS IS LCASE! 

34.函数Vartype() 
功能:返回变量的常量代码(整数) 
格式:Vartype(varname) 
参数:varname是任何类型的变量名称. 
例子: 
<% 
i=5 
response.write vartype(i) 
%> 
结果:2 (2表示整数,须要参考ASP常量代码.) 

35.函数Weekday() 
功能:返回一个整数,对应一周中的第几天. 
格式:Weekday(date [,firstofweek]) 
参数: date为日期变量,firstofweek为任选项. 
例子: 
<% 
d= # 5/9/00 # 
response.write weekday(d) %> 
结果:3(3 表示是星期二) 

36.函数weekdayname() 
功能:返回字符串,对应星期几. 
格式:weekdayname(weekday[,abb[,firstdayofweek]]) 
参数:weekday为日期变量,abb,firstdayofweek为任选项. 
例子: 
<% 
d = #8/4/99# 
response.write weekdayname(d) 
%> 
结果: Wednesday 

37.函数year() 
功能:返回日期表达式所在的年份. 
格式:year(date) 
参数: date是有效的日期表达式 
例子: 
<% =year(#8/9/99#) %> 
结果:1999 

38.函数Mod()功能:取余数.
例子:3 Mod 2 
结果:1

下面是部分例子


*******************************************************************
‘取得IP地址
‘*******************************************************************
Function Userip()
    Dim GetClientIP
    ’如果客户端用了代理服务器,则应该用ServerVariables("HTTP_X_FORWARDED_FOR")方法
    GetClientIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
    If GetClientIP = "" or isnull(GetClientIP) or isempty(GetClientIP) Then
        ’如果客户端没用代理,应该用Request.ServerVariables("REMOTE_ADDR")方法
        GetClientIP = Request.ServerVariables("REMOTE_ADDR")
    end if
    Userip = GetClientIP
End function

‘*******************************************************************
‘ 弹出对话框
‘*******************************************************************
Sub alert(message)
  message = replace(message,"’","\’")
  Response.Write ("<script>alert(‘" & message & "’)</script>")
End Sub
 
‘*******************************************************************
‘ 返回上一页,一般用在判断信息提交是否完全之后
‘*******************************************************************
Sub GoBack()
  Response.write ("<script>history.go(-1)</script>")
End Sub
 
‘*******************************************************************
‘ 重定向另外的连接
‘*******************************************************************
Sub Go(url)
  Response.write ("<script>location.href(‘" & url & "’)</script>")
End Sub

‘*******************************************************************
‘ 指定秒数重定向另外的连接
‘*******************************************************************
sub GoPage(url,s)
  s=s*1000
  Response.Write "<SCRIPT LANGUAGE=javascript>"
  Response.Write "window.setTimeout("&chr(34)&"window.navigate(‘"&url&"’)"&chr(34)&","&s&")"
  Response.Write "</script>"
end sub

‘*******************************************************************
‘ 判断数字是否整形
‘*******************************************************************
function isInteger(para)
on error resume next
dim str
dim l,i
if isNUll(para) then 
isInteger=false
exit function
end if
str=cstr(para)
if trim(str)="" then
isInteger=false
exit function
end if
l=len(str)
for i=1 to l
if mid(str,i,1)>"9" or mid(str,i,1)<"0" then
isInteger=false 
exit function
end if
next
isInteger=true
if err.number<>0 then err.clear
end function

‘*******************************************************************
‘ 获得文件扩展名
‘*******************************************************************
function GetExtend(filename)
dim tmp
if filename<>"" then
tmp=mid(filename,instrrev(filename,".")+1,len(filename)-instrrev(filename,"."))
tmp=LCase(tmp)
if instr(1,tmp,"asp")>0 or instr(1,tmp,"php")>0 or instr(1,tmp,"php3")>0 or instr(1,tmp,"aspx")>0 then
getextend="txt"
else
getextend=tmp
end if
else
getextend=""
end if
end function

‘ *—————————————————————————-
‘ * 函数:CheckIn
‘ * 描述:检测参数是否有SQL危险字符
‘ * 参数:str要检测的数据
‘ * 返回:FALSE:安全 TRUE:不安全
‘ * 作者:
‘ * 日期:
‘ *—————————————————————————-
function CheckIn(str)
if instr(1,str,chr(39))>0 or instr(1,str,chr(34))>0 or instr(1,str,chr(59))>0 then
CheckIn=true
else
CheckIn=false
end if
end function

‘ *—————————————————————————-
‘ * 函数:HTMLEncode
‘ * 描述:过滤HTML代码
‘ * 参数:–
‘ * 返回:–
‘ * 作者:
‘ * 日期:
‘ *—————————————————————————-
function HTMLEncode(fString)
if not isnull(fString) then
fString = replace(fString, ">", "&gt;")
fString = replace(fString, "<", "&lt;")

fString = Replace(fString, CHR(32), "&nbsp;")
fString = Replace(fString, CHR(9), "&nbsp;")
fString = Replace(fString, CHR(34), "&quot;")
fString = Replace(fString, CHR(39), "&#39;")
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "</P><P> ")
fString = Replace(fString, CHR(10), "<BR> ")

HTMLEncode = fString
end if
end function

‘ *—————————————————————————-
‘ * 函数:HTMLcode
‘ * 描述:过滤表单字符
‘ * 参数:–
‘ * 返回:–
‘ * 作者:
‘ * 日期:
‘ *—————————————————————————-
function HTMLcode(fString)
if not isnull(fString) then
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "</P><P>")
fString = Replace(fString, CHR(34), "")
fString = Replace(fString, CHR(10), "<BR>")
HTMLcode = fString
end if
end function


http://rmwz.blogchina.com/blog/refer.101953.html

2005年04月19日

前两天在随机读取数据库中的N条记录中有一个问题就是Access无法通过SQL语句来解决这个问题(select top n * from [table] order by rnd(id) ‘id:自动编号)每次显示的结果都是一样(原来是rnd产生的随机数初值都是一样,所以结果都是一样的)。后来查看了资料,明白了rnd工作原理,知道了要想让rnd每次产生的结果不一样就要用randomize函数来产生一个随机数初值(这样每次产生的随机数初值不一样,产生排序就会不一样,才能最终达到随机读取数据库

以上是大概操作的思路,具体的操作以下以ASP为例子,简要说明一下

randomize
id=cint(rnd*100) ‘cint函数将随机数转为整型。
sql="select top 1 * from [tablename] order by "&id
con.execute(sql)

注:由于知识有限,测试的结果确实像是随机读取,但是不知是否能让每条记录都有平等的被读取机率。还是希望能够得到更多这方面的知识及帮助。

前两天把Access数据库转到SQL Server后,发现Access数据库中的自动编号字段被转换成了int型了,这样插入数据后就无法像Access中那样方便地插入一个自动编号 了,郁闷了一会儿之后,就开始百度了,结果一大堆的重复资料显示说“要在创建语句中加入 in..(具体哪个单词没记住,反正不能用”(这句话只是大概内容),结果也不知该在哪里加入,我是在insert语句中的最后加是不行的,反正我菜得很,这个方法不实用。昨天到公司去领实习补贴时,问了一句同事,他说SQL Server也有自动编号功能。我愣了一下,第一反应就是怎么百度的结果那些“达人”都说SQL Server没有这个功能,还要在创建语句加入那个莫名其妙的关键字。后来这位同事演示给我看果然是简单。下面就是设置方法:
在SQL Server 企业管理器中设计表(相当于Access中的设计视图)中选择ID(假如自动编号的那个字段名是这个),在下面的标识属性选择“是”,标识种子和递增量都按默认选“1”。

是不是太简单了。

前几日,在Googlegroup中建立了一个学习日志,专门用来在毕业设计阶段的学习体会。欢迎达人前去指教,也希望和我一样菜的家伙一起交流学习经验体会

"Default project source path is not writeable"
不知有没有Java菜鸟和我一样,在JBuilder中点击ne­w中新建程序时有这个问题出现(弹出一个窗口中的提示信息)。我­刚碰到这个问题就很郁闷,想上网寻求帮助,但是找了一个Java­论坛要注册不说,还要等收到他的E-mail才能正常登录,果然­够郁闷的。于是就打开JBuilder继续摆弄。没事就乱点,于­是就打开菜单中的file选项,忽然发现Close
Projects这个选项,忽然想到会不会是我没关掉程序的缘故­(原来是有在设计窗口关掉设计界面)。于是就点击那个选项把程序­关掉,结果再新建程序就可以。

看来许多很简单的问题,到了菜鸟手上还真是件棘手的问题,关键是­看你怎么去解决了和认真考虑可能出现的原因

看来许多很简单的问题,到了菜鸟手上还真是件棘手的问题,关键是­看你怎么去解决了和认真考虑可能出现的原因

2005年04月11日

刚才在玩泡泡堂,然后发现,泡泡堂的游戏时,每个会员的头上也都有了自己的名字了,这样就更方便会员去辨认不同的会员的位置了。最早是从玩QQ堂开始的,感觉QQ堂当时就有这个功能,而且自己的名字是用绿色来显示的,但是泡泡堂只能从颜色来辨认是否自己人,但是却不能准确地将名字和角色对上号,现在加入这个功能真是好多了。

为了赶着去玩, 有点乱了