CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  Access

access中如何生成随机六位数密码????????????????

楼主WinningEleven(流氓蓬蓬)2005-11-04 10:35:38 在 其他数据库开发 / Access 提问

现在有两张表a和b,a中有两个密码字段a1和a2,b中有两个密码字段b1和b2,我现在想要实现的是:  
   
  如果在a表中插入一条数据,要保证插入记录的a1和a2的值是六位数字,并且a1和a2的值不能相同,  
  同时,a1和a2的值也不能和a表和b表中已存在记录的的a1,a2,b1和b2的值相同。  
   
  请教一下应该怎么实现????????  
  分不够可以再加 问题点数:100、回复次数:4Top

1 楼wwwwb()回复于 2005-11-04 10:52:56 得分 20

可以用RND函数,示例:  
  Dim   n(1   To   370),   i,   j,   q    
             
            For   i   =   1   To   370    
            n(i)   =   0    
            Next    
            j   =   0    
            Randomize   Timer    
            While   j   <   10    
            q   =   Int(Rnd(1)   *   369   +   1)    
            If   n(q)   =   0   Then    
            Print   q    
            n(q)   =   1    
            j   =   j   +   1    
            End   If    
            Wend    
  你可以自己处理一下,生成6位数Top

2 楼changechange(http://access911.net 是我的个人网站,欢迎光临)回复于 2005-11-04 13:59:22 得分 0

这位问题有两个重点  
   
  1、要生成随机数字  
  用   VBA   的   RND   函数就可以生成了,至于6位数用字符处理或者乘以10的5次方都可以  
   
  2、要确保不一样  
  可以在生成后在表中判断是否有重复的,如果有重复就再生成一次随机一直到不重复为止  
  判断是否重复可以用   VBA     的   DLOOKUP   函数或者   DCOUNT   函数来实现。Top

3 楼changechange(http://access911.net 是我的个人网站,欢迎光临)回复于 2005-11-04 14:02:43 得分 0

Dim   MyValue  
  Randomize         '   对随机数生成器做初始化的动作。  
  MyValue   =   format(Int((999999   *   Rnd)   +   1),"000000")         '   生成   1   到   999999   之间的随机数值。  
   
  ---------------------------  
  记得每次随机都要用初始化  
   
  Randomize   语句示例  
  本示例用   Randomize   语句初始化随机数生成器。由于忽略了数值参数,   所以   Randomize   用   Timer   函数的返回值作为新的随机数种子值。  
   
  Dim   MyValue  
  Randomize         '   对随机数生成器做初始化的动作。  
   
  MyValue   =   Int((6   *   Rnd)   +   1)         '   生成   1   到   6   之间的随机数值。  
   
   
   
   
  Rnd   函数  
               
   
  返回一个包含随机数值的   Single。  
   
  语法  
   
  Rnd[(number)]  
   
  可选的   number   参数是   Single   或任何有效的数值表达式。  
   
  返回值  
   
  如果   number   的值是   Rnd   生成    
  小于   0   每次都使用   number   作为随机数种子得到的相同结果。    
  大于   0   序列中的下一个随机数。    
  等于   0   最近生成的数。    
  省略   序列中的下一个随机数。    
   
   
   
  说明  
   
  Rnd   函数返回小于   1   但大于或等于   0   的值。  
   
  number   的值决定了   Rnd   生成随机数的方式。  
   
  对最初给定的种子都会生成相同的数列,因为每一次调用   Rnd   函数都用数列中的前一个数作为下一个数的种子。  
   
  在调用   Rnd   之前,先使用无参数的   Randomize   语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。  
   
  为了生成某个范围内的随机整数,可使用以下公式:  
   
  Int((upperbound   -   lowerbound   +   1)   *   Rnd   +   lowerbound)  
   
  这里,upperbound   是随机数范围的上限,而   lowerbound   则是随机数范围的下限。  
   
  注意   若想得到重复的随机数序列,在使用具有数值参数的   Randomize   之前直接调用具有负参数值的   Rnd。使用具有同样   number   值的   Randomize   是不会得到重复的随机数序列的。  
   
  本示例使用   Rnd   函数随机生成一个   1   到   6   的随机整数。  
   
  Dim   MyValue  
  MyValue   =   Int((6   *   Rnd)   +   1)         '   生成   1   到   6   之间的随机数值。  
   
   
   
   
  MyValue   =   format(Int((999999   *   Rnd)   +   1),"000000")         '   生成   1   到   999999   之间的随机数值。  
  Top

4 楼changechange(http://access911.net 是我的个人网站,欢迎光临)回复于 2005-11-04 14:06:32 得分 80

2、要确保不一样  
  可以在生成后在表中判断是否有重复的,如果有重复就再生成一次随机一直到不重复为止  
  判断是否重复可以用   VBA     的   DLOOKUP   函数或者   DCOUNT   函数来实现。  
   
   
  do   until   dcount("*","表a","a1='"   MyValue     &   "'"   )   =0   then  
          '说明重复了,再生成一次  
   
  loop  
   
   
   
   
  全部显示  
   
  DCount   函数  
  参阅应用于示例特性使用   Dcount   函数可以确定特定记录集(一个域)中的记录数。可以在   Visual   Basic、宏、查询表达式,或计算控件中使用   DCount   函数。  
   
  例如,可以在模块中使用   Dcount   函数,以返回“订单”表中对应于特定日期的订单数。  
   
  DCount(expr,   domain,   [criteria])  
  DCount   函数具有下列参数:  
   
  参数   说明    
  expr   一个表达式,代表要统计其记录数的字段。可以是标识表或查询中字段的字符串表达式,也可以是对该字段上的数据进行计算的表达式。在   expr   中可以包括表中字段的名称、窗体上的控件、常量或函数。如果   expr   包括函数,它既可以是内置的,也可以是用户定义的,但不能是另一个域聚合函数或   SQL   聚合函数。    
  domain   字符串表达式,代表组成域的记录集。可以是表名称或不需要参数的查询名称。    
  criteria   可选的字符串表达式,用于限制   DCount   函数执行的数据范围。例如,criteria   通常等价于   SQL   表达式中的   WHERE   子句,只是不含   WHERE   关键字。如果忽略   criteria,DCount   函数在整个域的范围内计算   expr。任何包含在   criteria   中的字段必须同时也是   domain   中的字段;否则   Dcount   函数将返回   Null。    
   
   
  说明  
  在不需要知道记录特定值的时候,可以使用   DCount   函数来计算域中的记录数。虽然   expr   参数可以对字段执行计算,但   DCount   函数只返回记录数。任何由   expr   执行计算所得的值都是不可用的。  
   
  当需指定条件来限制函数执行的数据范围时,应在计算控件中使用   DCount   函数。例如,要显示运往   California   的订单数,可将文本框的   ControlSource   属性设为如下表达式:  
   
  =DCount("[OrderID]",   "Orders",   "[ShipRegion]   =   'CA'")  
   
  如果只是统计   domain   中的所有记录而不指定任何限制,则可以使用   Count   函数。  
   
   
  提示  
   
  Count   函数是经过优化的,可以加快在查询中对记录数进行统计的速度。所以应在查询表达式中使用   Count   函数来代替   DCount   函数,并设置可选的条件以实施对结果的限制。如果必须从代码模块、宏或计算控件中对域中的记录进行计数时,应该使用   DCount   函数。  
   
  使用   DCount   函数可以计算包含特定字段的记录数,该字段不在窗体或报表所基于的记录源中。例如,在基于“产品”表的窗体中,其计算控件中可以显示“订单”表中的订单数。  
   
  DCount   函数在计数记录时,不包括由   expr   引用的字段中含有   Null   值的记录,除非   expr   参数为星号(*)通配符。如果使用了星号,DCount   函数将计算所有记录的总数,包括含有   Null   字段的记录。下面的示例将计算“Orders”表中的记录数。  
   
  intX   =   DCount("*",   "Orders")  
   
  如果   domain   是一个包含主键的表,也可以将   expr   设为主键字段来计算总记录数,因为主键字段不可能为   Null。  
   
  如果   expr   指定多个字段,应使用连接运算符分隔各字段名,即和字符(&)或加号运算符(+)。如果使用(&)分隔字段,Dcount   函数将返回在列出的任一字段中含有数据的记录数。如果使用加号运算符,Dcount   函数将只返回在所有列出字段中都含有数据的记录数。下面的示例说明了使用这两种运算符的结果,它们连接所有记录中均包含数据的字段(ShipName)和不包含数据的字段(ShipRegion)。  
   
  intW   =   DCount("[ShipName]",   "Orders")  
  intX   =   DCount("[ShipRegion]",   "Orders")  
  intY   =   DCount("[ShipName]   +   [ShipRegion]",   "Orders")  
  intZ   =   DCount("[ShipName]   &   [ShipRegion]",   "Orders")  
   
  注释       和字符(&)在执行字符串连接时是首选的运算符。在除加法以外的其他情况下,应尽量避免使用加法运算符,除非特地需要在表达式中产生   Null   值。  
   
  使用该函数时,domain   中未保存更改的记录将不包括在内。如果要让   DCount   函数以更改后的数据为基础,必须先保存更改。方法是单击“记录”菜单上的“保存记录”,或是将焦点移动到另一个控件,或使用   Update   方法。  
   
  示例  
  下面的函数返回在发货日期之后发送到指定国家/地区的订单数量。域为“Orders”表。  
   
  Public   Function   OrdersCount(ByVal   strCountry   As   String,   _  
                                                          ByVal   dteShipDate   As   Date)   As   Integer  
   
          OrdersCount   =   DCount("[ShippedDate]",   "Orders",   _  
                                      "[ShipCountry]   =   '"   &   strCountry   &   _  
                                      "'   AND   [ShippedDate]   >   #"   &   dteShipDate   &   "#")  
  End   Function  
   
   
  若要调用该函数,请在“立即”窗口中使用下列代码:  
   
  :OrdersCount   "UK",   #1/1/96#  
   
  Top

相关问题

  • 怎么用JAVA随机生成一个6位数的密码?
  • 生成随机密码
  • 如何生成一个随机密码???
  • 随机密码生成问题
  • java bean随机生成密码报错
  • 怎样用PB来随机生成一个4位数?
  • 求教随机生成一组七位数字的算法
  • 请问如何用vba生成随机的密码?
  • 关于生成大量随机密码的讨论
  • 请问在sqlserver中有没有随机生成二位数字的函数?

关键词

  • 密码
  • 字段
  • 密码字段
  • 插入
  • 记录
  • 相同
  • 实现
  • 不能
  • 有两

得分解答快速导航

  • 帖主:WinningEleven
  • wwwwb
  • changechange

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo