私は電子メールを自動的に呼び出すシステムを持っています。 私がしたいのは、今日のシステムトラップが、私は の異なるテーブルを1つの電子メールで作成したいと思っています。別のテーブルを1つのメールに追加する
現在のところ、私のシステムは1日あたりの電子メールを呼び出すことができます。
これは私が達成したいものです。
「有効期限製品の一覧を火曜日の表は、」(同じ火曜日と木曜日に)
火曜日 - 「水曜日の有効期限製品のリスト」:
例今日は、システムがお送りします月曜日です
水曜日 - "木曜日の有効期限製品の一覧"
木曜日 - 「金曜日の有効期限製品の一覧」
、私はこのような3日間の有効期限製品のリストを電子メールで送信したい日が金曜日であれば:以下
の有効期限が切れる製品のリストがあります土曜日から月曜日。 (各日は1つのメールで異なる表があります)このように:現在のところ、私のシステムは1日にメールを送信できます。私はどのように私は 金曜日の電子メールの爆発のための出力を達成するつもりかもしれないのか分からない。ここで
は、私がこれまで持っているものです:
私は2つの異なるサブクラスを作成しました。私の1つのサブクラスは、月曜日から木曜日の のメール設定で、もう1つは金曜日のメール設定で、3日ごとに異なるテーブルを構成しています。
Sub EmailMondayThursday
Dim ds As New DataSet
Dim cmd As New SqlCommand
Dim dt As New DataTable
Dim adp As New SqlDataAdapter
Dim c As New SqlConnection("myconnectionhere")
Dim emaildate As String
emaildate = DateTime.Today.AddDays(1).Date.ToString("D")
cmd.Connection = c
cmd.CommandText = "sp_progspot_monitor"
cmd.Parameters.AddWithValue("@prdname", "%")
cmd.Parameters.AddWithValue("@prdcde", "%")
cmd.Parameters.AddWithValue("@prdfrdate", Date.Today.AddDays(1))
cmd.Parameters.AddWithValue("@prdtodate", Date.Today.AddDays(1))
cmd.Parameters.AddWithValue("@cost", "%")
cmd.CommandType = CommandType.StoredProcedure
adp.SelectCommand = cmd
adp.Fill(ds)
Dim dv As New DataView(ds.Tables(0))
Dim dvfilter As DataTable = dv.ToTable(True, {"teledte"})
Dim dt2 As New DataTable
For Each dtrow As DataRow In dvfilter.Rows
dv.RowFilter = "Total_Load < Potential_Load"
dt2 = dv.ToTable(False, {"Date", "Prouduct Name", "Product Code", "Total Sales"})
Next
Dim builder As New StringBuilder
builder.Append("<!DOCTYPE html><html>")
builder.Append("<head></head>")
builder.Append("<table>")
builder.Append("<tr>")
builder.Append("<th>Date</th>")
builder.Append("<th>Product Name</th>")
builder.Append("<th>Product Code</th>")
builder.Append("<th>Total Sales</th>")
builder.Append("<tr>")
builder.Append("</table>")
builder.Append("</html>")
For Each row As DataRow In dt2.Rows
builder.Append("<tr>")
Dim i As Integer
i = 1
For Each col As DataColumn In dt2.Columns
builder.Append("<td class=""" & i & """>" & row(col).ToString + " " & "</td>")
i = i + 1
Next
builder.Append("</tr>")
builder.AppendLine()
Next
builder.Append("</tbody>")
builder.Append("</table>")
setemail("[email protected]", "pass", builder.ToString)
End Subの
そして、ここでは、システムがその日知っているとき、それは条件付きで送信されますようにFridayEmail
Dim ds As New DataSet
Dim cmd As New SqlCommand
Dim dt As New DataTable
Dim adp As New SqlDataAdapter
Dim c As New SqlConnection("myconnectionhere")
Dim emaildtefrm As String
dim emaildteto as String
emaildtefrm = DateTime.Today.AddDays(1).Date.ToString("D")
emaildteto = DateTime.Today.AddDays(3).Date.ToString("D")
cmd.Connection = c
cmd.CommandText = "sp_progspot_monitor"
cmd.Parameters.AddWithValue("@prdname", "%")
cmd.Parameters.AddWithValue("@prdcde", "%")
cmd.Parameters.AddWithValue("@prdfrdate", Date.Today.AddDays(1))
cmd.Parameters.AddWithValue("@prdtodate", Date.Today.AddDays(3))
cmd.Parameters.AddWithValue("@cost", "%")
cmd.CommandType = CommandType.StoredProcedure
adp.SelectCommand = cmd
adp.Fill(ds)
Dim dv As New DataView(ds.Tables(0))
Dim dvfilter As DataTable = dv.ToTable(True, {"teledte"})
Dim dt2 As New DataTable
For Each dtrow As DataRow In dvfilter.Rows
dv.RowFilter = "Total_Load < Potential_Load"
dt2 = dv.ToTable(False, {"Date", "Prouduct Name", "Product Code", "Total Sales"})
Next
Dim builder As New StringBuilder
builder.Append("<!DOCTYPE html><html>")
builder.Append("<head></head>")
builder.Append("<body>")
builder.Append("<p> Below is the list of expiry product from " & emaildtefrm & "to" & emaildteto & "</p>")
builder.Append("<table>")
builder.Append("<tr>")
builder.Append("<th>Date</th>")
builder.Append("<th>Product Name</th>")
builder.Append("<th>Product Code</th>")
builder.Append("<th>Total Sales</th>")
builder.Append("<tr>")
builder.Append("</table>")
builder.Append("</html>")
For Each row As DataRow In dt2.Rows
builder.Append("<tr>")
Dim i As Integer
i = 1
For Each col As DataColumn In dt2.Columns
builder.Append("<td class=""" & i & """>" & row(col).ToString + " " & "</td>")
i = i + 1
Next
builder.Append("</tr>")
builder.AppendLine()
Next
builder.Append("</tbody>")
builder.Append("</table>")
setemail("[email protected]", "pass", builder.ToString)
このコードのための私のサブクラスは、今日一日をトラップするためですその条件に基づいた電子メール。
プロテクトサブImageButton1_Click(送信者としてオブジェクト、eはSystem.Web.UI.ImageClickEventArgs)ImageButton1を処理します。
Dim daytoday As String = DateTime.Today.DayOfWeek
If daytoday.ToString = "1" or Then
EmailMondayThursday()
ElseIf daytoday.ToString = "4" Then
MsgBox("Thursday")
ElseIf daytoday .ToString = "5" Then
ProgSpotEmailFriday()
End If
End Sub
出力は次のようであるサブクラスFridayEmailに問題がクリック:
何私が達成したいことは金曜日のためのあなたの出力を単一のに含まれている
申し訳ありませんが、あなたの答えは、エラーに満ちています。また、私はそれを取得しません。ごめんなさい。それでもあなたが与えた論理を試してみます。ありがとうございました。 –
はい、それは私がVBを知らない理由ですが、アイデアは1つではなく3つのテーブルを描くことです。製品のデータテーブルを取得した後、3つのテーブルに分割して1つのHTMLテーブルを構築しますそれぞれを1つずつ追加して最終的なメール本文に追加してください。 –
これは私の質問を投稿する前にやろうとしていることです。私はそのような出力を達成する方法をまだ混乱させています。私は本当にどこから始めるべきか分からない:( –