如何使用sql数据库中的数据设置事件

6ss1mwsb  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(304)

我编写了一些简单的程序,在datagridview中显示一些信息。最重要的信息是过期日期,当过期日期临近时(比如5天),我会设法将它涂成彩色。负责人的数据库里有一封电子邮件。我使用sql数据库。什么代码只发送电子邮件给他们的产品即将到期的人?如果我调用函数 send_mail() 在将行涂成红色的代码中,它向一个人发送无限多封邮件。这是我的密码:

Private Sub dgvExcel_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting

    If CDate(DataGridView1.Rows(e.RowIndex).Cells(DataGridView1.Columns(5).Index).Value) <= Date.Now Then
        e.CellStyle.BackColor = Color.Red
        'send_mail()
    End If

    If CDate(DataGridView1.Rows(e.RowIndex).Cells(DataGridView1.Columns(4).Index).Value) <= Date.Now Then
        e.CellStyle.BackColor = Color.White
        e.CellStyle.ForeColor = Color.Black
    End If

End Sub
t8e9dugd

t8e9dugd1#

您应该枚举网格数据绑定到的数据表,并向相关人员发送电子邮件。此进程应按指定的计划启动,例如单击按钮,或在启动带有命令行参数的程序时启动

For Each ro as DataRow in dataTableToWhichTheDgvIsBound
  If((DateTime.Now - DirectCast(ro("expiration_date"), DateTime)).TotalDays < 5 Then
    SendEmail(ro("owner_email").ToString(), $"Your thing with id{ro("id")} is about to expire on {(ro("expiration_date"):yyyy-MM-dd HH:mm)}" )
Next ro

或者,如果您使用的是强类型数据表,它看起来会更好一些:

For Each ro in dataTableToWhichTheDgvIsBound
  If((DateTime.Now - ro.expiration_date).TotalDays < 5 Then
    SendEmail(ro.owner_email, $"Your thing with id{ro.id} is about to expire on {(ro.expiration_date:yyyy-MM-dd HH:mm)}" )
Next ro

您可以通过单击按钮或在应用程序启动时(在用data0加载datatable之后,可能通过使用 My.Application.CommandLineArgs 看看它是否包含 /autosendexpiryemails 论据等

相关问题