点击工具栏上的某一个按钮,执行一些操作,当我在这个按钮的处理代码处设了断点之后,程序能正确执行,可是一把断点去掉,无论你怎么点击,这段代码就是不执行,这是为什么啊?这个问题困挠我近半个月了,哪位高手指点一二?另外,请问在VB中如何根据当前日期得到这是一年中的第几周?

解决方案 »

  1.   

    返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。语法DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])DateDiff 函数语法中有下列命名参数:部分 描述
    interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔
    Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。
    Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。
    firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。
    设置interval 参数的设定值如下:设置 描述
    yyyy 年
    q 季
    m 月
    y 一年的日数
    d 日
    w 一周的日数
    ww 周
    h 时
    n 分钟
    s 秒
    firstdayofweek 参数的设定值如下:常数 值 描述
       
    vbUseSystem 0 使用 NLS API 设置。
    vbSunday 1 星期日(缺省值)
    vbMonday 2 星期一
    vbTuesday 3 星期二
    vbWednesday 4 星期三
    vbThursday 5 星期四
    vbFriday 6 星期五
    vbSaturday 7 星期六
    firstweekofyear 参数的设定值如下:常数 值 描述
       
    vbUseSystem 0 用 NLS API 设置。
    vbFirstJan1 1 从包含 1 月 1 日的星期开始(缺省值)。
    vbFirstFourDays 2 从第一个其大半个星期在新的一年的一周开始。
    vbFirstFullWeek 3 从第一个无跨年度的星期开始。
    说明DateDiff 函数可用来决定两个日期之间所指定的时间间隔数目。例如,可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底还有多少个星期。为了计算 date1 与 date2 相差的日数,可以使用“一年的日数”(y) 或“日”(d)。当 interval 是“一周的日数”(w) 时,DateDiff 返回两日期间的周数。如果 date1 
    是星期一,DateDiff 计算到 date2 为止的星期一的个数。这个数包含 date2 但不包含 date1。不过,如果 interval 是“周”(ww),则 DateDiff 函数返回两日期间的“日历周”数。由计算 date1 与 date2 之间星期日的个数而得。如果 date2 刚好是星期日,则 date2 也会被加进 DateDiff 的计数结果中;但不论 date1 是否为星期日,都不将它算进去。如果 date1 比 date2 来得晚,则 DateDiff 函数的返回值为负数。firstdayofweek 参数会影响使用时间间隔符号 搘攠 或 搘w攠 计算的结果。如果 date1 或 date2 是日期文字,则指定的年份成为该日期的固定部分。但是,如果 date1 或 date2 用双引号 (" ") 括起来,且年份略而不提,则在每次计算表达式 date1 或 date2 时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。在计算 12 月 31 日和来年的 1 月 1 日的年份差时,DateDiff 返回 1 表示相差一个年份,虽然实际上只相差一天而已。
      

  2.   

    MsgBox DateDiff("ww", "2003-01-01", "2003-01-15")
      

  3.   

    第二个问题:
    放一个MonthView控件,Visible属性设为false
    把日期赋给它的value属性,然后读该控件的week属性,就可以了。
      

  4.   

    Private Sub tbToolBar_ButtonClick(ByVal Button As MSComctlLib.Button)
        Dim Response As Variant
        Dim UniqueId As String
        
        Select Case Button.Key
        Case "数据备份"
             Call mnu_bfsj
        Case "数据恢复"
             Call mnu_hfsj
        Case "清空数据"
             Call mnu_qksj
        Case "添加记录"
             FrmBasicInfAdd.Show vbModal
        Case "修改记录"
            MsgBox "aaa"        If FrmMain.grdTab.MouseRow <> 0 And FrmMain.grdTab.Rows <> 2 Then             UniqueId = FrmMain.grdTab.TextMatrix(lngRow, 10)
                ModData "FrmMain", UniqueId
            Else
              Exit Sub
            End If    Case "删除记录"        If grdTab.MouseRow <> 0 Then '如果点击的不是标题            UniqueId = grdTab.TextMatrix(lngRow, 10)
                Response = MsgBox("你确定要删除编号为'" & UniqueId & "'的记录信息吗?", vbYesNo + vbQuestion + vbDefaultButton1, "确认提示")
                If Response = vbYes Then
                    DelData "FrmMain", UniqueId
                End If
            Else
             Exit Sub
            End If    End Select
    End Sub大家请看上述代码,如果我在“修改记录”的处理代码中加上那句“MsgBox "aaa"
    ”,则程序执行完全正常,可去掉这个msgbox就什么也没反应,如果不写这个msgbox,那么在此设置断点时执行正常,去掉断点就又没反应了,“删除记录”按钮现象与此相同,这究竟是为什么呀?我都快急死了,谁知道原因?
      

  5.   

    你是用Debug.print试试就知道有没有经过了,
    还有两种可能,
    1、你中病毒了
    2、需要时间,你加入Sleep 或者Doevents试试
      

  6.   

    我来乱说几句,很可能不对
    0_0
    应该是出错了,还设置成出错时继续执行后面的操作。
    但在测试时不一定报告出错,因为环境不一样。具体说,可能是引用‘FRMMAIN’或‘GRDTAB’造成的。
    建议:在执行关键句之前先清除错误标志,执行完再检查。
      

  7.   

    to Greaitm(夜草) :麻烦你能不能再说详细些,比如对于我上面的程序,具体该怎么处理呢?其它人说的方法我都试过了,不行,现在就差你的不知怎么试了。我的修改窗体在load时还要根据参数,从数据库中取一堆数呢,象您说的在运行和编译之前显示具体该怎么操作?
      

  8.   

    最近我发现一个怪问题:
    我调用单个参数的方法时用了 Func(x)的形式结果编译出来的程序有点怪问题,(调试的时候正常),后来该会Func x 就正常了,这点信息可能对你有用。