用VB的TEXT控件绑定ACCESS数据库的字段。
每次ADDNEW时,发现一个问题:
不触发TEXT框,只是不停按增加没有问题。
可是如果在某一个TEXT框中输入了内容后,再删除,就会报错:
“字段XX不能是零字段的字符串”据我的估计是不是ACCESS字段不支持空字符串,而支持NULL值。
本来字段的默认值是NULL,一旦赋值后就清空,就变成空字符串,从而导致出错。有没有什么好办法解决呢?
我的表有几十个字段,肯定要用绑定的,不然写出来的程序会非常长的,也没必要。

解决方案 »

  1.   

    从你的access的表结构中找找问题
    估计是表结构与引用不能完美兼容
    接吧,接吧,接多了就成高手了
      

  2.   

    不过我找过ACCESS了,好像没有地方可以修改这个属性呀。
    我的那个字段是DATA类型的。
    我试过了,数字或字符是没有问题的。
    就是日期型的不知道如何解决。
      

  3.   

    数据库字段设置成一个格式的日期型,其实设置成文本格式也可。主要是查询的时候注意转换或格式化就行了。文本框输入的数据,在保存前可先进行格式转换在写入数据库。相关资料给你看看,有写帮助的1.判断是否能转换成日期型数据:if not isdate(text1.text) then msgbox"你输入的不是日期!"IsDate函数
    语法
    IsDate(expression)
    说明
    以Boolean值返回一个表达式是否可以转换成日期。expression参数是一个必需的Variant、包含日期表达式或字符串表达式,
    如果表达式是一个日期,或可以作为有效日期识别,则IsDate返回True;否则返回False.
    在Windows中,有效日期的范围介于公元100年1月1日与公元9999年12月31日之间;其有效范围随操作系统不同而不同.2.日期格式转换
    Format函数
    Format(expression[,format[,firstdayofweek[,firstweekofyear]]])说明
    根据格式表达式中的指令来格式化参数其中expression是必需的任何有效的表达式.format是可选的有效的命名表达式或用户自定义格式表达式.firstdayofweek是可选的常数.firstweekofyear是可选的常数.
    firstdayofweek参数的设置如下所示:
    vbUseSystem:使用NLSAPI设置
    vbSunday:星期日(缺省)
    vbMonday:星期一
    vbTuesday:星期二
    vbWednesday:星期三
    vbThursday:星期四
    vbFriday:星期五
    vbSaturday:星期六
    firstweekofyear参数的设置如下所示:
    vbUseSystem:使用NLSAPI设置
    vbFirstJan:从包含一月一日的那一周开始(缺省)
    vbFirstFourDays:从本年第一周开始,而此周至少有四天在本年中
    vbFirstFullWeek:从本年第一周开始,而此周完全在本年中
    对于数字,该函数使用预先定义的命名数值格式或创建用户自定义数值格式.
    对于日期和时间,该函数使用预先定义的命名日期/时间格式或创建用户自定义日期/时间格式
    对于日期和时间序数,该函数使用日期和时间格式或数值格式
    对于字符串,该函数创建自定义的字符串格式例子
    Dim VarTime,VarDate,VarStr
    VarTime=#18:27:25#
    VarDate=#January7,2002#
    '以系统设置的长时间格式返回当前系统时间.
    VarStr=Format(Time,"LongTime")
    '以系统设置的长日期格式返回当前系统日期.
    VarStr=Format(Date,"LongDate")
    VarStr=Format(VarTime,"h:m:s")  '返回"18:27:25"
    VarStr=Format(VarTime,"hh:mm:ssAMPM") '返回"06:27:25PM"
    '如果没有指定格式,则返回字符串
    VarStr=Format(27)'返回"27"
    '以下为用户自定义的格式
    VarStr=Format(1234.5,"##,##0.00") '返回"1,234.50"
    VarStr=Format(334.9,"###0.00") '返回"334.90"
    VarStr=Format("VB","<") '返回"vb"
    VarStr=Format("vb",">") '返回"VB"3.日期计算
    DateDiff函数
    返回Variant(Long)的值,表示两个指定日期间的时间间隔数目.语法
    DateDiff(interval,date1,date2[,firstdayofweek[,firstweekofyear]])其中interval是必需的字符串表达式,表示用来计算date1和date2的时间差的时间间隔.date1和date2是必需的参数,代表计算中要用到的两个日期.Firstdayofweek是可选的参数.指定一个星期的第一天的常数.
    Firstweekofyear是可选的指定一年的第一周的常数.
    interval参数的设定值如下所示:
    Yyyy:年
    Q:季
    M:月
    Y:一年的日数
    D:日
    W:一周的日数
    Ww:周
    H:时
    N:分钟
    S:秒
    firstdayofweek参数的设定值如下所示:
    VbUseSystem:使用NLSAPI设置
    vbSunday:星期日(缺省值)
    vbMonday:星期一
    vbTuesday:星期二
    vbWednesday:星期三
    vbThursday:星期四
    vbFriday:星期五
    vbSaturday:星期六DateAdd函数以Variant类型返回包含在一个日期加上了一段时间间隔的结果.
    语法
    DateAdd(interval,number,date)其中Interval是必需的字符串表达式,是所要加的时间间隔.Number是必需的数值表达式,是要加上的时间间隔的数量,其数值可为正数(得到未来的日期),也可以为负数(得到过去的日期).Date是必需的Variant类型或表示日期的字符类型,该日期还加上了时间间隔.interval参数具有以下设定值:
    Yyyy:年
    Q:季
    M:月
    Y:一年的日数
    D:日
    W:一周的日数
    Ww:周
    H:时
    N:分钟
    S:秒
    示例:
    Dim FirstDate As Date     '声明变量.
    Dim IntervalType As String
    Dim Number As Integer
    Dim Msg
    IntervalType="d" '"d"指定以"日"作为间隔.
    FirstDate=InputBox("请输入日期:")
    Number=InputBox("请输入增加的天数")
    Msg="新的日期为:"&DateAdd(IntervalType,Number,FirstDate)
    Debug.Print Msg
      

  4.   

    这样处理一下就可以了:Private Sub cmdDelete_Click()   If IsDate(Text1.Text) = False Then
          Text1.Text = "00-1-1" '临时的日期/时间值
       End If
       
       Adodc1.Recordset.Delete
       Adodc1.Recordset.MoveLast
       
    End Sub