0

最初の vb スクリプトは正常に動作し、rowsAffected などの変数に合計数を保持できます。これは、最後のステートメントを使用して smtp ベースの電子メールを使用して送信できます。

2番目のケースで同様の状況を実装するにはどうすればよいですか?2番目のケースでは、結果セットを電子メールに送信する必要があります。結果セットを変数に保持するには、どのような変更を行う必要がありますか? また、その結果セットを送信する方法

ケース1

Dim sqlComm As System.Data.SqlClient.SqlCommand
Dim rowsAffected As Integer


sqlComm = New System.Data.SqlClient.SqlCommand("select count(*) from table1", sqlConn)

rowsAffected = sqlComm.ExecuteScalar()

myHtmlMessage = New MailMessage("email", "email", "This is a testing from  VB script Task", rowsAffected.ToString)

ケース 2

sqlComm = New System.Data.SqlClient.SqlCommand("select * from tabl1", sqlConn)

rowsAffected = sqlComm.ExecuteScalar()   ''what modification needed here?

myHtmlMessage = New MailMessage("email", "email", "This is a testing from  VB script Task", rowsAffected.ToString)  ''what modification here??

sqlComm.ExecuteScalar() は整数値、最初のケースの合計行数を返します。

テーブルからすべての行を返すには、2 番目のケースが必要です。SMTP メールを使用して送信する方法も

パブリック サブ メイン()

    ''mail variables

    Dim myHtmlMessage As MailMessage
    Dim mySmtpClient As SmtpClient
    Dim value As NetworkCredential

    ''sql variables
    Dim fireAgain As Boolean = True
    Dim sqlConn As System.Data.SqlClient.SqlConnection
    Dim sqlComm As System.Data.SqlClient.SqlCommand




    Dim cm As ConnectionManager = Dts.Connections("cnn") ''Retrive the reference to the managed Connections

    '' Request an open connection
    sqlConn = cm.AcquireConnection(Dts.Transaction)
    Dts.Events.FireInformation(0, "", "Connection is: " + sqlConn.State.ToString(), "", 0, fireAgain)

    ''Do your work
    sqlComm = New System.Data.SqlClient.SqlCommand("SELECT  [Total_Row_inserted_by this_Load] Column1     ,[Filename] Column2 FROM [Testing-DB].[dbo].[Emailbody]", sqlConn)



    Dim sqlReader As System.Data.SqlClient.SqlDataReader
    sqlReader = sqlComm.ExecuteReader

    Dim dtDataTable As New DataTable


    dtDataTable.Load(sqlReader)

    ''Inform SSIS you're done your work
    cm.ReleaseConnection(sqlConn)



    For Each row As DataRow In dtDataTable.Rows
        Dts.Events.FireInformation(0, "", row("Column1").ToString() + " - " + row("Column2").ToString(), "", 0, fireAgain)

    Next row


    mySmtpClient = New SmtpClient("send.company.net")
    mySmtpClient.Port = 585
    value = New NetworkCredential("my.name@company.net", "pwdddd") ''this is the line added
    mySmtpClient.Credentials = value
    mySmtpClient.EnableSsl = True



    For Each row As DataRow In dtDataTable.Rows


        myHtmlMessage = New MailMessage("my.name@company.net", "my.name@company.net", "Table data is ", row("column1").ToString() + " - " + row("column2").ToString() + System.Environment.NewLine)


    Next row



    mySmtpClient.Send(myHtmlMessage)



    Dts.TaskResult = ScriptResults.Success


End Sub

私の要件は、結果セットを電子メールとして送信することであり、電子メールの本文は

列 1 列 2

11

bb 323

cvc 342

11

4

1 に答える 1

1

このコード ブロックは、これを行う方法を示します。

sqlComm = New System.Data.SqlClient.SqlCommand("select Column1, Column2, COUNT(1) CNT from table1  group by Column1, Column2", sqlConn)
Dim sqlReader As System.Data.SqlClient.SqlDataReader
sqlReader = sqlComm.ExecuteReader
Dim dtDataTable As New DataTable
dtDataTable.Load(sqlReader)

For Each row As DataRow In dtDataTable.Rows
  Dts.Events.FireInformation(0, "", row("Column1").ToString() + " - " + row("Column1").ToString(), "", 0, fireAgain)
Next row

rowsAffected = sqlComm.ExecuteScalar() このコード行を次のように変更します。

sqlReader = sqlComm.ExecuteReader
    Dim dtDataTable As New DataTable
    dtDataTable.Load(sqlReader)

myHtmlMessage = New MailMessage("email", "email", "This is a testing from VB script Task", rowsAffected.ToString) このコード行を次のように変更します。

 For Each row As DataRow In dtDataTable.Rows
myHtmlMessage = New MailMessage("email", "email", "This is a testing from  VB script Task", row("CNT").ToString())
Next row
于 2013-08-15T10:40:02.157 に答える