Office中国论坛/Access中国论坛

标题: 新手求助,改写代码。 [打印本页]

作者: boy1    时间: 2009-1-12 09:52
标题: 新手求助,改写代码。
rs.Open "表1", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
    rst.Open "表2", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    Do While Not rs.EOF
        If IsNull(rs.Fields(rs.Fields.Count - 1)) Then
            strTemp = "2008-1-1"
            Else
            strTemp = rs.Fields(rs.Fields.Count - 1)
         End If

        dtmArray() = Split(Replace(strTemp, ".", "-"), "/")
        For I = 0 To UBound(dtmArray)
            With rst
                .AddNew
                For J = 0 To rs.Fields.Count - 3
                    .Fields(J) = rs.Fields(J)   
                Next
                .Fields(J) = Replace(rs.Fields(J), ".", "-")
                .Fields(J + 1) = CDate(dtmArray(I))
                .Update  '保存
            End With
        Next
        rs.MoveNext
红字部分为最后一列,为null的情况则变量为"2008-1-1",我现在想加一个条件。
1.倒数第二列,也为null的情况则变量为"2008-1-1"该如何改写代码? (请各位指导,谢谢)

[ 本帖最后由 boy1 于 2009-1-12 09:53 编辑 ]
作者: Henry D. Sy    时间: 2009-1-12 09:55
倒数第二列的字段索引
rs.Fields.Count - 2
作者: boy1    时间: 2009-1-12 10:17
标题: 这样改写还出错?请版主帮我看看
rs.Open "表1", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
    rst.Open "表2", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    Do While Not rs.EOF
        If IsNull(rs.Fields(rs.Fields.Count - 1)) or IsNull(rs.Fields(rs.Fields.Count - 2))Then
            strTemp = "2008-1-1"
            Else
            strTemp = rs.Fields(rs.Fields.Count - 1)
            strTemp = rs.Fields(rs.Fields.Count - 2)

         End If
             dtmArray() = Split(Replace(strTemp, ".", "-"), "/")
        For I = 0 To UBound(dtmArray)
            With rst
                .AddNew
                For J = 0 To rs.Fields.Count - 3
                    .Fields(J) = rs.Fields(J)   
                Next
                .Fields(J) = Replace(rs.Fields(J), ".", "-")
                .Fields(J + 1) = CDate(dtmArray(I))
                .Update  '保存
            End With
        Next
        rs.MoveNext

.Fields(J) = Replace(rs.Fields(J), ".", "-") 提示出错

[ 本帖最后由 boy1 于 2009-1-12 10:28 编辑 ]
作者: Henry D. Sy    时间: 2009-1-12 10:21
If IsNull(rs.Fields(rs.Fields.Count - 1)) Then
            strTemp1 = "2008-1-1"
            Else
            strTemp1 = rs.Fields(rs.Fields.Count - 1)
end if
           
if IsNull(rs.Fields(rs.Fields.Count - 2)) then
strTemp 2= "2008-1-1"
            Else
            strTemp2 = rs.Fields(rs.Fields.Count - 2)
         End If
作者: boy1    时间: 2009-1-12 10:30
标题: 筛选后没有任何数据。
原帖由 Henry D. Sy 于 2009-1-12 10:21 发表
If IsNull(rs.Fields(rs.Fields.Count - 1)) Then
            strTemp1 = "2008-1-1"
            Else
            strTemp1 = rs.Fields(rs.Fields.Count - 1)
end if
           
if IsNull(rs.Fields(rs. ...


这个写法也试过,运行正常。不知道是什么原因。

筛选后没有任何数据。

[ 本帖最后由 boy1 于 2009-1-12 10:38 编辑 ]
作者: Henry D. Sy    时间: 2009-1-12 10:34
strTemp是什么型的
作者: boy1    时间: 2009-1-12 11:04
标题: 文本
原帖由 Henry D. Sy 于 2009-1-12 10:34 发表
strTemp是什么型的


文本
作者: Henry D. Sy    时间: 2009-1-12 11:10
搞不懂你什么意思
有看到您给strTemp赋值,但没有看到调用strTemp
作者: boy1    时间: 2009-1-12 11:21
原帖由 Henry D. Sy 于 2009-1-12 11:10 发表
搞不懂你什么意思
有看到您给strTemp赋值,但没有看到调用strTemp


If IsNull(rs.Fields(rs.Fields.Count - 1)) Then
            strTemp1 = "2008-1-1"
            Else
            strTemp1 = rs.Fields(rs.Fields.Count - 1)
end if

           
if IsNull(rs.Fields(rs.Fields.Count - 2)) then
strTemp 2= "2008-1-1"
            Else
            strTemp2 = rs.Fields(rs.Fields.Count - 2)
         End If
单独执行红字部分,程序正常。请问版主如何调用strTemp
作者: boy1    时间: 2009-1-12 11:29
标题: 上传个文件,给版主看看
如何调整。拜托版主,辛苦了
作者: Henry D. Sy    时间: 2009-1-12 13:18
ssssss
作者: boy1    时间: 2009-1-12 13:26
标题: 谢版主指导。非常感谢。
谢版主指导。明白了。

[ 本帖最后由 boy1 于 2009-1-12 13:52 编辑 ]




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