我在ACCESS的编程中...出现一个问题.我定义一个数组...DIM DAY(5) AS STRING在程序中.我直接书写DAY(1)...DAY(2).....没有问题...当我定义一个变量I.来对这个数组进行循环的时候:
DIM I AS INTEGER
dim day(5) as string
FOR I=1 TO 5 STEP 1 
If Not IsNull(Tb![day(i)]) Then    在这里..DAY(为数字)不出错.DAY(I) 出错了...
语句块....
end if
next
我想请教一下是不是我书写上有问题.我应该如何书写...我将DAY(I)代入查询中也出错...问题出在哪里!!!!苦闷!!!!

解决方案 »

  1.   

    I为0到4也不行...上面有个地方写错.改正一下..不好意思...当DAY(I)和DAY(1)都不行...一定要写成DAY1才可以....
      

  2.   

    数据库的字段名称没有下标的,不能用数组可以这样试试:If Not IsNull("Tb!day" & i) Then    
      

  3.   

    我按楼上的大哥[xiaoxiaoP(小小)]的方法书写程序的确不报错了...但我调试了一下程序...得出来的结果却是不对的...为了能快速的调试..我将I的值直接定成5.(I=5).把原语句:
    If Not IsNull(Tb![day5]) Then
    改成了:
    IF NOT ISNULL("TB!DAY"&I) THEN
    程序可以进行.只是结果无法正确的判断.执行原程序.DAY5为空的...换成现在的书写方式得出的结果却是不为空的...
      

  4.   

    day是函数
    重新定义数组变量名称
    dim iDay(5) as string
    dim i
    for i=0 TO 4  
        If Not IsNull(Tb![iDay(i)]) Then
            ......
        end if
    next i
      

  5.   

    要这样操作表的.If Not IsNull(Tb.Fields(day(I)).Value) Then
      

  6.   

    回复vbman2003(家人):
    我提取的是数据库的列名.所以无法重新定义数组名称...而且我现在已经取消定义数组...只设定了一个变量I.用来对数据库列名DAY1-DAY5之间的循环.但是还是无法正常的将变量与列名相连接..
      

  7.   

    回复tztz520(午夜逛街):
    我按兄台的方法进行了修改.判断结果是错误的...但程序可以顺利运行.我把我写的这段原程序放上来.给大家看看吧.
    Dim i As String
    i = 5
    If Not IsNull(Tb![day(i)]) Then
    Me.lblDay5.Caption = "day5"
    Me.lblDay4.Caption = "day4"
    Me.lblDay3.Caption = "day3"
    Me.lblDay2.Caption = "day2"
    Me.lblDay1.Caption = "day1"
    End If
    按上面写的这段是无法执行程序的...出错语句就是If Not IsNull(Tb![day(i)]) Then上面.
    If Not IsNull(Tb![day5]) Then
    Me.lblDay5.Caption = "day5"
    Me.lblDay4.Caption = "day4"
    Me.lblDay3.Caption = "day3"
    Me.lblDay2.Caption = "day2"
    Me.lblDay1.Caption = "day1"
    End If
    按这个的写法...可以运行程序.结果也正确.DAY5是为空的.不会在报表上打印任何一个标签名称.
    Dim i As String
    i = 5
    If Not IsNull(Tb.Fields(day(i)).Value) Then
    Me.lblDay5.Caption = "day5"
    Me.lblDay4.Caption = "day4"
    Me.lblDay3.Caption = "day3"
    Me.lblDay2.Caption = "day2"
    Me.lblDay1.Caption = "day1"
    End If
    按您的修改方法.我对程序做了如上的修改.程序可以运行.但是却打印出了5个标签...似乎没有去判断数据库中的列....
      

  8.   

    for i=0 to 4
        if IsNull(Tb.Fields(day(i)).Value)=false then
            debug.print "day" & i+1
        end if
    next i
      

  9.   

    回复tztz520(午夜逛街):
    刚我对程序做了进一步的修改:
    Dim i As String
    i = 5
    If Not IsNull(Tb.Fields("day"&i)) Then
    Me.lblDay5.Caption = "day5"
    Me.lblDay4.Caption = "day4"
    Me.lblDay3.Caption = "day3"
    Me.lblDay2.Caption = "day2"
    Me.lblDay1.Caption = "day1"
    End If
    程序可以顺利的运行且结果正确.其中VALUE好像可省略不写.非常感谢~您将得到您应得的分数.
    至于上面的程序.因为我是初学的原因...不能完全看懂:
    for i=0 to 4
        if IsNull(Tb.Fields(day(i)).Value)=false then :判断DAY(I)为空是否错误.如果错误则运行下面的语句块.
            debug.print "day" & i+1   :这句我看不懂...DUBUG在这里起到个什么作用?
        end if
    next i
      

  10.   

    debug是调试用了,将结果显示到"立即窗口"中.