スクリプト タスクに次のコードがあります。
Public Sub Main()
'
' Add your code here
'
Dim MonthFromSQL As String
Dim lastMonth As New Date(DateTime.Today.Year, DateTime.Today.Month - 1, 1)
Dim rcnt As Integer
Dim msg As String
'MsgBox("Month name from SQL is " & CStr(Dts.Variables("MonthNameFromSQL").Value))
rcnt = CInt(Dts.Variables("RowCount").Value)
If rcnt = 0 Then
msg = "Job returned 0 rows for month " & CStr(MonthName(lastMonth.Month, False)) & " - check with database operator that previous month's data has been loaded into the database."
Else
msg = "Job returned " & rcnt & " rows - Job Finished"
End If
'Pass message variable value out to be used in message
Dts.Variables("EmailMessage").Value = msg
Dts.TaskResult = Dts.Results.Success
End Sub
IF ステートメントを以下のように変更して、SQL DB からの月の値をシステムの月の値と照合できるようにすると、次のような DTS スクリプト エラーが表示されます。
変数 "User::EmailMessage" に割り当てられている値の型が、現在の変数の型と異なります。実行中に変数の型を変更することはできません。Object 型の変数を除いて、変数の型は厳密です。
'First check month name from sql match system last month name
If CStr(MonthName(lastMonth.Month, False)) = CStr(Dts.Variables("MonthNameFromSQL").Value) Then
MsgBox("Month name variable equals last month value")
If rcnt = 0 Then
msg = "Job returned 0 rows for month " & CStr(MonthName(lastMonth.Month, False)) & " - check with outpatient database operator that previous month's data has been loaded into the database."
Else
msg = "Job returned " & rcnt & " rows - Job Finished"
End If
Else
'Put in code to handle if month values do not match
End If
私は置き換えました:
If CStr(MonthName(lastMonth.Month, False)) = CStr(Dts.Variables("MonthNameFromSQL").Value) Then
MsgBox("Month name variable equals last month value")
と:
If 1=1 Then
MsgBox("Month name variable equals last month value")
単純な比較ステートメントで動作することを確認するだけで、IF ステートメントに含まれていたコードと関係があることを確認できました。エラーメッセージ。
だから私はそれが何かに関係していることを理解しています:
If CStr(MonthName(lastMonth.Month, False)) = CStr(Dts.Variables("MonthNameFromSQL").Value) Then
montNameFromSQL には、前の SQL タスクの結果セットが取り込まれます。このスクリプトでは、それを使用してシステムの月名をチェックしています。これらの値を確認し、一致する場合は成功し、返された行を確認して、メール タスクに送信するメッセージを入力します。
願わくば、それがシンプルで新鮮な目で見分けられるものであることを願っています!
ありがとう
アンドリュー