誰かが私を助けてくれるだろうか。私はプログラミングと開発に非常に慣れていないため、これがばかげた質問である場合は申し訳ありませんが、現在取り組んでいるプロジェクトにかなりこだわっています。
データベースから情報を取得するために 1 日 1 回実行する予定の WinForms アプリケーションをコーディングしています。これから、特定の基準が満たされた場合、建物内の個人に自動的にメールを送信することです。メッセージ本文には、データグリッドに取り込まれたさまざまな詳細が含まれます。
現在、電子メールの生成を担当するサブシステムに詳細を転送しようとすると、アプリケーションがクラッシュします (一部の変数が「Null」として返され、文字列に変換できないため)。以下のように、Null として返された場合に変数に文字列を割り当てる If ステートメントを実装しようとしています。
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles RunTimer.Tick
years = My.Settings.Years.Split(",")
If TimeOfDay = "09:00:00" Then
Using cn As New SqlClient.SqlConnection
cn.ConnectionString = constr
cn.Open()
SQLstr = "long SQL string that works as have run it in WinSQL"
Using command As New SqlClient.SqlCommand(SQLstr, cn)
command.CommandTimeout = 0
command.CommandText = SQLstr
Using drd As SqlClient.SqlDataReader = command.ExecuteReader
While drd.Read
If Not drd("Joined Date") Is DBNull.Value Then
Dim memberyears As Integer = DateDiff(DateInterval.Year, drd("Joined Date"), Now)
Dim element As Integer
For element = 0 To years.GetUpperBound(0)
If years(element) = memberyears Then
Label1.Text = "Sending email"
End If
If Not drd("City") Is DBNull.Value Then
drd("City") = "Bleh"
End If
SendEmail(years(element), drd("Shop Name"), drd("Contact Name"), drd("Shop ID"), drd("Business Name"), drd("Address 1"), drd("Address 2"), drd("Address 3"), drd("District"), drd("City"), drd("County"), drd("Shop Postal Code"), drd("ASM"))
Next
End If
End While
End Using
End Using
End Using
Else
Label1.Text = "Skipped"
Exit Sub
End If
End Sub
If
私が取り組んでいるステートメントは次のとおりです。
If Not drd("City") Is DBNull.Value Then
drd("City") = "Bleh"
End If
ただし、プロパティ 'Item' が ReadOnly であるため、返されるだけです。これについて何か助けていただければ幸いです。