แชร์ผ่าน


ชนิดข้อมูล

หมายเหตุ

Microsoft Power Fx เป็นชื่อใหม่สำหรับภาษาสูตรของแอปพื้นที่ทำงาน บทความเหล่านี้คืองานที่อยู่ระหว่างดำเนินการ ในขณะที่เราแยกภาษาจากแอปพื้นที่ทำงาน รวมเข้ากับผลิตภัณฑ์ Microsoft Power Platform อื่นๆ และทำให้พร้อมใช้งานในรูปแบบโอเพนซอร์ส เริ่มต้นด้วย ภาพรวมของ Microsoft Power Fx สำหรับการแนะนำภาษา

ข้อมูลไหลผ่านแอปขนาดเล็กที่มีค่าไม่ต่อเนื่องคล้ายกับเซลล์ของสเปรดชีต ตัวอย่างเช่น ข้อมูลในฟิลด์ วันเกิด และฟิลด์ วันครบรอบ ทั้งงสองจะไหลผ่านเป็นค่า วันที่ ที่มีปี เดือน และวัน แอปรู้วิธีจัดรูปแบบค่าเหล่านี้ จำกัดข้อมูลป้อนเข้าให้เหมาะสมกับแต่ละค่าและแชร์ค่ากับฐานข้อมูล วันเกิดแตกต่างจากวันครบรอบ แต่ระบบจัดการพวกเขาในลักษณะเดียวกัน ในกรณีนี้ วันที่ เป็นตัวอย่างของ ชนิดข้อมูล

บทความนี้ให้รายละเอียดเกี่ยวกับชนิดข้อมูลที่แอปพื้นที่ทำงานสนับสนุน เมื่อแอปเชื่อมต่อกับแหล่งข้อมูลภายนอก ชนิดข้อมูลแต่ละชนิดในแหล่งที่มานั้นจะถูกแมปกับชนิดข้อมูลสำหรับแอปพื้นที่ทำงาน

ชนิดข้อมูล คำอธิบาย ตัวอย่าง
แบบบูลีน ค่า จริง หรือ เท็จ สามารถใช้โดยตรงใน If Filter และฟังก์ชั่นอื่นๆ โดยไม่มีการเปรียบเทียบ จริง
สี ข้อกำหนดสี รวมถึงช่องทางอัลฟา Color.Red
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0.5 )
สกุลเงิน ค่าสกุลเงินที่จัดเก็บในหมายเลขทศนิยม ค่าสกุลเงินเหมือนกับค่าตัวเลขพร้อมตัวเลือกการจัดรูปแบบสกุลเงิน 123
4.56
วันที่ วันที่ที่ไม่มีเวลา ในเขตเวลาของผู้ใช้แอป Date( 2019, 5, 16 )
วันที่เวลา วันที่ที่มีเวลา ในเขตเวลาของผู้ใช้แอป DateTimeValue( "May 16, 2019 1:23:09 PM" )
Decimal ตัวเลขที่มีความแม่นยำสูง การดำเนินการฐาน 10 และช่วงที่จำกัด 123
Decimal( "1.2345" )
GUID รหัสตัวระบุที่ไม่ซ้ำแบบส่วนกลาง GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
ไฮเปอร์ลิงก์ สตริงข้อความที่มีไฮเปอร์ลิงก์ "https://powerapps.microsoft.com"
Image สตริงข้อความ รหัสเฉพาะของทรัพยากรแบบสากล (URI) ไปยังรูปภาพในรูปแบบ .jpeg, .png, .svg, .gif หรือรูปแบบทั่วไปอื่นๆ ของเว็บ MyImage เพิ่มเป็นทรัพยากรแอป
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
สื่อ สตริงข้อความ URI สำหรับการบันทึกวิดีโอหรือเสียง MyVideo เพิ่มเป็นทรัพยากรแอป
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Number หรือ Float ตัวเลขที่มีความแม่นยำมาตรฐาน การดำเนินการฐาน 2 และช่วงที่กว้าง 123
8.903e121
1.234e200
ชุดตัวเลือก ตัวเลือกจากชุดของตัวเลือกที่สำรองไว้โดยตัวเลข ชนิดข้อมูลนี้รวมป้ายกำกับข้อความที่แปลได้แบบท้องถิ่นพร้อมค่าตัวเลข ป้ายกำกับจะปรากฏในแอป และค่าตัวเลขจะถูกจัดเก็บและใช้สำหรับการเปรียบเทียบ ThisItem.OrderStatus
เรกคอร์ด เรกคอร์ดของค่าข้อมูล ชนิดข้อมูลผสมนี้มีอินสแตนซ์ของชนิดข้อมูลอื่นๆ ที่ระบุไว้ในหัวข้อนี้ ข้อมูลเพิ่มเติม: การทำงานกับตาราง { Company: "Northwind Traders",
พนักงาน: 35,
NonProfit: เท็จ}
บันทึกการอ้างอิง การอ้างอิงไปยังเรกคอร์ดในตาราง การอ้างอิงดังกล่าวมักใช้กับการค้นหาโพลีมอร์ฟิค ข้อมูลเพิ่มเติม: การทำงานกับการอ้างอิง First(Accounts).Owner
Table ตารางของเรกคอร์ด เรกคอร์ดทั้งหมดจะต้องมีชื่อเดียวกันสำหรับฟิลด์ที่มีชนิดข้อมูลเดียวกัน และฟิลด์ที่ละเว้นจะถือเป็น ว่างเปล่า ชนิดข้อมูลผสมนี้มีอินสแตนซ์ของชนิดข้อมูลอื่นๆ ที่ระบุไว้ในหัวข้อนี้ ข้อมูลเพิ่มเติม: การทำงานกับตาราง Table( { FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
ข้อความ สตริงของข้อความ Unicode "Hello, World"
เวลา เวลาที่ไม่มีวันที่ ในเขตเวลาของผู้ใช้แอป เวลา( 11, 23, 45 )
สองตัวเลือก ตัวเลือกจากชุดของสองตัวเลือก ที่สำรองไว้โดยค่าบูลีน ชนิดข้อมูลนี้รวมป้ายกำกับข้อความที่แปลได้แบบท้องถิ่นพร้อมค่าบูลีน ป้ายกำกับจะปรากฏในแอป และค่าบูลีนจะถูกจัดเก็บและใช้สำหรับการเปรียบเทียบ ThisItem.Taxable
ออบเจ็กต์ไม่ระบุชนิด ออบเจ็กต์ชนิดที่ไม่ได้ประกาศ ออบเจ็กต์พื้นฐานสามารถเป็นชนิดที่มีอยู่และสามารถแปลงเป็นชนิดที่เข้ากันได้โดยใช้ฟังก์ชันต่างๆ เช่น Boolean(), Value(), Table() ฯลฯ สำหรับข้อมูลเพิ่มเติม โปรดดู ออบเจ็กต์ไม่ระบุชนิด และ การทำงานกับ JSON ParseJSON("{ ""ฟิลด์"" : 1234 }").Field

ชนิดข้อมูลเหล่านี้จำนวนมากมีความคล้ายคลึงกันและมีการแสดงที่เหมือนกัน เช่น ฟิลด์ ไฮเปอร์ลิงก์ ที่ถูกถือว่าเป็น ข้อความ ชนิดข้อมูลเพิ่มเติมให้ประสบการณ์เริ่มต้นที่ดีขึ้นในฟอร์มและการควบคุมอื่นๆ

Blank

ชนิดข้อมูลทั้งหมดสามารถมีค่าเป็น ว่างเปล่า (ในคำอื่นๆ ไม่มีค่า) คำว่า "null" มักใช้ในฐานข้อมูลสำหรับแนวคิดนี้

ใช้ฟังก์ชัน Blank ด้วย Set หรือฟังก์ชัน Patch เพื่อตั้งค่าตัวแปรหรือฟิลด์เป็น ว่างเปล่า ตัวอย่างเช่น, ตั้งค่า( x, ว่างเปล่า() ) ลบค่าใดๆ ในตัวแปรแบบส่วนกลาง x

ทดสอบหาค่า ว่างเปล่า โดยใช้ฟังก์ชัน IsBlank แทนค่า ว่างเปล่า ที่เป็นไปได้ ด้วยค่า ไม่-ว่างเปล่า โดยใช้ฟังก์ชัน Coalesce

เพราะข้อมูลทุกประเภทรองรับชนิดข้อมูล ว่างเปล่า บูลีน และ สองตัวเลือก อย่างมีประสิทธิภาพมีสามค่าที่เป็นไปได้

ทั้งสี่ประเภทข้อมูลเหล่านี้จะขึ้นอยู่กับสตริงข้อความ Unicode

ข้อความฝังตัว

สตริงข้อความแบบฝังในสูตรถูกล้อมรอบด้วยเครื่องหมายอัญประกาศคู่ ใช้เครื่องหมายอัญประกาศคู่สองตัวพร้อมกัน เพื่อเป็นตัวแทนของเครื่องหมายอัญประกาศคู่เดียวในสตริงข้อความ ตัวอย่างเช่น ใช้สูตรต่อไปนี้ในคุณสมบัติ OnSelect ของกาีรควบคุม Button:

Notify( "Jane said ""Hello, World!""" )

ให้ผลลัพธ์ในแบนเนอร์เมื่อกดปุ่ม โดยไม่ใส่เครื่องหมายอัญประกาศคู่แรกและสุดท้าย (ขณะที่คั่นสตริงข้อความ) และเครื่องหมายอัญประกาศคู่ซ้ำรอบๆ Hello, World! จะถูกแทนที่ด้วยเครื่องหมายอัญประกาศคู่เดียว:

ป๊อปอัปการแจ้งเตือนพร้อมข้อความที่เจนพูดว่า

เครื่องหมายอัญประกาศเดี่ยวใช้สำหรับ ชื่อตัวระบุ ที่มีอักขระพิเศษและไม่มีความสำคัญพิเศษภายในสตริงข้อความ

การใช้ตัวแปรในสตริง

ใช้การใช้ตัวแปรในสตริงเพื่อฝังสูตรภายในสตริงข้อความ การดำเนินการนี้มักจะง่ายกว่าและเห็นภาพผลลัพธ์มากกว่าการใช้ฟังก์ชัน Concatenate หรือตัวดำเนินการ &

วางเครื่องหมายดอลลาร์ $ นำหน้าสตริงข้อความและใส่สูตรที่ฝังในวงเล็บปีกกา {} หากต้องการใส่วงเล็บปีกกาในสตริงข้อความ ให้ใช้วงเล็บปีกกาซ้ำๆ: {{ หรือ }} สามารถใช้การใช้ตัวแปรในสตริงได้ทุกที่ที่สามารถใช้สตริงข้อความมาตรฐานได้

ตัวอย่างเช่น พิจารณาสูตรนี้ด้วยตัวแปรส่วนกลาง แอปเปิ้ล ตั้งค่าเป็น 3 และ กล้วย ตั้งค่าเป็น 4:

$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."

สูตรนี้ส่งคืนสตริงข้อความ เรามีแอปเปิ้ล 3 ลูก กล้วย 4 ลูก รวมเป็น 7 ผล ตัวแปร แอปเปิ้ล และ กล้วย จะถูกแทรกในข้อความแทนที่วงเล็บปีกกาพร้อมกับผลลัพธ์ของสูตรทางคณิตศาสตร์ แอปเปิ้ล+กล้วย ช่องว่างและอักขระอื่นๆ ที่อยู่ในวงเล็บปีกกาจะยังคงเหมือนเดิม

สูตรที่ฝังสามารถรวมฟังก์ชันหรือตัวดำเนินการใดๆ ก็ได้ ทั้งหมดที่จำเป็นก็คือผลลัพธ์ของสูตรสามารถถูกบังคับให้เป็นสตริงข้อความได้ ตัวอย่างเช่น สูตรนี้จะแทรก NickName หากมีการระบุ หรือ FirstName หากไม่ระบุในคำทักทาย:

$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!" )

หาก NickName ตั้งค่าเป็น "Joe" จากนั้นสูตรนี้จะสร้างสตริงข้อความ สวัสดี Joe ยินดีที่ได้พบคุณ หาก NickName เป็น ว่างเปล่า และ FirstName เป็น "Joseph" จากนั้นสูตรนี้จะสร้าง สวัสดี Joseph ยินดีที่ได้เจอคุณ แทน

การใช้ตัวแปรในสตริงสามารถรวมสตริงข้อความมาตรฐานในสูตรที่ฝังได้ ตัวอย่างเช่น หากไม่ได้ระบุ NickName หรือ FirstName เรายังคงระบุ "Friend" เป็นชื่อแทน:

$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"

การใช้ตัวแปรในสตริงสามารถวางซ้อนกันได้ พิจารณาตัวอย่างนี้โดยที่ชื่อ ชื่อ, ชื่อกลาง และ นามสกุล จะรวมกันเป็นคำทักทาย แม้ว่าหนึ่งหรือสองค่าเหล่านี้จะเป็น ว่างเปล่า จำนวนช่องว่างที่ถูกต้องจะอยู่ระหว่างส่วนชื่อ หากไม่ได้ระบุส่วนใดส่วนหนึ่ง การใช้ตัวแปรในสตริงภายในจะยุบเป็นสตริงว่าง และมีการแทนที่ด้วยฟังก์ชัน Coalesce ด้วย "Friend"

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
ชื่อ ชื่อกลาง นามสกุล ผลลัพธ์
John Qunicy Doe Welcome John Quincy Doe!
John ว่างเปล่า Doe Welcome John Doe!
ว่างเปล่า ว่างเปล่า Doe Welcome Doe!
ว่างเปล่า ว่างเปล่า ว่างเปล่า Welcome Friend!

ขึ้นบรรทัดใหม่

สตริงข้อความที่ฝังสามารถมีการขึ้นบรรทัดใหม่ได้ ตัวอย่างเช่น พิจารณาการตั้งค่าคุณสมบัติ Text ของตัวควบคุม Label ดังต่อไปนี้:

"Line 1
Line 2
Line 3"

สูตรข้างต้นส่งผลให้มีสามบรรทัดแสดงในตัวควบคุม label:

ตัวควบคุม text string และ label ที่ฝังแสดงสามบรรทัดด้วยบรรทัดที่ 1 บรรทัดที่ 2 และบรรทัดที่ 3

การขึ้นบรรทัดใหม่ยังได้รับการสนับสนุนด้วยการใช้ตัวแปรในสตริงดังที่แสดงด้านล่าง:

$"Line {1}
Line {1+1}
Line {1+1+1}"

สูตรข้างต้นให้ผลลัพธ์ที่เหมือนกัน:

สูตรการใช้ตัวแปรในสตริงและตัวควบคุม label แสดงสามบรรทัดด้วยบรรทัดที่ 1 บรรทัดที่ 2 และบรรทัดที่ 3

ทรัพยากรรูปภาพและสื่อ

ผ่านเมนู ไฟล์ คุณสามารถเพิ่มไฟล์รูปภาพ วิดีโอ และเสียง เป็นทรัพยากรแอป ชื่อของไฟล์ที่นำเข้าจะกลายเป็นชื่อทรัพยากรในแอป ในกราฟิกนี้ โลโก้ Northwind Traders ซึ่งมีชื่อว่า nwindlogo ถูกเพิ่มลงในแอปแล้ว:

ทรัพยากร Northwind

หากต้องการใช้ทรัพยากรนี้ในแอป ให้ระบุในคุณสมบัติ Image ของการควบคุม Image:

รูปภาพ Northwind

URIs สำหรับรูปภาพและสื่ออื่นๆ

คุณสามารถขุดลึกลงไปในตัวอย่างที่ผ่านมา โดยตั้งค่าคุณสมบัติ Text ของตัวควบคุม Label เป็น nwindlogo ป้ายกำกับแสดงสตริงข้อความ:

ข้อความ Northwind

แอปพื้นที่ทำงานอ้างอิงภาพแต่ละภาพหรือไฟล์สื่ออื่นๆ ไม่ว่าจะอยู่ในคลาวด์หรือเพิ่มเป็นทรัพยากรแอป โดยสตริงข้อความ URI

ตัวอย่างเช่น คุณสมบัติ Image ของตัวควบคุมรูปภาพยอมรับ ไม่เพียงแต่ทรัพยากรแอปเท่านั้น แต่ยังลิงก์ไปยังรูปภาพบนเว็บ เช่น "https://northwindtraders.com/logo.jpg" คุณสมบัตินี้ยังยอมรับรูปภาพแบบอินไลน์ที่ใช้ data URI scheme เช่นในตัวอย่างนี้:

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"

URI นั้นแสดงเพชรสีม่วงสองก้อนขนาดใหญ่ขึ้น:

เพชรคู่

คุณสามารถแสดงภาพล่าสุดที่ถ่ายไว้ใน การควบคุม Camera ถ้าคุณตั้งค่าคุณสมบัติ Image ของตัวควบคุมรูปภาพ เป็นคุณสมบัติ Photo ของการควบคุมกล้อง แอปถือภาพในหน่วยความจำและคุณสมบัติ Photo ของการควบคุมกล้อง ส่งกลับการอ้างอิง URI ไปยังภาพ ตัวอย่างเช่น คุณอาจถ่ายภาพ และคุณสมบัติของกล้อง Photo สามารถส่งคืนได้ "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1"

คุณใช้ URI เพื่ออ้างอิงรูปภาพหรือไฟล์สื่ออื่นที่เก็บไว้ในฐานข้อมูล ด้วยวิธีนี้ แอปจะไม่ดึงข้อมูลจริงจนกว่าจะต้องการจริงๆ ตัวอย่างเช่น ไฟล์แนบในตาราง Microsoft Dataverse อาจส่งคืน "appres://datasources/Contacts/table/..." ในตัวอย่างกล้อง คุณสามารถแสดงภาพนี้ได้โดยการตั้งค่าคุณสมบัติ Image ของตัวควบคุมรูปภาพสำหรับการอ้างอิงนี้ ซึ่งดึงข้อมูลไบนารี

เมื่อคุณบันทึกประเภทข้อมูลสื่อ เช่น รูปภาพ ไปยังฐานข้อมูล แอปจะส่งภาพหรือข้อมูลสื่อจริง ไม่ใช่การอ้างอิง URI

ขีดจำกัดของขนาด

ในฐานะที่เป็นสตริงข้อความและ URIs ชนิดข้อมูลเหล่านี้ไม่มีการจำกัดความยาวไว้ล่วงหน้า

ข้อมูลไบนารีที่อ้างอิงชนิดข้อมูลเหล่านี้ ยังไม่มีการจำกัดขนาดไว้ล่วงหน้า ตัวอย่างเช่น ภาพที่ถ่ายผ่านส่วนควบคุมกล้องที่อ้างอิงในขณะนี้ "appres://..." สามารถมีขนาดใหญ่และความละเอียดสูงเท่าที่กล้องของอุปกรณ์สามารถรวบรวม ความละเอียด อัตราเฟรม และคุณสมบัติอื่นๆ ของไฟล์สื่อไม่ได้ถูกจำกัดโดยชนิดข้อมูล แต่การควบคุมเฉพาะสำหรับการเล่นและการจับภาพสื่ออาจมีข้อจำกัดของตัวเอง

อย่างไรก็ตาม ขนาดข้อมูลทั้งหมดขึ้นอยู่กับจำนวนหน่วยความจำที่มีอยู่ในแอป เบราว์เซอร์ที่ทำงานบนคอมพิวเตอร์เดสก์ท็อปมักรองรับข้อมูลมากกว่า 100 เมกะไบต์ อย่างไรก็ตาม จำนวนหน่วยความจำที่มีอยู่ในอุปกรณ์ เช่น โทรศัพท์ อาจต่ำกว่าปกติ โดยทั่วไปอยู่ในช่วง 30-70 เมกะไบต์ ในการตรวจสอบว่าแอปของคุณจะทำงานภายในขีดจำกัดเหล่านี้หรือไม่ ให้ทดสอบสถานการณ์ทั่วไปในอุปกรณ์ทั้งหมดที่ควรใช้

วิธีปฏิบัติที่ดีที่สุด ให้เก็บข้อมูลไว้ในหน่วยความจำตราบเท่าที่จำเป็น อัปโหลดภาพไปยังฐานข้อมูลทันทีที่คุณทำได้; ดาวน์โหลดรูปภาพเฉพาะเมื่อผู้ใช้แอปร้องขอเท่านั้น

ตัวเลข

หมายเหตุ

Power Apps รองรับเฉพาะ Float วันนี้และเป็นชนิดของตัวเลขทั้งหมด การรองรับ Decimal จะถูกเพิ่มในเร็วๆ นี้

Power Fx รองรับตัวเลขสองประเภท: Decimal และ Float (พร้อมคำพ้องความหมาย ตัวเลข และ สกุลเงิน)

Decimal เหมาะที่สุดสำหรับการคำนวณทางธุรกิจส่วนใหญ่ สามารถแสดงตัวเลขในฐาน 10 ได้อย่างแม่นยำ ซึ่งหมายความว่า 0.1 สามารถแสดงได้อย่างแม่นยำและจะไม่เกิดข้อผิดพลาดในการปัดเศษระหว่างการคำนวณ มีช่วงกว้างเพียงพอสำหรับความต้องการทางธุรกิจ สูงสุด 1028 พร้อมความแม่นยำสูงสุด 28 หลัก Decimal เป็นชนิดข้อมูลตัวเลขเริ่มต้นสำหรับโฮสต์ Power Fx ส่วนใหญ่ ซึ่งใช้เมื่อมีการเขียน 2*2

Float เหมาะที่สุดสำหรับการคำนวณทางวิทยาศาสตร์ สามารถแสดงตัวเลขในช่วงที่กว้างกว่ามาก ได้ถึง 10308 ความแม่นยำถูกจำกัดไว้ที่ทศนิยม 15 ตำแหน่ง และคณิตศาสตร์จะขึ้นอยู่กับฐาน 2 ดังนั้นจึงไม่สามารถแสดงค่าทศนิยมทั่วไปบางค่าได้อย่างแม่นยำ Float ยังมีประสิทธิภาพที่สูงกว่าและเป็นที่นิยมหากนั่นคือปัจจัยและความแม่นยำไม่สำคัญ

เลขทศนิยม

ชนิดข้อมูล Decimal มักใช้ชนิดข้อมูล ชนิดข้อมูลทศนิยม .NET โฮสต์บางแห่ง เช่น คอลัมน์สูตร Dataverse ที่ทำงานใน SQL Serer จะใช้ชนิดข้อมูลฐานสิบของ SQL Server

Decimal คำนวณแบบเดียวกับที่คุณเรียนในโรงเรียน โดยใช้เลขฐาน 10 หลัก นั่นเป็นสิ่งสำคัญมากที่จะต้องหลีกเลี่ยงข้อผิดพลาดในการปัดเศษจากความแตกต่างเล็กๆ น้อยๆ ที่สามารถสะสมได้เมื่อใช้คณิตศาสตร์ฐาน 2 (ตามที่ใช้โดย Float)

ช่วงนี้มีตั้งแต่ค่าบวก 79,228,162,514,264,337,593,543,950,335 ไปจนถึงค่าลบ 79,228,162,514,264,337,593,543,950,335 ตัวคั่นทศนิยมสามารถวางไว้ที่ใดก็ได้ภายในตัวเลขเหล่านี้ ซึ่งให้ความแม่นยำสูงสุด 28 หลัก และยังคงแสดงได้อย่างแม่นยำ ตัวอย่างเช่น 79,228,162,514,264.337593543950335 สามารถแสดงได้เหมือนกันทุกประการ เช่นเดียวกับ 7.9228162514264337593543950335

จำนวนจุดทศนิยมลอยตัว

ชนิดข้อมูล Float หรือที่เรียกว่า หมายเลข หรือ สกุลเงิน ใช้มาตรฐานจุดทศนิยมลอยตัวที่เที่ยงตรงแม่นยำสองเท่าของ IEEE 754 มาตรฐานนี้ให้ตัวเลขจำนวนมากที่ใช้งานได้ตั้งแต่ –1.79769 x 10308 ถึง 1.79769 x 10308 ค่าที่น้อยที่สุดที่สามารถแทนได้คือ 5 x 10-324

Float สามารถแทนจำนวนทั้งหมด (หรือจำนวนเต็ม) ระหว่าง –9,007,199,254,740,991 (–(253 – 1)) และ 9,007,199,254,740,991 (253 – 1), แบบรวม ช่วงนี้มีขนาดใหญ่กว่าชนิดข้อมูลจำนวนเต็มแบบ 32 บิต (หรือ 4 ไบต์) ที่ฐานข้อมูลใช้โดยทั่วไป อย่างไรก็ตาม แอปพื้นที่ทำงานไม่สามารถแสดงชนิดข้อมูลจำนวนเต็ม 64 บิต (หรือ 8 ไบต์) คุณอาจต้องการจัดเก็บหมายเลขในฟิลด์ข้อความหรือใช้คอลัมน์การคำนวณเพื่อทำสำเนาของตัวเลขในฟิลด์ข้อความ เพื่อให้แมปเข้ากับชนิดข้อมูล ข้อความ ในแอปพื้นที่ทำงาน ในลักษณะนี้ คุณสามารถถือ แสดง และป้อนค่าเหล่านี้ รวมทั้งเปรียบเทียบกับค่าเหล่านั้นเพื่อพิจารณาว่ามีค่าเท่ากันหรือไม่ อย่างไรก็ตามคุณไม่สามารถคำนวณตัวเลขในฟอร์มนี้ได้

เลขทศนิยมเป็นค่าประมาณ ดังนั้นบางครั้งก็สามารถให้ผลลัพธ์ที่ไม่คาดคิดกับตัวอย่างเอกสารมากมาย คุณอาจคาดหวังสูตร 55 / 100 * 100 เพื่อส่งคืน 55 และ (55 / 100 * 100) - 55 เพื่อกลับเป็นศูนย์อย่างแน่นอน อย่างไรก็ตา มสูตรหลังจะคืนค่า 7.1054 x 10-15 ซึ่งเล็กมาก แต่ไม่เป็นศูนย์ ความแตกต่างเล็กๆ น้อยๆ นั้นไม่ได้ทำให้เกิดปัญหาแต่อย่างใด และแอปจะปัดเศษออกเมื่อแสดงผลลัพธ์ อย่างไรก็ตาม ความแตกต่างเล็กน้อยสามารถรวมกันในการคำนวณครั้งต่อไปและดูเหมือนจะให้คำตอบที่ผิด

ระบบฐานข้อมูลมักจะเก็บสกุลเงินและทำการคำนวณโดยใช้คณิตศาสตร์ทศนิยม ซึ่งมีช่วงที่เล็กลง แต่ควบคุมความแม่นยำได้มากขึ้น ตามค่าเริ่มต้น แอปพื้นที่ทำงานจะแมปสกุลเงินเในและนอกจากค่าทศนิยม ดังนั้น ผลลัพธ์อาจแตกต่างจากการคำนวณที่กระทำในรูปแบบฐานสิบแบบเนทีฟ หากความแตกต่างประเภทนี้จะทำให้เกิดปัญหา คุณอาจต้องการทำงานกับค่าเหล่านี้เป็น ข้อความ เช่นเดียวกับที่คุณอาจต้องการด้วยจำนวนเต็มขนาดใหญ่ที่อธิบายไว้ก่อนหน้าในส่วนนี้

ค่าเริ่มต้นและการแปลง

หมายเหตุ

Power Apps รองรับเฉพาะ Float วันนี้และเป็นชนิดของตัวเลขทั้งหมด การรองรับ Decimal จะถูกเพิ่มในเร็วๆ นี้

โฮสต์ Power Fx ส่วนใหญ่ใช้ Decimal ตามค่าเริ่มต้น สิ่งนี้ส่งผลกระทบ:

  • ตัวเลขสัญพจน์ในสูตร ตัวเลข 1.234 จะถูกตีความว่าเป็นค่า Decimal ตัวอย่างเช่น สูตร 1.234 * 2 จะตีความ 1.234 และ 2 เป็น Decimal และส่งกลับค่าผลลัพธ์ Decimal
  • ฟังก์ชัน Value Value( "1.234" ) จะส่งกลับค่า Decimal ตัวอย่างเช่น สูตร Value( "1.234" ) * 2 ฟังก์ชัน Value จะตีความเนื้อหาของสตริงข้อความ "1.234" เป็น Decimal

หากต้องการทำงานกับค่า Float จะใช้ฟังก์ชัน Float หากขยายตัวอย่างข้างต้น Float( 1.234 ) จะแปลง Float1.234 เป็น Float Float ยังใช้แทน Value เพื่อแปลงสตริงที่มีตัวเลขทศนิยม เช่น Float( "1.234" ) เป็น a Float ซึ่งจำเป็นหากไม่สามารถแสดงตัวเลขเป็น Decimal ได้

โดยสรุป:

การใช้ Decimal Float
ตัวเลขสัญพจน์ในสูตร 1.234 Float( 1.234 )
Float( "1.234" )
การแปลงจากสตริงข้อความ Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
การแปลงระหว่างชนิดตัวเลข Decimal( float ) Float( decimal )
การแปลงเป็นสตริงข้อความ Text( decimal ) Text( float )

การผสมชนิดตัวเลข

Float และ Decimal สามารถผสมได้อย่างอิสระ เมื่อผสมกัน ค่า Decimal จะถูกแปลงเป็นค่า Float เนื่องจากมีช่วงที่กว้างกว่า เนื่องจากอาจส่งผลให้สูญเสียความแม่นยำได้ จึงเป็นสิ่งสำคัญที่จะไม่ผสมทั้งสองอย่างโดยไม่จำเป็น เนื่องจาก Decimal เป็นชนิดข้อมูลสัญพจน์เริ่มต้น และฟังก์ชันตัวเลขส่วนใหญ่จะคงประเภทไว้ จึงค่อนข้างง่ายที่จะหลีกเลี่ยงการย้ายไปที่ Float โดยไม่ต้องการ

ตัวอย่างเช่น พิจารณาการคำนวณต่อไปนี้โดยใช้ pac power-fx repl หลังจากติดตั้ง Power Platform CLI เนื่องจากตัวเลขทั้งสองเป็น Decimal การคำนวณจึงเสร็จสิ้นใน Decimal และผลลัพธ์ยังคงความแม่นยำครบถ้วน:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

หากตัวถูกดำเนินการตัวที่สองเปลี่ยนเป็น Float แทน การคำนวณทั้งหมดจะดำเนินการใน Float และค่าเศษส่วนเล็กน้อยจะหายไป:

>> 1.0000000000000000000000000001 * Float(2)
2

วันที่ เวลา และ วันที่เวลา

โซนเวลา

ค่าวันที่/เวลา อยู่ในหมวดหมู่เหล่านี้:

  • เวลาท้องถิ่นของผู้ใช้: ค่าเหล่านี้จะถูกเก็บไว้ใน UTC (เวลาสากลเชิงพิกัด) แต่เขตเวลาของผู้ใช้แอปมีผลต่อวิธีที่แอปแสดงค่าเหล่านี้ และวิธีที่ผู้ใช้แอประบุ ตัวอย่างเช่ นช่วงเวลาเดียวกันนั้นปรากฏให้ผู้ใช้ในแคนาดาแตกต่างจากผู้ใช้ในญี่ปุ่น
  • ไม่ผูกกับเขตเวลา: แอปแสดงค่าเหล่านี้ในลักษณะเดียวกัน และผู้ใช้แอประบุด้วยวิธีเดียวกัน โดยไม่คำนึงถึงเขตเวลา ช่วงเวลาเดียวกันปรากฏในรูปแบบเดียวกันกับผู้ใช้ในแคนาดาเหมือนกับผู้ใช้ในญี่ปุ่น ผู้เขียนแอปที่ไม่คาดว่าแอปจะทำงานในเขตเวลาที่ต่างกันให้ใช้ค่าเหล่านี้

ตารางนี้แสดงตัวอย่าง:

ชนิดวันที่/เวลา ค่าที่เก็บไว้ในฐานข้อมูล ค่าที่แสดงและป้อน 7 ชั่วโมงทางตะวันตกของ UTC ค่าที่แสดงและป้อน 4 ชั่วโมงทางตะวันออกของ UTC
เวลาท้องถิ่นของผู้ใช้ วันอาทิตย์พฤษภาคม192019
4:00 AM
วันเสาร์พฤษภาคม182019
9:00 PM
วันอาทิตย์พฤษภาคม192019
8:00 AM
เขตเวลาอิสระ วันอาทิตย์พฤษภาคม192019
4:00 AM
วันอาทิตย์พฤษภาคม192019
4:00 AM
วันอาทิตย์พฤษภาคม192019
4:00 AM

สำหรับวันที่/เวลา เวลาท้องถิ่นของผู้ใช้ แอปพื้นที่ทำงานใช้เขตเวลาของเบราว์เซอร์หรืออุปกรณ์ แต่แอปแบบจำลองใช้การตั้งค่าของผู้ใช้ ใน Dataverse โดยทั่วไปการตั้งค่าเหล่านี้จะตรงกัน แต่ผลลัพธ์จะแตกต่างกันหากการตั้งค่าเหล่านี้แตกต่างกัน

ใช้ฟังก์ชั่น DateAdd และ TimeZoneInformation ในการแปลงเวลาท้องถิ่นเป็น UTC และกลับมาอีกครั้ง ดูตัวอย่างในตอนท้ายของเอกสารประกอบสำหรับฟังก์ชั่นเหล่านี้

ตัวเลขเทียบเท่า

แอปพื้นที่ทำงานยึดถือและคำนวณค่าวันที่/เวลาทั้งหมดไม่ว่าจะเป็น เวลาท้องถิ่นของผู้ใช้ หรือ เขตเวลาอิสระ ใน UTC แอปแปลค่าตามเขตเวลาของผู้ใช้แอป เมื่อแสดงและเมื่อผู้ใช้แอประบุ

เมื่อแอปพื้นที่ทำงานอ่านค่า เขตเวลาอิสระ จากแหล่งข้อมูลหรือเขียนค่าดังกล่าวไปยังแหล่งข้อมูล แอปจะปรับค่าโดยอัตโนมัติเพื่อชดเชยโซนเวลาของผู้ใช้แอป แอปจะถือว่าค่าเป็นค่า UTC สอดคล้องกับค่าวันที่/เวลาอื่นๆ ทั้งหมดในแอป เนื่องจากการชดเชยนี้ ค่า เขตเวลาอิสระ ต้นฉบับจะปรากฏขึ้นเมื่อแอปปรับค่า UTC สำหรับเขตเวลาของผู้ใช้แอป

คุณสามารถสังเกตพฤติกรรมนี้อย่างใกล้ชิดยิ่งขึ้น โดยใช้ฟังก์ชั่น Value ในการเข้าถึงค่าตัวเลขพื้นฐานสำหรับค่าวันที่/เวลา ฟังก์ชันนี้ส่งคืนค่าวันที่/เวลาเป็นจำนวนมิลลิวินาที นับตั้งแต่วันที่ 1 มกราคม 1970 00:00:00.000 UTC

เนื่องจากทุกค่าวันที่/เวลา ถูกเก็บไว้ใน UTC สูตร Value( Date( 1970, 1, 1 ) ) จะไม่กลับมาเป็นศูนย์ในส่วนใหญ่ของโลกเพราะฟังก์ชัน Date ส่งคืนวันที่ใน UTC ตัวอย่างเช่น สูตรจะส่งคืน 28,800,000 ในเขตเวลาที่ชดเชยจาก UTC ภายในแปดชั่วโมง ตัวเลขนั้นแสดงถึงจำนวนมิลลิวินาทีในแปดชั่วโมง

กลับไปที่ตัวอย่างของเราจากด้านบน:

ชนิดวันที่/เวลา ค่าที่เก็บไว้ในฐานข้อมูล ค่าที่แสดงและป้อน 7 ชั่วโมงทางตะวันตกของ UTC ฟังก์ชัน Value ส่งคืน
เวลาท้องถิ่นของผู้ใช้ วันอาทิตย์พฤษภาคม192019
4:00 AM
วันเสาร์พฤษภาคม182019
9:00 PM
1,558,238,400,000
(วันอาทิตย์พฤษภาคม192019
4:00 AM UTC)
เขตเวลาอิสระ วันอาทิตย์พฤษภาคม192019
4:00 AM
วันอาทิตย์พฤษภาคม192019
4:00 AM
1,558,263,600,000
(วันอาทิตย์พฤษภาคม192019
11:00 AM UTC)

การแปลงเวลา Unix

เวลา Unix แสดงจำนวนวินาทีตั้งแต่วันที่ 1 มกราคม 1970 00:00:00 UTC เนื่องจากแอปพื้นที่ทำงานใช้มิลลิวินาทีแทนที่จะเป็นวินาที คุณสามารถแปลงระหว่างสองรายการด้วยการคูณหรือหารด้วย 1,000

ตัวอย่างเช่น เวลา Unix แสดง 9 กันยายน 2001 เวลา 01:46:40 UTC เป็น 1,000,000,000 หากต้องการแสดงค่าวันที่/เวลาในแอปพื้นที่ทำงาน ให้คูณตัวเลขนั้นด้วย 1,000 เพื่อแปลงเป็นมิลลิวินาที จากนั้นใช้ในฟังก์ชัน Text สูตร ข้อความ(1000000000 * 1,000, DateTimeFormat.UTC) ส่งคืนสตริง 2001-09-09T01:46:40.000Z

อย่างไรก็ตาม ฟังก์ชันนั้นจะคืนค่า วันเสาร์ที่ 8 กันยายน 2001 18:46:40 ถ้าคุณใช้รูปแบบ DateTimeFormat.LongDateTime24 ในเขตเวลาที่ชดเชยเวลา -7 ชั่วโมงจาก UTC (7 ชั่วโมงทางตะวันตกของ UTC) ผลลัพธ์นี้แสดงให้เห็นว่าค่า วันที่เวลา อย่างถูกต้องขึ้นอยู่กับโซนเวลาท้องถิ่น

หากต้องการแปลงเป็นเวลา Unix ให้หารผลลัพธ์จาก ค่า ด้วย 1,000:
RoundDown( ค่า (UnixTime) / 1000, 0 )

หากคุณต้องการเวลา Unix ในค่า วันที่ สำหรับการคำนวณเพิ่มเติมหรือแสดงผลภายใน Power Apps ใช้สูตรนี้:
DateAdd( Date( 1970,1,1 ), UnixTime, Seconds )

SQL Server

SQL Server มี วันที่เวลา, วันที่เวลา2 และประเภทข้อมูลวันที่/เวลาอื่นๆ ที่ไม่มีเขตเวลาชดเชยและไม่ได้ระบุเขตเวลาที่พวกเขาอยู่ แอปพื้นที่ทำงานถือว่าค่าเหล่านี้ถูกจัดเก็บใน UTC และถือว่าเป็น เวลาท้องถิ่นของผู้ใช้ หากค่านั้นมีความหมายว่าเป็นเขตเวลาอิสระให้แก้ไขการแปล UTC โดยใช้ฟังก์ชัน TimeZoneOffset

แอปพื้นที่ทำงานใช้ข้อมูลเขตเวลาที่รวมอยู่ในฟิลด์ datetimeoffset เมื่อแปลงค่าเป็นตัวแทน UTC ภายในของแอป แอปใช้ UTC เป็นเขตเวลาเสมอ (ออฟเซ็ตเขตเวลาเป็นศูนย์) เมื่อเขียนข้อมูล

แอปพื้นที่ทำงานอ่านและเขียนค่าของชนิดข้อมูล เวลา ใน SQL Server เป็นสตริงข้อความใน รูปแบบระยะเวลา ISO 8601 ตัวอย่างเช่น คุณต้องแยกวิเคราะห์รูปแบบสตริงนี้และใช้ฟังก์ชั่น Time ในการแปลงสตริงข้อความ "PT2H1M39S" ไปยังค่า เวลา:

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
    Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)

การผสมข้อมูลวันที่และเวลา

วันที่, เวลา และ วันที่เวลา มีชื่อแตกต่างกัน แต่พวกเขาทั้งหมดมีข้อมูลเดียวกันเกี่ยวกับวันที่และเวลา

ค่า วันที่ สามารถรวมข้อมูลเวลา ซึ่งมักจะเป็นเที่ยงคืน ค่า เวลา สามารถนำข้อมูลวันที่ ซึ่งมักจะเป็น 1 มกราคม 1970 Dataverse เก็บข้อมูลเวลาด้วยฟิลด์ วันที่เท่านั้น แต่จะแสดงเฉพาะข้อมูลวันที่ตามค่าเริ่มต้น ในทำนองเดียวกัน บางครั้งแอปพื้นที่ทำงานจะแยกความแตกต่างระหว่างชนิดข้อมูลเหล่านี้ เพื่อกำหนดรูปแบบและตัวควบคุมเริ่มต้น

ไม่แนะนำให้เพิ่มและลบค่าวันที่และเวลาโดยตรงเนื่องจากเขตเวลาและการแปลงอื่นๆ อาจทำให้เกิดผลลัพธ์ที่สับสน ทั้งใช้ฟังก์ชั่น Value ในการแปลงค่าวันที่/เวลาเป็นมิลลิวินาทีก่อน และคำนึงถึงเขตเวลาของผู้ใช้แอป หรือใช้ฟังก์ชั่น DateAdd และ DateDiff เพื่อเพิ่มหรือลบจากหนึ่งในค่าเหล่านี้

ตัวเลือกและใช่/ไม่ใช่

ตัวเลือกและชนิดข้อมูลสองตัวเลือกให้สองตัวเลือกขึ้นไปสำหรับผู้ใช้แอปที่จะเลือก ตัวอย่างเช่น ตัวเลือก สถานะใบสั่ง อาจเสนอตัวเลือก ใหม่ จัดส่งแล้ว ออกใบแจ้งหนี้ และ ปิด ชนิดข้อมูลสองตัวเลือกมีเพียงสองตัวเลือก

ชนิดข้อมูลทั้งสองนี้แสดงป้ายกำกับของพวกเขาในบริบทสตริงข้อความ ตัวอย่างเช่น ตัวควบคุม label แสดงตัวเลือกสถานะใบสั่งอย่างใดอย่างหนึ่งหากตัวควบคุมของคุณสมบัติ Text ถูกกำหนดเป็นสูตรที่อ้างอิงตัวเลือกนั้น ป้ายกำกับตัวเลือกอาจมีการแปลสำหรับผู้ใช้แอปในสถานที่ต่างกัน

เมื่อผู้ใช้แอปเลือกตัวเลือกและบันทึกการเปลี่ยนแปลงนั้น แอปจะส่งข้อมูลไปยังฐานข้อมูลซึ่งเก็บข้อมูลนั้นไว้ในรูปแบบที่ไม่ขึ้นกับภาษา ตัวเลือกที่เลือกจะถูกส่งและจัดเก็บเป็นตัวเลข และตัวเลือกในชนิดข้อมูลสองตัวเลือกจะถูกส่งและจัดเก็บเป็นค่าแบบบูลีน

ป้ายกำกับมีไว้เพื่อการแสดงผลเท่านั้น คุณไม่สามารถทำการเปรียบเทียบโดยตรงกับป้ายกำกับได้เนื่องจากเป็นภาษาเฉพาะ แต่ละตัวเลือกมีการแจงนับที่ทำงานกับตัวเลขหรือค่าบูลีนที่แฝงอยู่แทน ตัวอย่างเช่น คุณไม่สามารถใช้สูตรนี้ได้:

If( ThisItem.OrderStatus = "Active", ...

แต่คุณสามารถใช้สูตรนี้:

If( ThisItem.OrderStatus = OrderStatus.Active, ...

สำหรับตัวเลือกส่วนกลาง (ซึ่งใช้ตารางร่วมกัน) ชื่อของชุดตัวเลือกจะตรงกับชื่อของตัวเลือกส่วนกลาง สำหรับตัวเลือกในเครื่อง (ซึ่งกำหนดขอบเขตไว้ที่ตาราง) ชื่ออาจมีชื่อของตาราง ลักษณะการทำงานนี้หลีกเลี่ยงความขัดแย้งถ้าหลายตารางมีตัวเลือกที่มีชื่อเดียวกัน ตัวอย่างเช่น ตาราง บัญชี อาจมีตัวเลือก OrderStatus และชื่อของมันอาจจะเป็น OrderStatus (บัญชี) ชื่อนั้นมีช่องว่างและวงเล็บอย่างน้อยหนึ่งรายการ ดังนั้นคุณต้องล้อมรอบด้วยเครื่องหมายอัญประกาศเดี่ยวถ้าคุณอ้างอิงในสูตร

นอกจากนี้ ค่าสองตัวเลือกยังสามารถทำงานเป็นค่าบูลีน ตัวอย่างเช่น ค่าสองตัวเลือกชื่อ TaxStatus อาจมีป้ายกำกับ ต้องเสียภาษี และ ที่ไม่ต้องเสียภาษี ซึ่งสอดคล้องกับ จริง และ เท็จ ตามลำดับ เมื่อต้องการแสดงให้เห็น คุณสามารถใช้สูตรนี้ได้:

If( ThisItem.Taxable = TaxStatus.Taxable, ...

คุณยังสามารถใช้สูตรเทียบเท่านี้ได้:

If( ThisItem.Taxable, ...