选上寄生虫预防的推荐月 :      1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
                                □  □  □  □  □  □  □  □  □  □   □    □
要求在数据库中用一个字段存放它们的状态。在这个字段中是用0和1字符组成的字符串来表示的。字符串的第一位对应1月状态,第一位为0时代表1月下面的那个复选框没选,为1时代表1月下面的那个复选框选上了。字符串的第二位对应2月状态,第二位为0时代表2月下面的那个复选框没选,为1时代表2月下面的那个复选框选上了。依此类推,请问怎样把状态存入数据库中,又怎样从数据库中读出呢整个意思也就是:怎样根据0和1组成的字符串在字段中的存放状态来判断一组复选框的值,反过来怎样根据一组复选框的值后用0和1组成的字符串存入一个字段中

解决方案 »

  1.   

    直接存为一个以0和1组成的字符串,比如说所有单数月都选中,那么存为:
    101010101010,
    存入时就按字符串存入即可。
    读取时,先按字符串读取,然后进行分析:
    代码如下:
    '检查月份是否选中的代码,选中为1,否则为0
    Private Function CheckMonth(strMonthData As String, intIndex As Integer) As Integer If Mid(strMonthData, intIndex, 1) = "1" Then
        CheckMonth = 1
     Else
        CheckMonth = 0
     End IfEnd Function'给checkbox打上勾的代码,需要添加12个checkbox控件,使用控件数组(0-11)
     Dim i As Integer
     
     For i = 1 To 12
     
         Check1(i - 1).Value = CheckMonth(Text1.Text, i)
         
     Next i
    反过来获取checkbox状态的代码,和这个差不多,我就不写了。
      

  2.   

    读值:
    a = rs!options
    for i = 0 to 11
       check1(i) = a And 2 ^ i
    Next i取值:
    a = 0
    for i = 0 to 11
       a = a + check1(i) * 2 ^ i
    Next i
      

  3.   

    不必用字符串,处理起来慢。直接用 Integer 就可以。
      

  4.   

    不必用字符串,处理起来慢。直接用 Integer 就可以。
      

  5.   

    其实就是将12个check的值组合成一个字符串存到数据库里,要显示的时候再将数据库中的这个字符串分开附给这12个check.
      

  6.   

    存的时候应该好解决吧。从数据库中取出来的时候是一个串。这样的话你可以定义一个12位的数组。用Split()函数来分割这个字符串,详细的可以看MSDN。这样就把一个串分成12个数了。我没测试的环境不过
    Dim strVrt, strtmpone() As String
    strtmpone=Split(strVrt,"")
    应该可以实现你的要求