5

Sharepoint に 3 つのリストがあります。

3 つのテーブルを結合したデータビューを作成したいと考えています。

Table1 は FieldA の Table2 と結合されます Table 2 は FieldB の Table3 と結合されます

Table1 の FieldA には重複する値があるため、Table2 と結合するには値を 1 つだけ返す必要があります。

Access では、私のクエリは次のようになります。 JOIN (WRK_InputWorkOrders INNER JOIN Production1 ON WRK_InputWorkOrders.WorkOrder = Production1.[作業指示]) ON StationItems.Item = Production1.[部品番号] WHERE (((WRK_InputWorkOrders.Status)<>"closed"));

データビューに対して SQL のようなクエリを作成する方法はありますか?

Sharepoint Designer 2007 と Access を持っています。

目標は、ユーザーが Internet Explorer で表示できるレポートを取得することです。この方法を使ってみました。しかし、この提案を見つけた重複レコードが返されます。XPath フィルター not(@yourvalue = previous-sibling::dfs:YourRepeatingRowName/@yourvalue) を使用することをお勧めします

しかし、それを機能させることができませんでした。YourRepeatingRowName に何を入力すればよいかわかりません

このリンクを見つけました。そのような結合を実行するために使用できるかどうかは誰にもわかりませんか?

4

5 に答える 5

1

あなたの質問は、ADO.NET に関する質問です。残念ながら、ADO.NET にはこれを行う簡単な方法がありません。そのため、Bamboo Solutions などの企業はクロス リスト Web パーツを構築しています: http://store.bamboosolutions.com/pc-42-1-cross-list-web- part.aspx

それ以外の場合は、LINQ を使用してテーブルをクエリしようとします。そうするほうが運がいいかもしれません。

MS が提供する JOIN クエリの例を次に示します (DataTable を SPListItemCollection オブジェクトで埋めることを表すために、最初の 2 つの DataTable 行のみを変更しました)。

DataTable orders = spListCol1.ToDataTable();
DataTable details = spListCol2.ToDataTable();

var query =
    from order in orders.AsEnumerable()
    join detail in details.AsEnumerable()
    on order.Field<int>("SalesOrderID") equals
        detail.Field<int>("SalesOrderID")
    where order.Field<bool>("OnlineOrderFlag") == true
    && order.Field<DateTime>("OrderDate").Month == 8
    select new
    {
        SalesOrderID =
            order.Field<int>("SalesOrderID"),
        SalesOrderDetailID =
            detail.Field<int>("SalesOrderDetailID"),
        OrderDate =
            order.Field<DateTime>("OrderDate"),
        ProductID =
            detail.Field<int>("ProductID")
    };

DataTable orderTable = query.CopyToDataTable(); 
于 2009-01-23T21:13:59.047 に答える
1

Microsoft にはビデオ デモと記事があります。

複数のソースからのデータを 1 つのデータ ビューに表示 http://office.microsoft.com/en-us/sharepointdesigner/HA103511401033.aspx

Microsoft Office SharePoint Designer 2007 を使用すると、関連データを含む 2 つ以上のデータ ソースをリンクし、それらのリンクされたデータ ソースからのデータを表示する単一のデータ ビューを作成できます。

于 2009-01-24T17:40:52.533 に答える
0

私はこの3番目の部分が追加されるのを見つけました

Enesys RS Data Extensionを使用すると、SharePointリストからデータをクエリ(取得、結合、マージなど)し、その結果を他のデータソースと同じように「レポートサービス」レポートの作成に使用できます。http://www.enesyssoftware.com/

現在、内部データベースを使用する基本的なSharepointバージョンを実行しているため、使用できません。

于 2009-01-23T16:20:32.493 に答える
0

私はこのようなことをしましたが、データビューを使用できませんでした。それを行うためのカスタム Web パーツを作成することになりました。アプローチは次のとおりです。

  1. SPQueryオブジェクトを使用してSPListItemCollectionfor each リストを取得します。CAML クエリを使用して、返されるアイテムを制限します。
  2. SPListItemCollectionオブジェクトのメソッドを使用して、各リスト GetDataTable()の ADO.NET オブジェクトを取得します。DataTable
  3. DataSetテーブルをオブジェクト に追加します。
  4. テーブル間の関係を作成します。
  5. DataListまたはその他を使用して、好きなようにデータをレンダリングしますRepeater

大まかなストロークを示すコードを次に示します。

protected DataTable GetDataTableFromQuery(string camlQry, SPList theList) {
  SPQuery listQry = new SPQuery();  
  listQry.Query = camlQry;  
  SPListItemCollection listItems = theList.GetItems(listQry);  
  return listItems.GetDataTable();
}

protected void BuildDataSet() {  
  // get SPList objects for the lists in questions ... left as an exercise for the dev -- call them list1, list2, and list3  
  string camlQry = "the CAML necessary to retreive the ites from list1";  
  DataTable table1 = GetDataTable(camlQry, list1);  
  table1.TableName = "Table1";  
  camlQry = "the CAML necessary to retreive the ites from list2";  
  DataTable table2 = GetDataTable(camlQry, list2);  
  table1.TableName = "Table2";  
  camlQry = "the CAML necessary to retreive the ites from list3";  
  DataTable table3 = GetDataTable(camlQry, list3);  
  table1.TableName = "Table3";  

  // now build the DataSet
  DataSet ds = new DataSet();  
  ds.Tables.Add(table1);  
  ds.Tables.Add(table2);  
  ds.Tables.Add(table3);  
  ds.Relations.Add("Table1_2", ds.Tables["Table1"].Columns["FieldA"], ds.Tables["Table2"].Columns["FieldA"]);  
  ds.Relations.Add("Table2_3", ds.Tables["Table2"].Columns["FieldB"], ds.Tables["Table3"].Columns["FieldB"]);  

  // now you can do something with these, like store them in the web part class and bind them to repeaters in the web part's Render() method
}
于 2009-04-28T17:41:03.333 に答える
0

クエリの結果を SharePoint Designer で表示したいですか? SPD はデータ ソースを統合したと思います。それを調べてください。

于 2009-01-22T07:35:53.923 に答える