| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1283 人关注过本帖
标题:哪位能给我解答一下这个问题?
只看楼主 加入收藏
leon84811
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-12-28
收藏
 问题点数:0 回复次数:7 
哪位能给我解答一下这个问题?
一、有个日期表,其中内容如下:
2007年12月20日 对应 A
2007年12月21日 对应 B
2007年12月22日 对应 C
...
二、先取系统当前日期(就取日期不取时间),然后把当前日期往后推20天,(如今天是12月1日,那就把这个值加20,也就是把当取的值变为12月21日)然后再进入日期表内,和日期表内的日期对应执行相应的值(12月21日就执行B)。

当前日期--(往后推20日)-- 新值 --找对应的值--执行
12月1日 -- (后20天) --12月21日 --对应 B --执行B

注意,这个会跨月份及年份。并不一定是在12月.


本来我想通过批处理编的,但是一分析下来发现代码会很多,所以想通过VB来实现,现在我已经搞了个小代码来推日期:
@echo off
>tmp.vbs echo wscript.echo dateadd("d",20,date)
for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo tmp.vbs') do (
set /a "y=%%i,m=%%j,d=%%k"
)
for /f "tokens=1* delims= " %%a in (日期表.txt) do (
if /i "%%a"=="%y%年%m%月%d%日" echo %%b
)
tmp.vbs  
del tmp.vbs

也是批处理的,呵呵,但下面我不知道怎么进行,有高人来帮我指点指点吗?
搜索更多相关主题的帖子: 年份 解答 系统 时间 
2007-12-28 15:51
ouzhiguang
Rank: 1
来 自:湖南长沙
等 级:新手上路
威 望:1
帖 子:240
专家分:0
注 册:2007-5-18
收藏
得分:0 
本人的理解水平有限,能不能说清楚是什么意思?
  怎么个往后推20天 执行的是事件还是什么东西?
  还有是不是所有的日期都从今天的日期开始往后推20天,然后再进日期表中 找对应的操作;
  还有就是 日期表是不已经做好了的?
2007-12-28 17:08
leon84811
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-12-28
收藏
得分:0 
回复 2# 的帖子
是取今天的日期,都从今天的日期开始往后推20天,然后再进日期表中 找对应的值,
本来那个所对应的A,B,等等 是一个值,但其实我是要这个值,在接下来的语句中用到,接下来执行的是一个SQL的语句,也就是更改SQL2000里的一个数据库里的一张表里的一个值,呵呵,好像太复杂了,SQL语句是通过批处理实现,比如A是abc:
@echo off
isql -U iss -P iss -d youku -Q "update t_system set value='abc' where id='1'
isql -U iss -P iss -d youku -Q "update t_system set value='abc' where id='new'
日期表的内容如下:
2007年12月20日 对应 A
2007年12月21日 对应 B
2007年12月22日 对应 C
。。。。。
这个日期表我没做,不过现在是保存在TXT文档里,格式就是上面那种。
2007-12-28 17:22
刨子头
Rank: 1
等 级:新手上路
威 望:1
帖 子:319
专家分:0
注 册:2007-9-24
收藏
得分:0 
对的,就是用dateadd函数实现
2007-12-28 17:54
leon84811
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-12-28
收藏
得分:0 
怎么没人帮我呢?
是我说得不清楚还是什么?帮帮我呀~
2007-12-28 20:36
a59936758
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-4-13
收藏
得分:0 
我不太理解你说的什么意思。
不过VB中获取当前日期加天数的语句是楼上 说的。 例子 DateAdd("d", 20, Date)'日期加20天
Private Sub Command1_Click()
Dim b As Integer
b = Mid(Date, 9, 2)
Text2.Text = b
 If b < 3 Then
Text1.Text = DateAdd("d", 20, Date)
Else
MsgBox "超过22号"
End If

End Sub

[[italic] 本帖最后由 a59936758 于 2007-12-29 09:31 编辑 [/italic]]

咋学学不会.还就偏要学
2007-12-29 09:03
leon84811
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-12-28
收藏
得分:0 
再说明白点
我再说明白点吧,之所以取后20天的日期,是为了找到那天所以对应的值,也就是上面所说的日期表里对应,值找到了,就把它代入到我的SQL修改语句中:
@echo off
isql -U iss -P iss -d youku -Q "update t_system set value='20天后的值' where id='1'
isql -U iss -P iss -d youku -Q "update t_system set value='20天后的值' where id='new'


这个就是我的思路,也放还不完整,但是很希望各位大侠能帮帮我,我怎么也想不出如何实现。
2007-12-29 10:49
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:0 
ACCESS和SQL Server中还是有区别的,dateadd(datepart, number, date), datapart指定对那一部分加,number知道加多少,date指定在谁的基础上加。number参数不说了,这里是20,date参数可以指定值,也可用获取当前时间的函数getdate(),比如,明天=dateadd(day,1, getdate())

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2007-12-29 14:44
快速回复:哪位能给我解答一下这个问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059600 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved