在单个子MS Access中的2个代码段中使用相同的变量

问题描述 投票:1回答:1

我正在制作一个允许用户处理合同升级的Access表单,在表单中我有一个按钮,可以更改每个合同的3个日期,连接日期,结束日期和最早的升级日期。

更改结束日期时,我使用此代码实际更改日期:

[End Date] = DateAdd("m", Number, FirstDate)

结束日期是我想要更改的日期,然后使用DateAdd添加日期,更改日期的月份,使用用户输入的数字(通常为24),然后FirstDate是当前结束日期。 FirstDate在代码的开头设置为变量。

我想改变它是这样的:

[End Date] = DateAdd("m", Number, Startdate)

它做的一切都是相同的,但是使用代码中较早使用的不同变量来更改合同的开始日期,这在代码段中起作用,但是当我尝试再次使用它时,代码崩溃了。

即使我将Startdate更改为[Date Connected],这种情况仍然会发生。

任何人都可以帮我解释为什么代码不会在第一次代码之后的代码部分中第二次使用Startdate变量。

这是代码发生的整个私有子,这是我想要使用的新代码:

Private Sub cmdUpgrade_Click()

Dim Startdate As String
Dim Number As String
Dim Tariff As String

Startdate = InputBox("Enter Start Date (00/00/0000):", "Inputbox")
If StrPtr(Startdate) = 0 Then
MsgBox "You pressed Cancel" 'Option 1
Else
If Startdate = "" Then
MsgBox "Input Left Empty" ' Option 2
Else
[Date Connected] = Startdate
End If
End If


Number = InputBox("Enter Contract Length + Rollover:", "Inputbox")
If StrPtr(Number) = 0 Then
MsgBox "You pressed Cancel" 'Option 1
Else
If Number = "" Then
MsgBox "Input Left Empty" ' Option 2
Else
**[End Date] = DateAdd("m", Number, Startdate)**
[Earliest Upgrade] = DateAdd("d", -180, [End Date])
End If
End If

Tariff = InputBox("Enter Tarrif", "Inputbox")
If StrPtr(Tarrif) = 0 Then
MsgBox "You pressed Cancel" 'Option 1
Else
If Tariff = "" Then
MsgBox "Input Left Empty" ' Option 2
Else
[Current Talk Plan] = Tariff
End If
End If

Forms!frmForecast.Form.Requery
DoCmd.SearchForRecord , , acFirst, "Year([Earliest Upgrade]) = Year(Date())                 
And Month([Earliest Upgrade]) = Month(Date())"
End Sub
ms-access access
1个回答
1
投票

始终将日期作为日期而不是字符串处理。此外,如果用户按下取消或空输入,则无关紧要:

Dim Startdate As Date
Dim Enddate As Date
Dim TestDate As String
Dim Number As String
Dim Tariff As String

TextDate = InputBox("Enter Start Date (00/00/0000):", "Inputbox")
If TextDate = "" Then
    MsgBox "No date entered" 'Option 1
ElseIf Not IsDate(TextDate) Then
    MsgBox "Please enter a valid date" ' Option 2
Else
    Startdate = DateValue(TextDate)
    [Date Connected] = Startdate
End If

<snip>

Enddate = DateAdd("m", Number, Startdate)
[End Date] = Enddate
[Earliest Upgrade] = DateAdd("d", -180, Enddate)
© www.soinside.com 2019 - 2024. All rights reserved.