2011-04-22 111 views
1

問題:有沒有辦法在執行腳本時創建出口訂單?如果可能的話,我更喜歡FileMaker-native或FileMaker--稱爲AppleScript解決方案。FileMaker:有沒有辦法在腳本中構建出口訂單?

項目:該項目是一個報告工具,通過用戶可選擇的標準,如:周,季度,年份,位置,產品,供應商等總結銷售信息(單位,價格,成本)。根據用戶選擇的標準在運行時指定導出。

例如:如果一個用戶選擇的單位銷售的每季度供應商總結我希望能夠有腳本選擇:

組方:

  1. 季度
  2. 供應商

出口訂單

  1. 季度
  2. 單位彙總季度
  3. 供應商
  4. 單位彙總由供應商

很顯然,許多排列,因此,在設置爲每個單獨的出口的出口爲每組選項是不可行的。

回答

0

基於米哈伊爾和查克的建議,我認爲這個特定項目的最佳方法是在全局字段中創建.csv的內容,然後導出字段內容。我在做什麼的基本輪廓:

Go to the first record 
Loop 
    WriteTheRows (see below), comma delimited, to a global field 
    Set $thisGroup to the count of records summarized by this summary field 
    Exit Loop If Get (CurrentRecord) + $thisGroup >= Get (FoundCount) 
    Go to record [Get (CurrentRecord) + $thisGroup] 
End Loop 
Export Field Contents [global field] 

WriteTheRows是一個自定義函數,執行以下操作: 我想寫的輸出可以由7個不同的標準,同時進行排序時間(例如:我可以概括季度銷售供應商或我總結了供應商季度銷售額)

Compare the highest level sort field's value to the last value we found for the highest level sort field. 
    If they're different WriteALine to the global field for this sort field, the next sort field, all sort fields down to the lowest level. 
    If they're the same, compare the (highest level sort field - 1) to the stored value for the (highest level sort field - 1) 
     If they're the same, WriteALine to the global field for the (highest level sort field - 1) on down to the lowest level sort field 
     ... repeat until we're down to the lowest sort field 

WriteALine是另一個自定義功能,增加了相應的標籤,逗號和使用GetSummary值(revenueSumma ry;評估(「summaryField」& summaryFieldNumber),正如Chuck在他的回答中所暗示的那樣。

1

如果目標格式是基於文本(即製表符或逗號分隔),那麼我會導出到XML並編寫一個XSLT以根據需要對其進行彙總。要將參數傳遞給XSLT,我通常會將一個小XML文件導出到同一個文件夾。

+0

我對FileMaker的XML/XSLT導出不是很熟悉,但我的關注點是限制最終用戶可以訪問的數據。比如說,我們希望與供應商分享我們銷售的產品的單位數量,但不是我們在他們的產品上獲得多少收入。如果我有一個通用的XML導出,那麼這兩個數據點都將在XML文件中。似乎可以通過XSLT隱藏它們,但一個聰明的供應商可以查看XML值。是否有辦法進一步過濾輸出,以便數據不僅僅隱藏,而且實際上不存在? – pft221 2011-04-22 13:10:19

+0

對不起,遲到的答案。這不是問題:在導出到XML時,FileMaker不會保留原始XML,而只是轉換的結果。沒有任何地方可以從中恢復信息。 – 2011-04-28 08:51:46

1

我能想到的解決方案是導出計算而不是原始字段。通過你給出的例子,假設用戶最多可以導出兩個字段。您創建兩個計算字段和兩個文本字段。文本字段存儲要導出的字段的名稱,計算字段使用Evaluate(或GetField)來獲取字段的內容。如果您也在導出日期和時間字段,它會變得複雜,但它仍然可行。如果您需要在導出中包含字段名稱,則會創建一個額外的記錄並對該記錄進行計算以包含用戶選擇的字段的名稱。

不平凡,但仍有可能。

+0

這是一個好主意。我遇到的問題是,因爲我使用匯總數據,所以我必須爲每個可能的排序條件(最多7個)和每個可能的導出值(最多4個)提供一個計算字段。 )(所有這些數值都是這樣的,我可以用第一個問題中的示例,除了每個供應商在該季度的單位彙總值之外,還可以爲整個季度提供單位的彙總值。) – pft221 2011-04-23 14:09:46

相關問題