2015-06-25 51 views
5

Sto tentando di eseguire l'iterazione su alcuni file Excel in un documento utilizzando un ciclo foreach. Quindi nel mio flusso di controllo trascino e rilasciano un contenitore per ogni ciclo. poi creo una nuova variabile chiamata ExcelFilePath per metterla sotto il foreach Loop di portata:Problemi di ambito variabile SSIS

enter image description here

ho quindi modificare il ciclo foreach e impostare è mappatura variabile per mappare la variabile creata:

enter image description here

Grande. Quindi ora, a questo punto, presumo che con ogni iterazione questo ciclo foreach, memorizzerà il percorso del file (o qualsiasi altra cosa) nel file excel corrente in quella variabile.

Successivamente, inserisco un'attività di flusso di dati e aggiungo un'origine Excel. Inizialmente creo un gestore connessioni Excel, solo per puntare al foglio corretto nel documento e specificare quali colonne voglio. Lo provo e vedo che l'anteprima funziona bene.

enter image description here

Nizza. Quindi, dopo voglio cambiare il gestore delle connessioni, in modo che non esegua il mapping allo stesso file per tutto il tempo, ma utilizzi invece la variabile impostata dal ciclo foreach, specificando quale file utilizzare. Quindi faccio clic destro su Excel Connection Manager> Proprietà e aggiungo un'espressione. Scelgo "ExcelFilePath" per la "proprietà" e cerco la variabile ExcelFilePath che ho creato che sarà nell'ambito dei cicli foreach. Ma niente. Non si trova da nessuna parte.

enter image description here

Che cosa è che sto facendo male qui? Ho seguito vari tutorial sull'argomento alla lettera, ma al mio fianco la variabile foreach non si trova da nessuna parte ??

EDIT

Allora sono andato avanti e ha cambiato il campo di applicazione della variabile dal foreach loop scopo di 'pacchetto' ambito. E hey ora posso vederlo, perfetto. I selezionarlo e questo accade:

enter image description here

EDIT 2

finalmente ottenuto che il lavoro, ma ora devo ancora un'altra errore:

enter image description here

Onestamente non so come si possa fare qualsiasi lavoro con questo. Ti tengo il cappello. Voglio dire Error Code 0x80004005, che cos'è che significava ?!

+0

Connection Manager è al di fuori della portata del vostro contenitore ciclo, quindi, è non può vedere la variabile in Generatore di espressioni – ughai

+0

Grazie ughai. Quale sarebbe la soluzione allora in questo caso? Come posso riferirmi? – Tiwaz89

+0

Si dovrebbe trovare nello spazio package – ughai

risposta

0

Penso che non possiamo usare la variabile per la connessione excel che punterà il file di dati sul runtime cambiando perché ci sono così tanti problemi in Excel e SSIS.

Quindi, è necessario per alcune cose come di seguito.

Aggiungere un'attività di scrip in per ogni contenitore di loop prima dell'attività di flusso di dati. Creare anche un file modello con posizione statica con la stessa intestazione che ha il file.

Ora durante l'iterazione del file per ogni ciclo. Il file che stiamo elaborando per una particolare iterazione deve sostituire il modello usando l'attività di script.

Il gestore connessioni Excel punta sempre il file modello.

what ever file name you getting by for each loop need to replace template