说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

ASP 中ADO访问Access的一个百思不得其解的问题,高手赶紧过来看看啊!~~~

编辑:说三道四文库 发布时间:2018-07-23 04:04
HTML文档下载 WORD文档下载 PDF文档下载
最近菜鸟我用ASP 做一个网络考试系统,考虑到每个学生的名可能重复的问题,所以我就在用Access做的一个表Stu_Table 中 设置了 一个字段:Stu_Test_No ,就是每个学生的准考证号,当考生首次登陆的时候,系统会产生一个数做为这个字段的值。我把这个字段设为关键字,但是现在遇到了2个很难很奇怪的问题:
  1。我把这一字段的字段类型设置为:自动编号(递增)。我试了一下,可以的。完全符合我的目标,但是有个问题:当我在Access中手动把所有的记录都删除后,再通过ASP脚本
(也就是包含在我的系统中的)插入一行记录时,读出来的记录的数目是:1。没错。但是这个学生的准考证号也就是第一个字段却不是重新从1开始,而是接着原来的递增。这是为什么呢??不是Access的错吧。这样的话,岂不是浪费了吗?

 2。为了解决上面的问题,我又换了方法:把准考证字段的类型设置为:自动编号(随机)。但是呢,我想在某个考生首次登陆后把系统生成的对应的考号给他。这时我却不知道该如何找到那个刚刚插入的记录了。。(由于我把准考证号定义为主关键字,有了索引所以,表会重新排序,而不是我们想的那个记录刚好在最后一行)。我该如何找到这个刚刚插入的记录呢??

 上面的2个问题,只要一个可以解决,我的问题就OK了。麻烦路过的高手教我一下。小弟我先谢谢了。。。急啊!初次用ASP + Access啊。
不要设置成自动编号,设置成数字类型
自增字段就是这样,删除了会出现断层,建议你只是用自增字段作为索引字段,可以再加一个准考证号字段,便于控制
1.用"Truncate Table yourTableName"就可以重新开始从1编号.
2.用@@identity可以取到刚插入的一条记录的Identity数据.如:
  SELECT @@IDENTITY AS 'Identity'
我不明白最后的一个高手说的,那个 @@Identity 的全局变量不是用在SQL Server中吗?我这里是用在ACCESS中啊。难道ACCESS也可以支持吗??
急啊?!!!!!!
你可以自己定义一个数字类型字段,每次插入记录的时候就自动生成一个号码
让新插入记录的号码是前面所有记录中最大的号码加1就可以呀。
索引号码你用自动编号,作为全表的唯一标识,便于查找与定位。
准考证号字段另设一个,设成字符型或长整型都可以,你自己看着办。
哦,上面的高手要我自己看着办,可是我现在没辙了啊。。呵呵。
我想跟 meizz(梅花雨) 说的一样。比较好学号自己定。
meizz的方法是可行的,自动编号仅仅是为了排序,另设准考证号字段作为考生的唯一性标始
我还有一个比较恶劣的方法:
如果你实在想要自动编号从1开始,那么可以在你的项目正式运行之前向吧自动编号项删除掉,然后再增添此项,那么它便又从1开始了
select max(id) from tname
用两个自动增量
一个随机,一个自动
按自动的排序,随机作为准考证号
..........

好像都不行,还是数字字段,自己插入,不用递增
谢谢这里的高手了。。呵呵,我现在自己改了方法了:
我先得到这个表里的记录的条数 。最开始的我插入的时候设置为1,以后的每新注册一个用户,我就再读记录数,将结果做为插入的直。。这样。我就能自己控制了。。呵呵,虽然目前还可以。没有什么麻烦,但是:

如果我在以后注销某个考生的信息(也就是删除他的信息时),会出现冲突:例如:
  1  tom  98 99
    2  john 98 67
    3  marry 88 99
    5  Tome  78 77

 我在上面的表里把一个考号是4号的给删除了,但是如果再插入的时候,就冲突了。因为里面已经有个5了。呵呵。但是,这是后期管理的事,目前先不考虑。。。  只能这样了。。。。。哎。。还是没找到好的办法啊。。。
我来回答你的第二个问题:)

你可以多加一个字段"temp",每次写进数据库时,给这个字段"temp"写入“AAAA”或其它的什么的固定字符, 然后通过“AAAA”来查找,就可以找着你刚刚给学生的编号了,找着后把“temp”里的“AAAA”清空就好了:)
不用自动编号,用id=id+1
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘