2010-04-08 11 views

उत्तर

17

स्क्रिप्ट टैब पर, सुनिश्चित करें कि आप वैरिएबल को या तो readonlyvariables या readwritevariables टेक्स्ट बॉक्स में डाल दें।

यहां एक साधारण स्क्रिप्ट है जिसका उपयोग मैं एक डेटा के प्रवाह में डेटा प्रवाह (रिकॉर्डसेट वैरिएबल में सहेजा गया) में त्रुटियों को प्रारूपित करने के लिए करता हूं। असल में मैंने रिकॉर्डेट varialbe को एक डेटाटेबल में पढ़ा और इसे लूप के साथ पंक्ति से पंक्ति में संसाधित किया। इस कार्य को पूरा करने के बाद मैं एक सशर्त प्रक्रिया प्रवाह कनेक्टर का उपयोग कर ईमेल करने के लिए कुछ भी निर्धारित करने के लिए uvErrorEmail की कीमत की जांच करता हूं। आपको अपनी vb स्क्रिप्ट में system.xml का संदर्भ भी जोड़ना होगा। यह एसक्यूएल में है 2005.

Imports System 
Imports System.Data 
Imports System.Math 
Imports Microsoft.SqlServer.Dts.Runtime 
Imports System.Xml 
Imports System.Data.OleDb 


Public Class ScriptMain 


    Public Sub Main() 


     Dim oleDA As New OleDbDataAdapter 
     Dim dt As New DataTable 
     Dim col As DataColumn 
     Dim row As DataRow 
     Dim sMsg As String 
     Dim sHeader As String 


     oleDA.Fill(dt, Dts.Variables("uvErrorTable").Value) 
     If dt.Rows.Count > 0 Then 
      Dts.Variables("uvErrorEmailNeeded").Value = True 
      For Each col In dt.Columns 
       sHeader = sHeader & col.ColumnName & vbTab 
      Next 
      sHeader = sHeader & vbCrLf 
      For Each row In dt.Rows 
       For Each col In dt.Columns 
        sMsg = sMsg & row(col.Ordinal).ToString & vbTab 
       Next 
       sMsg = sMsg & vbCrLf 
      Next 
      Dts.Variables("uvMessageBody").Value = "Error task. Error list follows:" & vbCrLf & sHeader & sMsg & vbCrLf & vbCrLf 
     End If 

     Dts.TaskResult = Dts.Results.Success 
    End Sub 

End Class 
17

नीचे सूचीबद्ध कोड मैं एक recordset या resultset चर से एक सी # स्क्रिप्ट कार्य में एक datatable लोड करने के लिए प्रयोग किया जाता है। "उपयोगकर्ता :: ट्रांजैक्शनलआरपीडीबीएस" ऑब्जेक्ट (System.Object) का एक एसएसआईएस वैरिएबल है जिसे निष्पादित SQL कार्य स्क्रिप्ट से "पूर्ण परिणाम सेट" के माध्यम से लोड किया गया था। This link assisted me.

using System.Data.OleDb; 

DataTable dt= new DataTable(); 
OleDbDataAdapter adapter = new OleDbDataAdapter(); 
adapter.Fill(dt, Dts.Variables["User::transactionalRepDBs"].Value); 

foreach (DataRow row in dt.Rows) 
{ 
    //insert what you want to do here 
} 
0

एक आसान तरीका मैंने पाया (सी # का उपयोग कर) बस एक स्ट्रिंग सरणी के रूप में वस्तु कास्टिंग है। इस प्रकार मेरा सी # कोड अब दिखता है:

public void Main() 
{ 
string[] arreglo = (string[])Dts.Variables["User::arreglo"].Value; 

... 

foreach (string elemento in arreglo) 
{ 
    // do stuff on each element of the array/collection 
} 

... 
} 
संबंधित मुद्दे