SSIS Scrive sulla variabile object tramite l’attività di script

Ho del codice dove voglio finire con 2 liste. Avvii e finali.

Contengono la data di inizio del mese e la data di fine del mese.

Questi 2 elenchi voglio inserire una variabile object in modo da poter utilizzare l’object in un contenitore foreachloop in ssis e scorrere ogni riga con startofmonth e endofmonthdates (variabili: min e max) – Ma non so come

Ecco i miei codici:

String s = "2013-01-01"; String b = "2014-01-01"; using (SqlConnection connection = new SqlConnection("Server=localhost;Initial Catalog=LegOgSpass;Integrated Security=SSPI;Application Name=SQLNCLI11.1")) { connection.Open(); string query = "select mindate,maxdate from dbo.dates"; using (SqlCommand command = new SqlCommand(query, connection)) { using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { s = reader.GetDateTime(0).ToShortDateString(); b = reader.GetDateTime(1).ToShortDateString(); //minDate.Add(reader.GetDateTime(0)); //maxDate.Add(reader.GetDateTime(1)); } } } } DateTime startdate = Convert.ToDateTime(s); DateTime enddate = Convert.ToDateTime(b); DateTime parseDate; List minDate = new List(); List maxDate = new List(); List startings = new List(); List endings = new List(); startings.Add(startdate); parseDate = startdate.AddMonths(1); while (parseDate.Day != 1) parseDate = parseDate.AddDays(-1); parseDate = parseDate.AddDays(-1); endings.Add(parseDate); while (parseDate < enddate) { parseDate = parseDate.AddDays(1); startings.Add(parseDate); parseDate = parseDate.AddMonths(1); parseDate = parseDate.AddDays(-1); endings.Add(parseDate); } endings[endings.Count() - 1] = enddate; for (var x = 0; x < startings.Count; x++) { Dts.Variables["test"].Value = x; } Dts.TaskResult = (int)ScriptResults.Success; 

  1. È necessario creare una variabile che il pacchetto possa utilizzare. In VS2010, puoi fare clic sull’opzione di menu SSIS-> Variabili per aprire la finestra Variabili. Fai clic su “Aggiungi nuovo” e aggiungi i tuoi elenchi. Userò i nomi minList e maxList. I loro tipi di dati dovrebbero essere “Oggetto”.
  2. Nell’attività di script, è ansible creare un’istanza di questi oggetti come elenchi. Ma prima, devi averne accesso. Apri l’attività di script e aggiungili come ReadWriteVariables. Aggiungi segni di spunta a ciascuno nella finestra di dialogo modale Seleziona variabili. selectVar
  3. Ora che li hai aggiunti come ReadWriteVariables, fai clic su Modifica script. Aggiungere lo spazio dei nomi System.Collections.Generic per utilizzare il tipo di dati Elenco. Ora, istanziare le liste.

    Dts.Variables["User::minList"].Value = new List(); Dts.Variables["User::minList"].Value = new List();

  4. È ansible creare nomi di variabili più gestibili per le variabili attenendosi alla seguente procedura:

    List minDateList = (List)Dts.Variables["User::minList"].Value;

  5. Infine, è ansible aggiungere questi valori agli oggetti elenco utilizzando il metodo Aggiungi dell’elenco. Li aggiungerei all’interno del ciclo in cui stai leggendo da reader.Read() .

  6. Nel tuo Foreach Loop Editor, dovresti selezionare il Foreach From Variable Enumerator e una delle tue variabili di lista. ForEachLoop

Innanzitutto creare una variabile SSIS “objListOfMinDates” dell’object DataType. Quindi, quando si fa clic con il pulsante destro del mouse sull’attività di script, in Script Task Editor, selezionare tale variabile User :: objListOfMinDates. Sarà sotto la sezione delle variabili utente. Quindi, nell’attività di script è sufficiente creare e utilizzare una variabile locale “localListOfMinDates”. Alla fine della sceneggiatura, alla fine basta assegnare “objListOfMinDates” in questo modo:

 Dts.Variables["User::objListOfMinDates"].Value = localListOfMinDates; 

Quindi sarai in grado di utilizzare la variabile in un ciclo foreach in un momento successivo all’attività di script. Ovviamente, puoi farlo per due variabili (min e max). Basta creare entrambi, scegliere entrambi come readWrite e assegnarli nell’attività di script.