Auteur de questions
comment peupler un lookup sharepoint avec SSIS?

Question
-
Bonjour,
Je débute sur sharepoint...
J'utilise business intelligence development studio pour créer un package afin de peupler des listes sharepoint à partir d'une base oracle (8i).
site sharepoint 2007 dernière version avec WSS 3.0
un premier flow prend une table oracle (source ADO NET) pour peupler ma liste A
un deuxieme flow prend une autre table oracle pour peupler ma liste B
J'ai un type de donnée lookup dans sharepoint qui met en relation plusieurs éléments de ma liste A à un seul élément de ma liste B.
cette relation est enregistré dans une table oracle (contenant 2 champs avec les 2 id des 2 listes). Comment faire pour importer cette relation?
J'essaye avec la transformation de donnée de type lookup mais je n'arrive pas à ce que je cherche (peut etre l'ai-je mal paramétré).
merci de votre aide ou au moins quelques pistes si vous en avez...- Modifié doubsfai1 mercredi 19 août 2009 11:55
Toutes les réponses
-
Finalement j'essaye en utilisant un "script component"
J'utilise une source OLE pour me connecter à ma base de donnée qui arrive en input sur mon script.
et en output j'ai créé 2 colonnes, find et not find en mettant bien les propriétés ExclusiongGroup à 1 et SynchronousInput au numéro donné dans input column.
J'ai aussi ajouter une connection manager qui pointe sur http:\\monsite\_vti_bin\lists.asmx?WSDL
Dans mon script, j'ai ajouté une référence Web (efindLists1) sur ma liste sharepoint http:\\monsite\_vti_bin\lists.asmx?WSDLvoici mon code
using System; using System.Data; using System.Xml; using Microsoft.SqlServer.Dts.Pipeline.Wrapper; using Microsoft.SqlServer.Dts.Runtime.Wrapper; using SC_ca6870e5b1bc4a048a702c2c74823931.csproj.efindLists1;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute] public class ScriptMain : UserComponent { private Lists malist = new Lists(); public override void Input0_ProcessInputRow(Input0Buffer Row) { XmlDocument xmlDoc = new XmlDocument(); XmlNode noeud, queryList, fieldList, optionQuery, nodeId, nodeMap; string res,ListGUID, ViewGUID; malist.Credentials = System.Net.CredentialCache.DefaultCredentials; malist.Url = "http://monsite/_vti_bin/lists.asmx"; queryList = xmlDoc.CreateNode(XmlNodeType.Element,"Query",""); fieldList = null; // xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", ""); optionQuery = xmlDoc.CreateNode(XmlNodeType.Element,"QueryOptions",""); queryList.InnerXml = "<Where>" + "<Gt>" + "<FieldRef Name='ASSET_ID0' />" + "<Value type=\"Text\">\"" + (Row.ASSETID).ToString() + "\"</Value>" + "</Gt> "+ "</Where>" ; /* j'ai commenté ce code car j'ai vu sur certain site qu'il fallait aussi utilisé le GUID des champs mais je n'ai pas réussi à le trouver fieldList.InnerXml = "<FieldRef Name = 'ID' />" + "<FieldRef Name = 'Map_x0020_Obejct' />" + "<FieldRef Name = 'ASSET_ID0' />"; */ optionQuery.InnerXml = "<IncludeMandatoryColumns>TRUE</IncludeMandatoryColumns>"; ListGUID = "{A9DCCAA8-93F0-4781-A7D8-94D5EC4EACC4}"; //maListe ViewGUID = "{325E11FE-C3E9-4F3B-9AE3-3A59E4727ABE}"; //detailed view noeud = malist.GetListItems(ListGUID,ViewGUID,queryList,fieldList,null,optionQuery,null); res = "//*[@ows_ID]"; nodeId = noeud.SelectSingleNode(res); res = "//*[@ows_Map_x0020_Obejct]"; nodeMap = noeud.SelectSingleNode(res);
exception of type "microsoft.sharepoint.soapServerExceptions" was thrown
avec le détail suivant :
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at SC_ca6870e5b1bc4a048a702c2c74823931.csproj.efindLists1.Lists.GetListItems(String listName, String viewName, XmlNode query, XmlNode viewFields, String rowLimit, XmlNode queryOptions, String webID)
at ScriptMain.Input0_ProcessInputRow(Input0Buffer Row)
at UserComponent.Input0_ProcessInput(Input0Buffer Buffer)
at UserComponent.ProcessInput(Int32 InputID, PipelineBuffer Buffer)
at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID, PipelineBuffer buffer)
Je n'arrive pas à trouver de solution...
- Modifié doubsfai1 mercredi 19 août 2009 15:28