iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
自我挑戰組

用 ODK 和 Access VBA 打造行動化資料收集流程系列 第 23

Day23: 表單函數(Functions) Part 3

  • 分享至 

  • xImage
  •  

日期與時間(Date and time)

today()
返回不帶時間部分的目前日期。

now()
返回 ISO 8601 格式的目前日期時間,包括時區。

警告
此功能經常被濫用。
請閱讀何時評估表達式以了解更多資訊。
https://docs.getodk.org/form-logic/#when-expressions-are-evaluated

轉換日期和時間(Converting dates and time)

decimal-date-time(dateTime)
將 dateTime 值轉換為自 1970 年 1 月 1 日(Unix 紀元)以來的天數。
這是 date() 的逆運算。

date(days)
將表示從 1970 年 1 月 1 日(Unix 紀元)開始的天數的整數轉換為標準日期值。
這是decimal-date-time() 函數的倒數。

decimal-time(time)
將時間轉換為表示小數天的數字。
例如,中午12:00為 0.5,下午 6:00 為 0.75。

設定日期和時間的顯示格式(Formatting dates and times for display)

format-date(date, format)
以字串形式傳回日期,其格式依照 format 定義。
格式字串中使用以下識別碼:

%Y 4 位數年份
%y 2 位數年份
%m 0 填充月份
%n 數位月份
%b 短文月份(一月、二月、三月…)
%d 月份中的某天用 0 填充
%e 一個月中的某一天
%a 短文本日(週日、週一、週二…)

注意
月份和日期縮寫是特定於語言和區域設定的。
如果可以確定表單區域設置,則將使用該區域設定。
否則,將使用設備區域設定。

format-date-time(dateTime, format)
以字串形式傳回 dateTime,其格式依照 format 定義。
format-date() 中的識別符清單可用,以及以下內容:

%H 0填充小時數(24小時時間)
%h 小時(24小時制)
%M 0填充分鐘數
%S 0填充秒數
%3 0填滿的毫秒數

地理(Geography)

area(nodeset | geoshape)
傳回地理點節點集(nodeset )或地理形狀(geoshape )的面積(以平方公尺為單位)。
它考慮了地球繞赤道的周長,但不考慮海拔高度。

distance(nodeset | geoshape | geotrace)
返回以下任一位置的距離(以公尺為單位):
地理點的節點集

type name label calculation
begin_repeat points
geopoint point 記錄地理點
end_repeat
calculate calculated_distance distance(${point})
note display_distance 計算距離:${calculated_distance}

地理形狀的周長

type name label calculation
geoshape shape 記錄地理點
calculate calculated_distance distance(${shape})
note display_distance 計算距離:${calculated_distance}

地理追蹤值的長度
survey

type name label calculation
geotrace trace 記錄地理點
calculate calculated_distance distance(${trace})
note display_distance 計算距離:${calculated_distance}

連結地理點

geopoint point1 記錄地理點
geopoint point2 記錄地理點
calculate concatenated_points concat(${point1},' ; ', ${point2})
calculate calculated_distance distance(${concatenated_points})
note display_distance 計算距離: ${calculated_distance}

它考慮了地球繞赤道的周長,但不考慮海拔高度。

工具(Utility)

random()
傳回 0.0(含)和 1.0(不含)之間的隨機數。
警告
此功能經常被濫用。
請閱讀何時評估表達式以了解更多資訊。
https://docs.getodk.org/form-logic/#when-expressions-are-evaluated

randomize(nodeset[, seed])
傳回打亂後的節點集。
具有數位種子的洗牌是確定性的且可重現的。
此函數的主要用途是隨機化所選問題的選擇順序。
有關選擇小工具的文件描述如何在 XLSForm 中完成此操作。
randomize() 只能在接受節點集的上下文中使用。
請注意,計算類型的問題無法引用節點集。

uuid([length])
如果不帶參數,則傳回隨機的符合 RFC 4122 版本 4 的 UUID。
透過參數,它會傳回指定長度的隨機 GUID。

boolean(arg)

如果 arg 為以下情況則傳回 True:

  • 零以外的數字
  • 非空字串
  • 非空集合
  • 計算結果為True 的比較或表達式

如果 arg 為以下情況則傳回 False:

  • 數位0
  • 空字串
  • 空集合
  • 計算結果為False 的比較或表達式

not(arg)
傳回 boolean(arg) 的相反值。

coalesce(arg1, arg2)
傳回兩個 arg  的第一個非空值。
如果兩者都為空或不存在,則傳回空字串。

checklist(min, max, response[, response[, response[, ...]]])
如果恰好是字串「yes」的response(回應)數量介於 min 和 max(含)之間,則傳回 True。
將 min 或 max 設為 -1 可以讓參數不適用。

weighted-checklist(min, max, reponse, weight[, response, weight[, response, weight[, response, weight[, ... ]]])
如果剛好是字串「yes」的每個回應的權重總和介於 min 和 max(含)之間,則傳回 True。 將 min 或 max 設為 -1 以使參數不適用

true()
鑑定為 True

false()
鑑定為 False


上一篇
Day22: 表單函數(Functions) Part 2
下一篇
Day24: 表單資料集(Form Datasets)
系列文
用 ODK 和 Access VBA 打造行動化資料收集流程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言