Office中国论坛/Access中国论坛

标题: 原来“必填字段”为“否”,改成“是”后,提示有冲突,有三个选项,各是什么结果? [打印本页]

作者: D_net    时间: 2003-2-11 06:45
标题: 原来“必填字段”为“否”,改成“是”后,提示有冲突,有三个选项,各是什么结果?
一张表,已有多条记录,“必填字段”为“否”,改成“是”后,提示:
“现有数据与"<字段名>"的"必填字段"属性有冲突,是否用新设置继续测试?
  * 如要坚持新设置并继续测试,请选择“是”
  * 如要还原成旧设置并继续测试,请选择“否”
  * 如要停止测试,请选择“取消”

   (三个选择,各是什么结果??)

希望斑竹能帮我详细阐述其中的逻辑!
作者: INN    时间: 2003-2-11 07:20
反正都要试,就试一下呗!说笑的!试之前一定要保存数据库!
如果要把“必填字段”的属性改为“是”则该字段必需要有内容,ACCESS可能检测到该字段有些记录为“空值”所以提示是否继续。试一下吧,否则你学不到东西。
其实“经验”有时可以说是“瞎猜”的代名词,哈哈!

作者: WTM1    时间: 2003-2-11 16:21
同意
作者: D_net    时间: 2003-2-11 20:22
谢谢各位!
当然,我都试过:3个选择都能执行,但其对数据的影响的执行逻辑是怎样的??
作者: zhengjialon    时间: 2003-2-11 20:34
* 如要坚持新设置并继续测试,请选择“是”
将为空的改为默认值;
* 如要还原成旧设置并继续测试,请选择“否”
不更改现为空的值
* 如要停止测试,请选择“取消”
停止更改设置
作者: D_net    时间: 2003-2-11 22:01
多谢zhengjialon!
您说的
“ * 如要坚持新设置并继续测试,请选择“是”
   将为空的改为默认值; ”
我测试过,并不会改为默认值(包括文本类型和默认为0的数字类型)
Why ??
难道要问MS的工程师??
作者: WTM1    时间: 2003-2-12 01:36
差不多!!!
作者: Roadbeg    时间: 2003-2-13 21:06
不会改为默认值,但你需要手动更改,以免产生一些不必要的错误.
可以参考以下实例:
Private Sub 设置料件资料各新增字段的默认值()
    Dim Ts As Workspace
    Dim Db As Database
   
    Dim Rs As DAO.Recordset
   
    Dim fd As Field
   
    Dim i As Long, j As Long
   
    Set Ts = DBEngine.Workspaces(0)
    Set Db = Ts.Databases(0)
   
    Set Rs = Db.OpenRecordset("select * from 料件资料 order by id")
   
    Ts.BeginTrans
   
    j = Rs.Fields.Count - 1
   
    Do Until Rs.EOF
        For i = 0 To j
            If IsNull(Rs.Fields(i).Value) And Rs.Fields(i).Required Then
                Rs.Edit
                Rs.Fields(i).Value = Rs.Fields(i).DefaultValue
                Rs.Update
            End If
        Next i
            
        Rs.MoveNext
    Loop
   
    Ts.CommitTrans
End Sub



[此贴子已经被作者于2003-2-13 13:06:16编辑过]






欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3