Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

关于字段中日期有效性规则问题

秒到频  发表于:2008-05-08 16:16:29  
复制

    各位大虾,我现在所建立的表格字段中,有两个字段分别是:出发日期和到达日期。现在要在有效性规则中设置使得出发时间必须早于到达时间,如果在表格中输入数据时违反了这一规则,就会出错,我试了下按[出发日期]<[到达日期]设置有效性规则后,保存时提示:“无效的SQL句法-不能在一个列级CHECK约束中使用多个列” 也就是说在为一个字段设置有效性规则时不能牵扯到其他字段。请问这些怎么实现呢,谢谢!

    我在access的帮助里找到了对这个很有用的知识,但我这个菜鸟还是不会用,下面给大家看看,希望能对大家有所帮助,并也期望能帮我解决上面提的这个问题:

       下一个示例使用   SetTableValidation   函数来设置记录级的有效性规则,以确保“结束日期”字段中的值比“开始日期”字段中的值晚。  
    
  Dim   strTblName   As   String,   strValidRule   As   String  
  Dim   strValidText   As   String  
  Dim   intX   As   Integer  
    
  strTblName   =   "Employees"  
  strValidRule   =   "EndDate   >   StartDate"  
  strValidText   =   "Enter   an   EndDate   that   is   later   than   the   StartDate."  
  intX   =   SetTableValidation(strTblName,   strValidRule,   strValidText)  
    
  Function   SetTableValidation(strTblName   As   String,   _  
          strValidRule   As   String,   strValidText   As   String)   _  
          As   Integer  
    
          Dim   dbs   As   Database,   tdf   As   TableDef  
    
          Set   dbs   =   CurrentDb  
          Set   tdf   =   dbs.TableDefs(strTblName)  
          tdf.ValidationRule   =   strValidRule  
          tdf.ValidationText   =   strValidText  
  End   Function  

现在问题是我不懂得用这个函数啊

 

Top
竹笛 发表于:2008-05-08 16:18:05
在窗体保存前就判断,而不要保存后再判断。

秒到频 发表于:2008-05-08 16:27:52

我知道您的意思,但现在问题是,我做的这个数据录入程序是供给其他人录入数据的,为保证不出错,才必须设置此有效性规则以保证万无一失



竹笛 发表于:2008-05-08 17:01:21
不冲突啊,别人录入时,也得从窗体上录入吧。在窗体保存前就判断,而不要保存后再判断。


符鸿敏 发表于:2008-06-22 19:43:06

在窗体中建一个保存按钮和一个追加查询,在该按钮的单击事件中写:

if me.出发日期<me.到达日期 then '条件判断

DoCmd.OpenQuery "追加查询"   '将当前窗体中的数据追加么表中,数据被保存.

else

MsgBox="出发日期大于或等于到达日期,请核实后重新填写之"

end if



总记录:4篇  页次:1/1 9 1 :