【问题标题】:Visual Basic - Execute a code every last day of the monthVisual Basic - 每个月的最后一天执行一个代码
【发布时间】:2014-07-15 03:21:59
【问题描述】:

我正在开发一个带有会计系统的库存,我有一个代码可以获取每个月的开始/结束库存并将其保存到我的数据库(SQL Server 2008)。

如果日期是正好当月的最后一天,我的系统现在能够获取每个月的开始/结束库存。

例如,如果今天是 2014 年 6 月 30 日,那么当用户登录系统时,我的代码将执行。现在,我的问题是,如果一个月的最后一天是非工作日,那么用户将不会使用系统,可能会在下一个工作日使用它。

我使用 DateSerial(Year(Date.Now), Month(Date.Now) + 1, -1) 来获取当月的最后一天。

如果日期是当月的最后一天或更晚,我需要执行我的代码。

【问题讨论】:

  • 需要更精确一些 - 每天都是当月的最后一天或更长时间。
  • 您的代码是否生成 txt 日志?如果没有,您可能想添加简单的代码来创建一个带有代码执行日期的空白 txt 文件。然后根据需要更改您的代码以检查最近的执行和操作。您是否考虑过用户在应该备份的那一天注销并重新登录?
  • @Dale M - 如果日期是当月的最后一天或更大,我需要执行我的代码。例如今天是 2014 年 6 月 15 日,那么我的代码将不会执行但如果它是 2014 年 6 月 30 日等等,那么它会执行。
  • @PatricK 我的代码不会生成 txt 日志。我不熟悉它,但我会尝试,因为你所说的,我有一个想法。谢谢
  • 但 7 月 15 日比 6 月 30 日大。

标签: vb.net visual-studio-2010 sql-server-2008 vba


【解决方案1】:

答案就在您的问题中。您正在写入 SQL Server 中的表,我假设这是与相关月份的日期。编写一小段代码来获取存储在表中的最大日期,将其与今天的日期进行比较,并在适当的情况下运行代码。

今天是 2014 年 7 月 15 日,如果您表中的 MAX 是 2014 年 6 月 30 日,则什么也不做,如果是 2014 年 5 月 31 日,则运行您的代码。

【讨论】:

  • 我明白了你所说的,但就像我在问题中所说的一样。如果该月的最后一天是假期或公司因某种原因关闭,那么系统将不会被使用。如果那天是 2014 年 6 月 30 日。公司将在下一个工作日使用该系统,例如 2014 年 7 月 1 日。这意味着 2014 年 6 月的期末库存不会存储在我的数据库中。
  • 但是如果公司在6月30日关门,那么第二天开仓的期初库存不能改变。老实说,我认为您的模型存在更大的问题 - 如果我在 7 月 4 日更改了 6 月 23 日的销售,您的 6 月期末库存会发生什么情况?
【解决方案2】:

谢谢大家,我用这段代码解决了我的问题

我检查今天的日期是否等于当月的最后一天。

如果 Format(Date.Now, "MM/dd/yyyy") = DateSerial(Year(Date.Now), Month(Date.Now) + 1, 0) 那么

//get the last day of the current month

monthdate = DateSerial(Year(Date.Now), Month(Date.Now) + 1, 0) 

其他

//get last day of the previous month

monthdate = DateSerial(Year(Date.Now), Month(Date.Now) + 0, 0)

如果结束

然后我有一个查询将检查我的表是否已经有一个等于monthdate的日期

如果有

退出子

否则执行将获取/插入最终库存的代码。 :D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    相关资源
    最近更新 更多