首先说一下这个时间问题。时间字段在mssql里用起来比较自由,但在access中,程序就得加上两个##,不过那已经是什么年代的问题了,现在大家都用asp.net了,我的网站也不例外,我预先就知道这个问题le,所以就懒得考虑asp.net里写一个sql=“insert into mytable values (#”+mytime+”#)等问题,asp.net不是有parameters吗,mycommand.Parameters.Add("@myDate",OleDbType.DbTimeStamp).value=DateTime.Now;嘿嘿,这样我就避开了考虑那个问题,阿门,这次总不会有顾虑了吧,毕竟asp.net比asp要进步吧。可是,run一下,妈妈的,还是出来一大堆的黄颜色字,又错了,我仔细研究了一下,怪怪了,如果把DateTime.Now变成DateTime.Now.ToString();就好了。艾,这我就没搞懂。其实有啥能搞懂的,只是个规定罢了吧。
再说个让人气氛的问题,在sql中因为没有是/否这种属性,我一般是用bit,bit占位小,正好用来对应1,0啊,所以我得sql语句是这么写的:sql=”select * from mytable where isSon=1”,到了access上,这个字段变成了是/否,愣是没有给显示出来我的那些孩子们来。而且也温柔的不报错,让我好一顿的找啊。如果改成isSon=True就ok了。
还有一个问题真让人头疼,我至今没有解决,就是一个replace的语句。这个replace 呢一般access是不支持的,如果装了jet4.0 sp8后,启动了沙盒才行,说起沙盒来真想骂一下那些不懂计算机只懂几个abc字母就给翻译计算机书的人,沙盒是啥,我来不及搞清楚,反正说是这样可以,后来,我便按照做法启动了沙盒,还好,在access的查询中能用replace了,可是我得程序里的就不能用。那不能用怎么办,我一时还有点一愁没展。我得语句大致是这个样子的:
sql="update infoindex set infoId=Replace(infoid,'"+Panel1.Controls[i].ID+"','"+newInfoId+"'),InfoFather=Replace(infoFather,'"+Panel1.Controls[i].ID+"','"+newInfoId+"') where InfoId like '"+Panel1.Controls[i].ID+"_%'";
我的想想在access下怎么转变一下,本人最怕的就是麻烦啊。说道这里还是想多说几句,实际上从程序的sql到access的查询是有个引擎在转换的,要不在access模糊查询的时候我们用的是*,但是实际程序我们还是用通常的%,但是你要说奇怪吧它还就是挺奇怪,也许是因为我还没读大乘真经吧,可是access中的函数,你必须在程序中用一样的,比如mssql中的函数substring在access中就得去掉,必须换成mid,服了这个access了。我想可能这个access和程序得执行,可能和vba有关吧。具体就不懂了。