2012-07-31 5 views
0

Windows에서 스케줄러를 통해 자동으로 시작하는 프로그램이 있습니다. 그것이하는 일은 질의를 실행 한 다음 질의 결과를 전자 메일로 보내는 것입니다. 이것은 모두 작동합니다. 우리는 10 개의 위치를 ​​가지고 있으므로 이것을 편집하여 5 개의 다른 이메일을 보냈습니다 ... 내가 겪고있는 문제는 여러 테이블 어댑터에 null 값이 있는지 확인하는 방법입니다. "Paid_Out_TB"에 0 행이 있는지 확인합니다. 0 행이 있으면 프로그램이 닫힙니다. 내가 뭘하고 싶은지 확인하려면 0 행이 있는지 확인하는 것입니다. 그렇다면 전자 메일로 테이블 데이터를보고 한 후 다음 tableadapter를 확인하십시오. 여기에는 행이 포함되어 있습니까? 그렇다면 그걸보고해라. 데이터가없는 테이블을 빠뜨리 라. 문제는 ... 데이터가 없다면, 뭔가를 말해야 겠어. 어떤 제안이라도?두 개의 다른 데이터 세트에서 널을 확인하고 널 테이블을 출력하지 않는 방법

Imports System.Net.Mail 
    Imports System.Net.Mail 
Imports System.Linq 

Public Class Form1 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     'TODO: This line of code loads data into the 'DataSet.Paid_Out_Tb' table. You can move, or remove it, as needed. 

     Try 
      Dim SmtpServer As New SmtpClient() 
      Dim mail As New MailMessage() 
      Me.Paid_Out_TbTableAdapter.Fill(Me.DataSet.Paid_Out_Tb) 
      Me.DataTable1TableAdapter.Fill(Me.DataSet.DataTable1) 
      Dim payouts = _ 
      <html> 
       <body> 
        <table border="1"> 
         <tr><th>Store #</th><th>Date</th><th>Amount</th><th>User</th><th>Comment</th></tr> 
         <%= From paidOut In Me.DataSet.Paid_Out_Tb.AsEnumerable _ 
          Select <tr><td><%= paidOut.Store_Id %></td> 
             <td><%= Convert.ToDateTime(paidOut.Paid_Out_Datetime).ToString("M/d/yy") %> 
             </td><td><%= "$" & paidOut.Paid_Out_Amount.ToString("0.00") %></td> 
             <td><%= paidOut.Update_UserName %></td> 
             <td><%= paidOut.Paid_Out_Comment %></td></tr> %> 
        </table> 
       </body> 

      </html> 
      Dim Payouts453 = _ 
      <html> 
       <body> 
        <table border="1"> 
         <tr><th>Store #</th><th>Date</th><th>Amount</th><th>User</th><th>Comment</th></tr> 
         <%= From paidOut In Me.DataSet.DataTable1.AsEnumerable _ 
          Select <tr><td><%= paidOut.Store_Id %></td> 
             <td><%= Convert.ToDateTime(paidOut.Paid_Out_Datetime).ToString("M/d/yy") %> 
             </td><td><%= "$" & paidOut.Paid_Out_Amount.ToString("0.00") %></td> 
             <td><%= paidOut.Update_UserName %></td> 
             <td><%= paidOut.Paid_Out_Comment %></td></tr> %> 
        </table> 
       </body> 

      </html> 
      If (Me.DataSet.Paid_Out_Tb.Count = 0) Then 'This cheks to see if the dataset is Null. We do not want to email if the set is Null 

       Me.Close() 


      Else 

       SmtpServer.Credentials = New _ 
       Net.NetworkCredential("****", "****") 'Assign the network credentials 
       SmtpServer.Port = 25 'Assign the SMTP Port 
       SmtpServer.Host = "10.0.*.**" 'Assign the Server IP 
       mail = New MailMessage() 'Starts a mail message 
       mail.From = New MailAddress("*@**.com") 'Sets the "FROM" address 
       mail.To.Add("**@**.com") 'Sets the "To" address 
       'mail.CC.Add("**@**.com") 'set this if you would like to CC 
       mail.Subject = "Paid Out Report for 1929" 
       mail.IsBodyHtml = True 
       mail.Body = payouts.ToString() & Payouts453.ToString() 'this is to add another chart You would use a seperate dataset obviously 
       SmtpServer.Send(mail) 
       'MsgBox("mail send") 
      End If 

     Catch ex As Exception 

      MsgBox(ex.ToString) 


     End Try 






     Me.Close() 'Closes the program when it's finished. 


    End Sub 
+0

빈 테이블이 null이 아닙니다. 빈 세트를 나타냅니다. ∅ - 무효와 완전히 다른 개념입니다. 자세한 내용은 http://mathworld.wolfram.com/EmptySet.html을 참조하십시오. –

답변

0

"If Not" "Then"문을 사용하여이 작업을 수행했습니다. tableadapter가 "empty"인 경우 계속할 수 있습니다.