主题:  高手请进,关于ACCESS数据库自动编号的问题,在线等。。。

浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#12004/5/4 20:39:26
在ACCESS数据库中,有一个表,内有一个自动编号的字段。
用ASP对该数据库进行增加、删除记录时,发生如下问题:
假设现在数据库中有10条记录,第10条记录自动编号为010,删除第10条记录,再新增一条记录,可是发生问题了,新增加的记录的编号为011,而不是010!也就是说经过删除记录后,再新添加记录时,自动编号与记录条数对不上了。怎么处理呢?

还有一个问题:在ASP中,能否读取某个字段的数据类型?(假设有一文本字段,字段长度为10,那么怎样限制用户添加记录时字段的长度不超过10呢)?

新手问题,请勿见笑,还请多多帮助!



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#22004/5/5 10:01:23
1、这就是自动编号的特性,除非你不用自动编号

2、rs("somefield")=Left(strInput,10)



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#32004/5/5 11:19:38
是啊,我查找了不少网上资源,也没有发现合适的方法,只有不用自动编号了。

janlay,谢谢您,不过,第2个问题并未完全解决呀。也就是说,如果事先不知道字段长度,或者字段长度变更了,能否通过ASP动态的读取出文本字段的长度呢?



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#42004/5/5 11:52:14
嗯,刚才没看清楚

跟你说一下 rs 的对象模型(你可以用对象浏览器查找)

recordset 对象有个缺省的 fields 属性,它包含所有字段(field)的集合;
而 field 对象有以下几个你感兴趣的属性:
Type: 类型(返回枚举类型,具体值可从对象浏览器查找得到)
DefinedSize: 已定义宽度(返回长整型)

这是一个例子:
If rs.fields(0).Type=adVarChar Then '或 200
  '处理字段类型为 varchar 时的情况
  Response.Write rs.fields(0).DefinedSize
End If

由于 fields 是 recordset 的缺省属性,上面代码也可以写作:
If rs(0).Type=adVarChar Then '或 200
  '处理字段类型为 varchar 时的情况
  Response.Write rs(0).DefinedSize
End If



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#52004/5/19 1:17:32
太感谢了。



nigelttk

职务:普通成员
等级:1
金币:0.0
发贴:1
#62004/5/20 15:43:53
还有一个最变态的方法。。。就是删掉你自动编号的那一列。。然后重新建立一个ID为自动编号。。。顺序会依照现在。。依次自动序号。。。。



红卫兵

职务:普通成员
等级:1
金币:0.0
发贴:113
#72004/5/21 10:32:33
第二个问题还可以用脚本语言解决:
<script language="javascript">
function check_length()
{if (document.form.tname.text.length>10)
{alert "输入字符太多!";reture false;}
}
</script>

然后在提交的时候来个:onsubmit="return check_length()"就可以了,
这种方法应当更适用!
大概是这个样子,不能肯定具体语言书写正确!



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#82004/5/22 17:01:44
感谢名位



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#92004/5/22 19:01:53
如果要编写安全的商业程序,不要依赖客户端验证。
原因很简单:你无法完全控制客户端的浏览器——这和 Win32 程序不同,用户可以轻易禁止JS运行来绕过验证部分。