2013-04-30 204 views
4

我有以下情況:A組有兩列(名稱,金額),並在列表B(名稱),我想添加計算列這應該是所有的總和如何從另一個列表中創建數據計算列

列表A:表A具有相同的名稱作爲列表B.示例條目

NAME  Amount 
L0011  100 
L0011  50 
L0020  234 
在列表BI

所以要計算列顯示:

NAME  Amount 
L0011  150 
L0020  234 

哪有這樣做?工作流程(只要在列表A中添加/修改條目,更新列表B)或其他內容?由於

回答

5

這不能使用計算列完成,因爲計算列只能用於列在同一名單上。

使用SharePoint Designer工作流,你可以只使用Create List ItemUpdate List Item行動,以便每當用戶對L0011增加值金額將在其中包含了以前的數額已經是另一個列表的列被添加。

讓我知道如果你需要一個更詳細的解答對SharePoint的做法,我會提供你做什麼一步一步的指令。

+0

大THX。我會嘗試使用WF – DanielR 2013-05-01 06:31:05

7

lem.mallari的答案是一個巨大的痛苦,除非你可以假設,在列表A的量不會改變,因爲它不是跟蹤商品是否已經被添加到總和。工作流無法遍歷SharePoint列表,這意味着沒有簡單的方法可以計算多個列表項的總和或平均值。

實施將需要一些發展這一意志的正確方法。 SharePoint開發人員培訓(2010,2013)實際上將爲您帶來大部分途徑:在列表A和列表B中使用SharePoint的API添加或更改項目時,事件接收方應該觸發列表A和按名稱的平均值,然後更新列表B中的所有項目(或僅影響項目)。或者,只要所有數據都顯示在您的列表中,則可以使用JavaScript來顯示列表A中與列表B中的項目具有相同名稱的所有項目的總和頁。如果您在XPath和InfoPath中得心應手,則可以將列表A作爲輔助數據源添加到列表B的表單中,並僅選擇列表A中可用的項目進行彙總。

但是,如果我們談論的工作流程,這裏的「工作流程只」的方法。這是測試,併成功在2010年創建具有下列列自定義列表C:

  • 標題(字符串,強制,強制執行唯一值)
  • TOTALITEMS(整數,強制性的,默認爲0)
  • 總和(數,小數不過你想要的,強制性的,默認爲0)
  • 平均數(計算方法,= IF(TOTALITEMS = 0,0,金額/ TOTALITEMS))(可選)

中列出更換名稱列A和B查找列指向在列表C中刪除列表B中的金額列,而不是將總和列作爲附加列。將以下列添加到列表A,並確保用戶不能直接更改它們。這可以通過製作InfoPath表單或製作其他視圖和編輯表單來限制。

  • AmountArchive(數字,相同的金額,默認爲0)
  • AmountHasBeenSubmitted(是/否,默認無)

創建工作流程的每個項目被創建或列表修改時間運行A.使用這些命令(我使用可讀性列表;當作爲代碼格式化它是越來越難看):

  • 如果當前項目:金額不等於當前項:AmountArchive
    • Set Variable:Item Count to(Data source:List C;來源欄:TotalItems;查找列表項目:字段標題;值:當前項目:名稱(返回字段爲:查找值(作爲文本)))
    • 計算變量:ItemCount加1(輸出到變量:ItemCount)
    • 計算列表C:Sum(與上面類似的設置; !一定要使用查找值(以文本),而不是字符串)減去當前項目:AmountArchive(輸出到變量:SumWithoutValue)
    • 計算變量:SumWithoutValue加上當前貨品:金額(輸出到變量:NewSum)
    • 如果當前項目:AmountHasBeenSubmitted等於否
      • 設置AmountHasBeenSubmitted爲是
      • 更新列表C中的項目(將TotalItems設置爲Variable:ItemCount;將Sum設置爲變量:NewSum;以與字段相同的方式查找列表項目:標題;值:當前項:姓名(返回字段:查找值(以文本))
    • 否則名單C(不要做任何TOTALITEMS
      • 更新的產品,使用相同的邏輯來設置總和到變量:NewSum)
    • 設置量爲當前項目:關於使用DSUM功能AmountArchive
相關問題