设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2937|回复: 11
打印 上一主题 下一主题

[查询] 新手求助,改写代码。

[复制链接]
跳转到指定楼层
1#
发表于 2009-1-12 09:52:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-1-12 09:55:56 | 只看该作者
倒数第二列的字段索引
rs.Fields.Count - 2
3#
 楼主| 发表于 2009-1-12 10:17:12 | 只看该作者

这样改写还出错?请版主帮我看看

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 编辑 ]
4#
发表于 2009-1-12 10:21:31 | 只看该作者
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
5#
 楼主| 发表于 2009-1-12 10:30:03 | 只看该作者

筛选后没有任何数据。

原帖由 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 编辑 ]
6#
发表于 2009-1-12 10:34:33 | 只看该作者
strTemp是什么型的
7#
 楼主| 发表于 2009-1-12 11:04:46 | 只看该作者

文本

原帖由 Henry D. Sy 于 2009-1-12 10:34 发表
strTemp是什么型的


文本
8#
发表于 2009-1-12 11:10:53 | 只看该作者
搞不懂你什么意思
有看到您给strTemp赋值,但没有看到调用strTemp
9#
 楼主| 发表于 2009-1-12 11:21: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
10#
 楼主| 发表于 2009-1-12 11:29:16 | 只看该作者

上传个文件,给版主看看

如何调整。拜托版主,辛苦了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 19:42 , Processed in 0.116738 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表