access数据库导入mssql应该注意的几个地方[转]

1、在ACCESS中经常使用的自动编号字段,导入到MSSQL后,他并不是自增型的INT,需要手工设置,把导入后的自动编号字段的标识的“否”改为“是”,“种子”和“递增量”都为“1”,才能成为自动编号;

2、在MSSQL SERVER中,有许多保留字,在ACCESS中是没有的,当你把数据导入到MSSQL的时候,问题就出来了。MSSQL在导入的时候,会自动给这些字段(包括数据库中的表名)加上“[字段名]”,因此,你必须修改你的脚本,把相应的字段名字(或者表名字)加上中括号,或改变字段名字为不是MSSQL的保留字。
例如user应该写为[user]
(具体是那些,请参考有关资料)

3、在用ACCESS关于时间的使用,大家喜欢使用“SELECT * FROM AAAA WHILE TIME="&NOW()”这样的SQL语句,然而,在MSSQL中没有“NOW()”这个函数,而是使用“GETDATE()”,所以,所有的SQL语句中的“NOW()”必须换成“GETDATE()”,请吧sql语句和默认值改为getdate()。

4、在ACCESS中SQL如果用到mid(str,bengin,strlen),在MSSQL中没有这个函数,可以用这个代替left(right(str,len(str)-1),strlen),例如
Mid(”202.097.181.059”,5,3)
改为:left(right(”202.97.181.059”,len(”202.097.181.059”)-),3)

5、在ACCESS的SQL语句中的时间使用变量查询的时候,大家一般使用“SELECT * FROM AAAA WHILE TIME=#"&变量名&"#"”,在MSSQL中是不行的,他的语法是“SELECT * FROM AAAA WHILE TIME=”"&变量名&"”"”。(意思是让你把日期时间变量当成字符串来使用,呵呵~~~)

6、在需要用到时间计算的时候,通常大家使用“SELECT * FROM AAAA WHERE DATEDIFF(”dd”,#"&NOW()&"#,被比较的字段名)>0”这样的语法,在使用到MSSQL的时候是绝对通不过的,即使把#"&NOW()&"# 换成了”"&GETDATE()&"”也没有用,因为MSSQL中的DATEDIFF()函数不认识“”计算类型””里的单引号,你必须使用双引号,并且使用两个(ASP的语法规则)。因此这样的语句应该换成“SELECT * FROM AAAA WHERE DATEDIFF(""dd"",”"&GETDATE()&"”,被比较的字段名)>0”。

7、在ACCESS数据表中的“是/否”类型字段,导入到MSSQL后,是BIT字段,他的值不再是“TRUE”或“FALSE”,而是“1”和“0”,并且“1”和“0”在ASP中并不绝对等同于“TRUE”或“FALSE”,因此在引用这些数据的时候,要加以注意。

8、ACCESS中备注型在MSSQL中改为TEXT或者NTEXT性,长度默认为16就可以,不影响贴子长度!
9、ACCESS中SQL语句 delete * from 表名…. 再MS SQL中改为delete from….

10、ACCESS 中的好多默认值在MSSQL中需要手工添加,特别是int型,请对照改动!

解决Prototype.js传递中文参数的问题!

2007/06/29 更新:
增加随机码,确保每次都有效读取。

============================

这段时间一直对javascript挺感兴趣的。
前些日子开始用prototype的一些脚本,说起来惭愧,早就存在而且出名的东东,自己竟然不知道,唉。
用prototype.js的Ajax.Request实现异步传递真不错,可以把整个表单转换成string来传递,也可以单独获取某一个文本域的值,可是有一个缺点就是不支持中文参数传递(可能是我没发现),毕竟是老外的写的东东。经过一番琢磨,我发现是在内部脚本中对参数编码的问题,老外不管什么参数都用encodeURIComponent()函数进行编码,而中文则适用于escape()函数。经过测试,问题解决了,可以实现传递中文参数了。在实际应用中,可以指定encoding,若:encoding:”gb2312″,则自动转换为escape()函数进行编码;若不指定encoding则使用默认函数encodeURIComponent()。

我把修改过了prototype.js放上来,需要的朋友下载就是了,版本是1.5.0

Click Here To Download