Localization, Access, and Source การเลือกแหล่งข้อมูลดาต้า

จากหน้าต่าง Editor ของการเขียนแอพด้วยแอพชีท ผู้ใช้งานสามารถเข้าถึงแหล่งข้อมูล เพื่อนำมาใช้แสดงในแอพ ได้หลายวิธี จากตารางข้อมูล รวมทั้งการเพิ่มตัวกรองการรักษาความปลอดภัย 
การควบคุมผู้ใช้งาน คนไหนสามารถเข้าถึงข้อมูล 
สามารถเปลี่ยนแอพ local ได้ด้วย 
ดูเพิ่มเติมที่ Locales: Diving Deeper.

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



วิธีกำหนดเงื่อนไขการทำงานของแอพ Expression Assistant and Expression Builder

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

การเข้าถึงตัวช่วยสร้างเงื่อนไข 
ไปที่คอลัมน์ แท็บ แล้วเลือก Edit ไอคอน 


จากนั้น คลิกเข้าไปที่รูปไอค่อน ขวดแก้ววัดปริมาตร เล็ก ๆ

ภาพหน้าต่าง แสดงตัวช่วยในการระบุเงื่อนไขการทำงาน 
ตัวช่วยในการสร้างมี 3 แบบด้วยกัน ให้เลือกใช้งาน คือ 
Pre-made สร้างไว้แล้ว สามารถนำมาใช้งาน  เพื่อเป็นตัวอย่าง หรือแก้ไขนิดหน่อย ให้ทำงานได้ 
แบบ 2 คือ ผู้ใช้งานเขียนเงื่อนไขเอง 
แบบ 3 คือ Test ทดสอบว่าเงื่อนไข ทำงานถูกต้อง 


วิธีใช้งานฟังก์ชั่นวันที่และเวลา AppSheet Date and Time Function

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

ฟังก์ชั่น วันที่และเวลา 
ในแอพชีพ มีอะไรบ้าง 

Current Date & Time

  • NOW() fเวลาปัจจุบัน อ้างอิงตามเวลาของอุปกรณ์ผู้ใช้งาน คอม หรือ มือถือ ก็ว่าไป
  • TODAY() วันนี้ เทียบได้กับ DATE(NOW())
  • TIMENOW() เวลาปัจจุบัน อ้างตามเวลาเครื่อง เทียบได้กะบ TIME(NOW()). TIME().
  • UTCNOW() เวลาปัจจุบัน โดยไม่มีเขตเวลา

ค่าของ NOW(), TODAY(), and TIMENOW() สะท้อนเขตเวลาเริ่มต้น ของอุปกรณ์ผู้ใช้งาน เช่น , ถ้าเขตเวลาเป็น Pacific Standard Time (PST), ค่าที่จะแสดงออกมาคือ UTC-08:00;ถ้าเขตเวลาเป็น Hong Kong, ค่าออกมาเป็น UTC+8:00.

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


หน่วยเวลา

  • HOUR() ช่วงเวลา เป็นขั่วโมง
  • MINUTE() ช่วงเวลาเป็นนาที
  • SECOND() ช่วงเวลาเป็นวินาที

แต่ละ ชั่วโมง HOUR(), นาที MINUTE(), วินาที SECOND() ยอมรับค่าการใส่ค่าช่วงเวลา ไม่ใช่ ค่าเวลา (งงแปบ) การแปลงค่าเวลา Time value เป็นช่วงเวลา Duration value, ลบออกด้วย Time value. ตัวอย่างแปลงค่า วันที่และเวลาปัจจุบัน เป็น ลำดับเวลา TIMENOW() - "00:00:00".

หน่วยวันที่

Date Components

  • DAY() วันจากเดือน คุณสมบัติ Date.
  • EOMONTH() คำนวณค่าวันสุดท้ายของเดือน จำนวนของเดือน ตัวประกอบ ของเดือน จำนวนวันของเดือนที่ไม่เท่ากัน และปี อธิสุระทิน
  • MONTH() จำนวนของดือนจากวันที่ 
  • YEAR() จำนวนปีจากวัน 
  • WEEKDAY() วันจาก  Date วันอาทิตย์  1, วันเสาร์ 7.
  • WEEKNUM() จำนวนสัปดาห์จาก Date เริ่มต้นด้วยวันอาทิตย์ 
  • WORKDAY() วันทำงาน เว้นวันหยุด และเสาร์อาทิตย์ 

รูปแบบของวันที่และเวลา เป็นข้อความ 

  • TEXT() ยอมรับ  DateTime, Date, หรือ  Time และรูปแบบข้อความ และคืนค่าเป็นข้อความ 

การใช้ตัวดำเนินการทางเวลา 

For backwards compatibility, we also support the function syntax below for a set of functions that have been supported from the earliest AppSheet release.

รูปแบบที่สามารถรองรับการใช้งาน จากเวอร์ชั่นเดิม ถึงปัจจจุบัน 

  • @(_NOW)มาเป็น  NOW().
  • @(_TODAY)เป็น  TODAY().
  • @(_TIMENOW) เป็น  TIMENOW().

ตัวอย่างการคำนวณเกี่ยวกับวันที่ 

  • TODAY() + 1: บวก 1 วัน  (a Number) ต่อจากวันที่ปัจจุบัน 
  • TODAY() - 3 : ลบ 3 วัน  (a Number) ต่อจากวันที่ปัจจุบัน 
  • [StartDate] + 7 : บวก 7 วัน  (a Number) จากวันที่กำหนด  
  • TODAY() - (WEEKDAY(TODAY()) - 1)  : วันที่ต่อมาจากวันที่กำหนด อาทิตย์ คือ  
  • TODAY() - (WEEKDAY(TODAY()) - 2)  :วันต่อจากวันที่กำหนดวันจันทร์ คือ .

ตัวอย่างการคำนวณเกี่ยวกับเวลา 

  • TIMENOW() + 1 : บวกเพิ่ม 1 ชม. (a Number) to the current Time.
  • TIMENOW() + "003:03:00" : บวก 3 ชม.และ 3 นาที  (a Duration) to the current Time.
  • TIMENOW() - "003:03:00" : ลบ 3 ชม. และ 3 นาที  (a Duration) from the current Time.

 ตัวอย่างวันที่และเวลา 

  • NOW() + 1 : บวก 1 วัน  (a Number) to the current DateTime.
  • NOW() - 3 : ลบ 3 วัน (a Number) from the current DateTime.
  • [TargetDateTime] + "012:59:00" : เพิ่ม 12 ชม. และ 59 นาที  (a Duration) to a DateTime value.
  • [TargetDate] + ([TargetTime] - "00:00:00")  : สร้างค่า  DateTime value จากวันที่และเวลา  Date value and a Time value.

ตัวช่วงระยะเวลา 

  • TIMENOW() - "12:30:00" : จากเวลาปัจจุบัน ถึง 12:30 PM (a Time).
  • NOW() - "03:15:30" : เวลาปัจจุบัน และ  3:15:30 AM (a Time) on December 30, 1899 (the default Date if none is included).
  • TODAY() - "12/30/2001" : วันนี้ และ ธันวาคม 30, 2001 (a Date).
  • [EndDate] - [StartDate] : จากวันจบ และวันเริ่ม  StartDate (a Date) at midnight and EndDate (a Date) at midnight.
  • IF(([StopWhen] > [StartWhen]), ([StopWhen] - [StartWhen]), (([StopWhen] + 24) - [StartWhen])) : ช่วงเวลา StartWhen และ  StopWhen (two DateTime values). See also: IF().

ช่วงเวลาในวัน เดือน หรือปี 

  • HOUR(TODAY() - [TargetDate]) / 24 : จำนวนวัน ระหว่าง วันนี้ และวันที่อยู่ในเป้าหมาย .
  • FLOOR(((HOUR([EndDate] - [StartDate])) - (([Years] * 365.24 * 24.0) + ([Months] * 30.4 * 24.0))) / 24.0)  : จำนวนวัน ระหว่าง วันเริ่ม และวันจบ และ สมมุตคอลัมน์จำลอง ปี และเดือน จำนวนของปี และเดือน  the number of days between the start and end dates. It assumes virtual columns Years and Months contain the number of years and months, respectively, computed using the formulas above.
  • FLOOR(((HOUR([EndDate] - [StartDate])) - ([Years] * 365.25 * 24.0)) / (30.4 * 24.0)) : จำนวนเดือนระหว่าง วันเริ่มและวันจบ 
  • FLOOR((HOUR([EndDate] - [StartDate])) / (365.24 * 24.0)) : the number of years betweenจำนวนปีระหว่าง วันเริ่ม และวันจบ  See also: FLOOR().

 ต.ย.การเทียบวันที่ เวลา และวันเวลา 

  • (TODAY() - [When]) = 7: แบบYes/No ระบุว่า ใช่หรือ ไม่ใช่ ตามเงื่อนไขที่กำหนด ก่อน 7 วัน ไหม 
  • ([When] - TODAY()) = 7 : a Yes/No valueใช่ไม่ใช่ วันที่ หรือ วันเวลา 7 วันหลังวันที่กำหนดไหม  
  • AND([OrderDateTime] >= [StartDateTime], [OrderDateTime] <= [EndDateTime]) : ใช่ไม่ใช่ วันเวลา ตามห้วง วงเล็บ ที่กำหนด หรือไม่   See also: AND().
  • AND([OrderDate] >= [StartDate], [OrderDate] <= [EndDate]) : ใช่ไม่ใช่ ค่าวันที่ของ  OrderDate column อยู่ระหว่างค่าเริ่ม ค่าจบไหม StartDate and EndDate field values. See also: AND().
  • AND(([When] >= (TODAY() - 7)), ([When] <= TODAY())) : ใช่ไม่ใช่ วันที่ หรือวันเวลา ที่กำหนดไหม  ภายใน 7 วัน  See also: AND().
  • TODAY() > ([TargetWhen] + 1): ใช่ไม่ใช่ วันที่ วันที่และเวลา ตามที่กำหนดไหม มากกว่าวันที่ผ่านมาเปล่า 
  • [Timestamp] > (NOW() - 1): ใช่ไม่ใช่ เวลาที่บันทึก ตามเงื่อนไขที่ระบุเปล่า  
  • [OrderDateTime] >= (NOW() - "001:30:00")  ใช่ไม่ใช่วันที่เวลา ของ  OrderDateTime  ภายใน 1 และ  30นาที ของ วันที่เวลาปัจจุบัน 
  • IN(MINUTE([_THIS] - "00:00:00"), LIST(0, 15, 30, 45)) : ค่า ใช่/ไม่ใช่ เมื่อ นาที ของวันเวลา หรือ ค่าเวลา ของคอลัมน์ปัจจุบัน แบ่ง 4 ส่วน  (i.e., is 0, 15, 30, or 45). See also: IN(), LIST().


บันทึก 

วันที่จะถูกนำมาใช้เป็นค่าคงตัว ภายในเงื่อนไขภาษา จะต้องเป็นตัวแทนค่า MM/DD/YYYY 

อย่างไรก็ตาม ข้อมูลค่าที่แท้จริง ขึ้นอยู่กับระบบ วันที่เวลา และรูปแบบที่คอมพิวเตอร์ และมือถือ ของ Sheet Table ของผู้ใช้งาน อีกครั้ง 

วิธีเลือกมุมมองแอพ View Types

ในการออกแบบและพัฒนาแอพด้วย AppSheet เราสามารถเลือกมุมมอง View หรือรูปแบบหน้าตาของแอพในการนำเสนอข้อมูล เพื่อให้ตรงกับชนิดของข้อมูล Data ของเรา ได้ มาก 8 รูปแบบ ด้วยกัน คือ


  1. Deck
  2. Table
  3. Gallery
  4. Detail
  5. Map
  6. Chart
  7. Form
  8. Dashboard
 
เริ่มจาก Deck and Table นำข้อมูลจากตารางข้อมูลมาจัดเรียงในรูปแบบของหน้าจอ ที่ใช้การเลื่อนขึ้นและลงในการไล่เรียงดูข้อมูลตามแถวของข้อมูล

Table จะใช้แสดงข้อมูลในรูปแบบที่กระชับ ช่วยให้การเลื่อนดูข้อมูลปริมาณมากๆ สะดวก
Deck จะแสดงข้อมูลของแต่ละรายการข้อมูลในรูปของ การวาง การ์ด วางไพ่บนโต๊ะ เหมาะกับข้อมูลรูปภาพ ถ้าไม่มีไฟล์รูปภาพ แต่ยังต้องการเรียกใช้มุมมองแบบ Deck ควรจะเพิ่มคอลัมน์จำลอง ที่มีชนิดของข้อมูลเป็นรูปย่อ thumbnail โดยใส่สูตรในช่อง editor เป็น TEXT_ICON(INITIALS([Column_Of_Type_Name]))

นอกจากแสดงรูปภาพแล้ว Deck จะแสดงข้อมูลอีก 2 คอลัมน์ และปุ่มคำสั่งการทำงาน ด้านล่างหน้าจอ เช่น โทรศัพท์ หรือ email

** Deck มุมมอง จะสามารถเลือกมุมมองย่อย หรือมุมมองอีกชั้น เพื่อแสดงข้อมูลข้อมูล ที่เกี่ยวข้องหรือ สัมพันธ์กันกับข้อมูล แรก

ต้องเข้าใจการสร้างความสัมพันธ์ระหว่างตาราง ***

3 Gallery :
มุมมองนี้ เหมาะสำหรับการนำเสนอข้อมูลที่เป็นอัลบัมรูปภาพ พร้อมตัวเลือก แสดงภาพย่อ แตะภาพ เพื่อแสดงภาพขนาดใหญ่ขึ้น หรือเต็มหน้าจอ
ตัวเลือกขนาดภาพ
small เป็นภายย่อ
Medium แสดงภาพ คู่กัน สองแถว
Large แสดงภาพขนาดใหญ่ แนวตั้ง

4.Detail (previously Slideshow)

มุมมองนี้ สำหรับการนำเสนอข้อมูล ในรูปแบบ สไลด์ภาพ นำเสนอ ที่ต้องการเน้นภาพขนาดใหญ่ และปุ่มควบคุมการทำงาน บริเวณด้านล่างหน้าจอ
การแก้ไขอย่างรวดเร็ว
ช่วยให้การแก้ไขข้อมูลบางคอลัมน์ สามารถทำได้สะดวก รวดเร้ว และบางคอลัมน์ ก็จะแก้ไขไม่ได้ เช่น
Key หลัก ห้ามซ้ำ
คอลัมน์ Read only
คอลัมน์ที่เชื่อมโยงสูตรคำนวณ
คอลัมน์ระบบ เช่น จำนวนแถว
Change คอลัมน์ที่มีค่าไม่คงตัว
คอลัมน์ที่ไม่อนุญาตการแก้ไข
5. Map:
แสดงข้อมูลเกี่ยวข้องกับ ที่ตั้ง ตำแหน่งในรูปแบบแผนที่
6. Chart:
นำเสนอข้อมูลในรูปแบบแผนผัง กราฟ
การนำเสนอข้อมูลในรูปแบบแผนผัง ก็ไม่ค่อยง่ายเท่าไหร่

ค่าแกน X,Y ขนาดและความละเอียดในการพล็อต
รูปแบบกราฟ กราฟแท่ง วงกลม แผนผัง อื่นๆ
7. Form:
แอพสามารถบันทึก ลายเซ็นต์ รูปภาพ และตำแหน่ง
ถ้าเราต้องการเก็บข้อมูล ผู้ใช้งาน รูปแบบฟอร์ม นับว่า เหมาะสม

8. Dashboard:
สามารถแสดงมุมมองมากกว่า 1 แบบ ในหน้าจอ เช่น ปฏิทิน แผนที่ แผนผัง อัลบัมภาพ ตาราง และสไลด์โชว์


วิธีแสดงภาพในแอพ AppSheet

การแสดงรูปภาพในแอพ แบบ Step by step 
ขั้นตอนแรก ให้เราสร้างไฟล์ ดาต้า โดยไปที่ Drive และสร้าง Google Sheet ขึ้นมา 

ตารางข้อมูล ตัวอย่าง เป็นการเก็บข้อมูล ยานพาหนะ และแสดงรูปภาพ ยานพาหนะ 

ยกตัวอย่าง การแสดงภาพ โลโก้ ในแอพ 
ตำแหน่งที่ต้องการจะแสดง คือ top หรือส่วนหัว หรือ ส่วนบน 

ขนาดไฟล์ภาพที่ต้องการคือ 768 x 400px 

ใช้แอพแต่งรูป หรือแอพออกแบบโลโก้ช่วยในการแต่งภาพ  เตรียมไว้ใช้งาน 

จากนั้น upload ไฟล์รูปภาพไปที่โฟลเดอร์ drive ควรจะเป็นโฟลเดอร์รองในโฟลเดอร์หลักของดาต้า ตาราง 


2 วิธีในตาราง Google sheet 

1 คือ คัดลอก URL หรือที่อยู่ของไฟล์ภาพ มาใส่ในช่อง image 

หรือ 
2 ใช้การระบุชื่อไฟล์ 






วิธีแสดงรูปภาพและเอกสาร Images and Documents

การสร้างแอพ มักจะมีข้อมูลที่เป็นไฟล์รูปภาพ และไฟล์เอกสาร มาเกี่ยวข้อง บทความนี้ เรามาศึกษา ความรู้ และวิธีการ แสดงภาพ และไฟล์เอกสาร ในแอพ ที่พัฒนาด้วย Appsheet กัน 

การเก็บไฟล์ภาพ 

สามารถแสดงไฟล์ภาพ และ เอกสาร ในแอพ 
รูปภาพ จะต้องเก็บในคอลัมน์ รูปภาพ หรือ image ในตาราง นะ 
สำหรับไฟล์เอกสาร จะเก็บในคอลัมน์ File ชนิด รูปภาพ หรือ เอกสาร image or document อาจจะเป็นลิงค์ URL หรือชื่อไฟล์ 

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

ถ้าเป็นไฟล์รูปภาพที่เก็บบน Google drive ต้องเลือก ลิงค์ที่แชร์และเข้าถึงได้ทุกคน 

รูปภาพ จาก คอมพิวเตอร์ หรือ มือถือส่วนตัว appsheet จะเข้าไม่ถึง จำเป็นต้องมีการอัพโหลดไปแหล่งเก็บไฟล์ภาพออนไลน์ เช่น Google drive หรือ Onedrive เป็นต้น 

เก็บชื่อไฟล์ภาพหรือไฟล์เอกสาร 

## เก็บได้ เมื่อไฟล์ภาพ หรือเอกสารนั้น อยู่บนระบบ Cloud Server ที่ appsheet รู้จัก 

ใน Editor ของการพัฒนาแอพ จะมีปุ่ม Browse เพื่อเข้าไปเลือกไฟล์ภาพ หรือ เอกสาร ใน Cloud Server ของเรา 

ถ้ามีการระบุชื่อไฟล์ภาพ หรือไฟล์เอกสาร ในตารางดาต้า ไฟล์ ควรจะอยู่ในโฟลเดอร์ เดียวกันกับไฟล์ ดาต้า นั้น เช่น  ไฟล์ดาต้าที่  /appsheet/data/MyApp ถ้ามีรูปภาพ จะถูกเก็บไว้ที่ image MyImage.jpg ในโฟลเดอร์เดียวกัน

ไม่อยากเก็บไฟล์ภาพ ไฟล์ตามที่แอพกำหนด เลือกเองได้ โดยสามารถระบุ โฟลเดอร์ใหม่ เพื่อเก็บไฟล์ภาพตามที่เราต้องการได้

ตอบข้อสงสัย ผมด้วย ตนอแรก
กล้องมือถือ ถ่ายภาพ ชัดมาก ไฟล์ใหญ่มาก แต่เมื่อนำมาใช้งานกับ appsheet ระบบจะลดขนาดลงเหลือที่ 600px
ขนาดไฟล์ภาพแนะนำคือ 600 x 600 px

การเลือกสไตล์รูปภาพ
fill with crop จะเหมาะสำหรับรูปภาพส่วนบุคคล
Fit with scale นิยมใช้กับโลโก้ คือจะปรับพอดีส่วนบน
ส่วน Background จะใช้ภาพเป็นฉากหลัง

ในการเตรียมไฟล์ภาพสำหรับใช้งานกับ Fill mode นั้น ขนาดไฟล์ภาพต้นฉบับ แนะนำให้เตรียมมาขนาด 768 x 400 px

การแสดงภาพใน google sheet
จะต้องเพิ่ม คอลัมน์อีก 1 คอลัมน์ ขึ้นมา แล้วใช้สูตร ช่วยในการดึงภาพขึ้นมาแสดง

Format:

=CONCATENATE("https://www.appsheet.com/template/gettablefileurl?appName=", ENCODEURL("AppName-Account#"), "&tableName=", ENCODEURL("TableName"), "&fileName=", ENCODEURL(+ImageColumnCell)) 

ตัวอย่าง:

=CONCATENATE("https://www.appsheet.com/template/gettablefileurl?appName=", ENCODEURL("Inventory-114348"), "&tableName=", ENCODEURL("Orders"), "&fileName=", ENCODEURL(+B2))) 



การหาชื่อแอพ รวมทั้งที่อยู่ URL ไฟล์ภาพ ดูที่ช่องที่อยู่ของ editor

หาชื่อตาราง
ไปที่ Data >> Tables

การฝังรูปภาพ Previe ภาพลงในช่องคอลัมน์ google sheet

Format:

=IMAGE(CONCATENATE("https://www.appsheet.com/template/gettablefileurl?appName=", ENCODEURL("AppName-Account#"), "&tableName=", ENCODEURL"TableName"), "&fileName=", ENCODEURL(+ImageColumnCell))) 

ตัวอย่าง :

=IMAGE(CONCATENATE("https://www.appsheet.com/template/gettablefileurl?appName=", ENCODEURL("Inventory-114348"), "&tableName=", ENCODEURL("Orders"), "&fileName=", ENCODEURL(+B2))) 


ถ้าเราสร้างแอพ และมีการสร้างลิงค์ URL ไฟล์ แล้ว ลิงค์จะทำงาน ไม่นาน ยกเว้นเราจะไปยกเลิกการตั้งค่า การ รปภ. security option ให้เป็น no “Require Image and File URL Signing.”

ถ้าเราไม่ติ้กเลือก รายการนี้ แอพของเรา ก็จะมีความปลอดภัยน้อย ลง ผู้ใช้งาน อาจจะเข้ามา แก้ไขแอพ โดยไม่ตั้งใจ หรือ ตั้งใจได้ ก็ต้องพิจารณา ให้ดี

ถ้าไม่จำเป็น ก็ไม่ต้อง ติ้กออก นะ


การแสดงภาพใน SmartSheet

อีกหนึ่งบริการไฟล์ตารางออนไลน์ใน cloud เดาเอา ว่า คล้ายๆ กับ Google drive / google sheet

แต่จริงๆ แล้ว ก็แตกต่างกันบ้าง ในเรื่องของการจัดเก็บ และการให้แสดงผล

เอาจริงๆ ผมก็ยังไม่มี account ของ Smartsheet จึงขอละไปก่อน มีเวลาและโอกาส จะทดสอบและมาเล่าต่อ


Image Caching การเก็บไฟล์ภาพชั่วคราว



ระบบจะเก็บไฟล์ภาพชั่วคราวไว้ที่ Cloudflare เพราะถ้าเก็บโดยตรงที่ server ของ Appsheet จะมีราคาแพง และแพงมากขึ้น หากมีการปรับขนาดภาพและแสดงผล


ถ้าเรา ใช้ภาพซ้ำ ไฟล์ URL ของภาพนั้น จะอัพเดท และเราจะเห็นภาพอัพเดท ต่อเมื่อ ไฟล์ภาพนั้น ออกจาก ระบบภาพชั่วคราวของ Cloudflare


ถ้าเราเปิดค่า "Secure Image Access" ระบบจะไม่เก็บภาพในระบบชั่วคราวที่ Cloudflare และการแสดงผลภาพจะได้รับความยากลำบาก โดยเราสามารถเปิดใช้งาน "Secure Image Access" โดยไปที่ Security > Options



วิธีใช้งานข้อมูล คอลัมน์ Columns: The Essentials

เมื่อเรามีตารางข้อมูล จะต้องทำความเข้าใจและความความรู้จักกับ แถว และ คอลัมน์ กัน
Row แถว เรียงกันไปเป็นแถวๆ  คณิตเรื่องกราฟ คือ แกน X
Column แท่งแนวตั้งหรือแนวดิ่งไหม ถ้าคณิตเรื่องกราฟ คือ แกน Y 
Concept หรือแนวคิด เรื่องนี้ 
โครงสร้างของคอลัมน์ 
พิจารณาองค์รวมของตาราง แล้ว ตรวจสอบดูข้อมูลของแต่ละ คอลัมน์ ชนิด และคุณสมบัติ หรือ ภาษาในการพัฒนาแอพ เขาจะใช้ว่า type and properties 

ในแอพชีพ ตัวเขียนแอพ Editor 

พื้นฐานคอลัมน์ ชื่อของคอลัมน์ และชนิดของข้อมูล

แต่ละคอลัมน์ต้องมีชื่อ จะไทย หรือ อังกฤษ ก็ได้ โดย Appsheet จะเลือก type หรือชนิดของข้อมูล ตามชื่อของคอลัมน์ที่เรากำหนด เช่น 
รูปภาพ ก็จะได้ type เป็น image 
วันที่ ก็จะได้เป็น  DAte

เป็นต้น 

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

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

**การเปลี่ยนชื่อคอลัมน์ ถ้าไม่จำเป็นก็ไม่ควรทำอย่างยิ่ง เพราะว่า จะเกิดข้อผิดพลาดของการทำงานได้ 

ถ้ามีข้อผิดพลาดระหว่าง ตารางข้อมูล และมีข้อความแจ้งเตือนข้อผิดพลาด error เราก็จะต้อง ซิงค์ข้อมูลกันใหม่ ผ่านคำสั่ง Regenerte 

KEYS 
อาจจะเป็นคอลัมน์ที่เก็บข้อมูล รหัสประจำประชาชน 13 หลัก ซึ่งข้อมูลจะต้องไม่ซ้ำกัน   ส่วนชื่อ และนามสกุล อาจจะมีโอกาสซ้ำกัน จึงไม่นิยมใช้นำมาเป็น Keys 


ถ้าผู้ใช้งานเปลี่ยนแปลงดาต้าใดๆ ในแอพ หมายถึงพวกเขาแก้ไขเปลี่ยนแปลงข้อมูล ผ่านระบบจำลองข้อมูล บนอุปกรณ์มือถือของพวกเขา เรียกว่า data cached on device 
เมื่อ มีการซิงค์ข้อมูลกับ Cloud Server ก็จะอัพเดทข้อมูลให้ 

คุณสมบัติ 2 ชนิด Roles and Behaviors 

Role จะทำหน้าที่พิจารณาคอลัมน์ ส่วน Behavior จะทำหน้าที่พิจารณาว่าคอลัมน์จะทำอะไร 

มีคุณสมบัติหลายอย่าง  ที่เราสามารถเปลี่ยนแปลง ทั้ง Role และ Behavior 
คุณสมบัติ ต่างๆ ได้แก่ 

Descriptive คำอธิบายแถว 
INITIAL VALUE ค่าเริ่มต้น 

SEARCHABLE สืบค้นได้ 
SCANABLE สแกนได้
SENSITIVE DATA ข้อมูลสำคัญ 

การฝึก Practice
ให้คนอ่าน ลงชื่อใช้งาน appsheet 
ต้องมีบัญชี gmail หรือ hotmail แนะนำ gmail 

แล้วไป 2 ที่ในแอพ คือ 

เปลี่ยนคุณสมบัติของคอลัมน์ 
เรียนเพิ่มเติม สูตรใน appsheet 

การเปลี่ยนค่า Role ของคอลัมน์ 
Key  ห้ามมีข้อมูลซ้ำ เป็นข้อมูลสำคัญ 
Label   ป้ายกำกับ 
Read-only   อ่านได้เพียงอย่างเดียว 
Hidden   ซ่อน 
ReQuired   จำเป็น ห้ามเป็นค่าว่าง 
DisplayName  แสดงชื่อ 

การเปลี่ยนค่า Behavior ของคอลัมน์ 
กำหนดเงือนไขในการควบคุม การทำอะไรของคอลัมน์ เช่น จำนวนค่าต่ำสุด หรือ มากสุด มีผลเมื่อ หรือ ไม่มีผลเมื่อ จำเป็นเมื่อ หรือ แก้ไขได้ เมื่อ 


min and max length, as well as your Valid_If, Show_If, Required_If, and Editable_If constraints, in the "Edit this column definition" view

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

** ถ้ามีการแก้ไข เปลี่ยนแปลง คุณสมบัติต่างๆ จะต้อง update ไปที่ Source Table ต้นทางด้วยเสมอ โดยการคลิกที่ Regenerate




วิธีการควบคุมตารางข้อมูล Add, Update, and Delete

วิธีการสร้างแอพด้วย Appsheet นั้น 
เราสร้างง่ายมากครับ เพียงมีแค่ตารางฐานข้อมูล ที่เราจะเรียกว่า Sheet หรือแผ่นงาน Excel นั้นเอง 
เราดึง table หรือตารางข้อมูล เพื่อเข้ามา ควบคุม บริหารและจัดการข้อมูล ผ่านหน้าจอแอพ นั้นเอง 

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

การควบคุมแผ่นงานไหม หรือตารางย่อย ของตารางหลัก สามารถควบคุมด้วยความระมัดระวัง โดยไปที่แท็บ Slices

การควบคุมขั้นสูง สามารถใช้คำสั่งเงื่อนไขแบบโต้ตอบ กับผู้ใช้งาน ในการควบคุม การใช้งานตารางข้อมูล คลิกที่รูป icon ขวดวัดปริมาตร เล็ก หรือ The Flask

การกำหนดเงื่อนไข จะมี 2 กรณี ได้แก่
อนุญาตการปรับปรุงหรือแก้ไข ข้อมูลเฉพาะบางคนเท่านั้น ปกติก็คือ admin หรือคนดูแลระบบ
อนุญาตการปรับปรุงข้อมูลบางแถว แต่ไม่อนุญาตแถวอื่นๆ

อนุญาตการเพิ่มข้อมูล แต่ไม่เห็นข้อมูลเดิม

กรณีนี้ เราอาจจะต้องการเก็บข้อมูล จากผู้ใช้งานทั่วไป และไม่ต้องการให้เห็นว่ามีข้อมูลเก่าเท่าใดแล้ว
สามารถเลือก จากคำสั่ง โดยไปที่แท็บ ตาราง DATA>TAble มองหา security section เลือกซ่อนแถวข้อมูลที่มีอยู่ Hide Existing Rows


ถ้าเลือก ตัวเลือกนี้ ข้อมูลเดิม จากตาราง ก็จะไม่ถูก Read


วิธีใช้งานนิพจน์ Expressions: The Essentials

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

มีหลายแห่งในการทำแอพ ที่ต้องเกี่ยวข้องกับวิธีการใช้  Expressions เพื่อให้แอพทำฃสนตามที่เราต้องการ และ การควบคุมการใช้งานในระดับเหนือ เช่น การใช้สูตร หรือ Formulas 
ข้อจำกัดการป้อนข้อมูลของคอลัมน์ 
ใครอยากขุดลึก ๆ เรื่องเนื้อหาของ Expressions ลองตามลิงค์ตัวอย่างแอพ ตัวนี้ดูนะครับ  Quote Calculator

AppSheet จะตรวจสอบเงื่อนไขนิพจน์ ให้ถูกต้องก่อนใช้งานเสมอ เช่น การใช้สูตร เพื่อให้เพิ่มค่าอัตโนมัติ ลงในช่องคอลัมน์ ข้อมูล 

เช่น ช่องป้อนข้อมูลเป็นตัวเลข Number 

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

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

ใครเคยใช้งานสูตรใน Ms Excel ก็จะเห็นว่า AppSheet จะใช้รูปแบบ โครงสร้าง syntax ที่คล้ายคลึงกันมากๆ 
อ่านอย่างเดียว ไม่เอาไปฝึก ก็ งั้นๆ ไม่มีประโยชน์ เท่าไร 
การเขียนเงื่อนไข 
อาจจะผสมระหว่าง
ข้อบังคับ 
ตัวเลข จำนวนเต็ม จำนวนเต็มบวก เต็มลบ
วันที่ และเวลา ในเครื่องหมายคำพูด Double qoutes เช่น  MM/DD/YYYY เวลา HH:MM:SS. ตัวอย่าง , "12/31/1999" and "10:15:00".

ข้อความในเครื่องหมาย "" เช่นกัน 
คอลัมน์ของตารางข้อมูล

ใช้อ้างชื่อคอลัมน์ตารางในเครื่องหมาย [] 

ลิงค์เพิ่มเติมในการเขียนการฝึกการใช้งานเงื่อนไข ตามที่เราต้องการ 

วิธีควมคุมการทำงานของแอพ Behavior: The Essentials

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

แยกกลุ่ม 3 กลุ่ม นะ
  1. การเลื่อนหน้าวิว หรือหน้าจอแสดงผล ภาษาแอพคือ navigate 
  2. การปรับแต่งดาต้า 
  3. การสื่อสารเชื่อมโยงภายนอกแอพ น่าจะหมายถึงส่งเมล แชร์ข้อมูลผ่าน Social MEdia ต่างๆ 

ค่าเริ่มต้น 
appsheet ฉลาดมากพอที่จะกำหนดค่าเริ่มต้น ให้กับแอพที่กำลังพัฒนา โดยอาศัยโครงสร้างดาต้า หรือข้อมูล ของตารางฐานข้อมูล  Sheet นั้นเอง 
แน่นอนว่า เราสามารถที่จะเปลี่ยนและแก้ไข ค่าเหล่านี้ได้เสมอ จากเมนู Behavior ซ้ายมือหน้าจอการพัฒนาแอพ นั้นเอง 

หลักคิดหลักๆ ของการทำงานคือ Action หรือ ตัวดำเนินการ  ทำหน้าที่เปลี่ยนสถานะของแอพ  การกระทำบางส่วนเป็น Action ที่ทาง Appsheet กำหนดให้เอง เรียนภาษาพัฒนาว่า System-defined ซึ่งเราสามารถเข้าไปปรับแต่งได้ หรือ เราจะสร้างเองขึ้นมาใหม่ก็ทำได้ 

ขั้นตอนการทำงานของแอพ Workflow เป็นอีกรูปแบบของ ตัวดำเนินการ เช่นกัน นะ 

สามารถแก้ไข ปรับแต่งได้เช่นกัน 

ตัวอย่างการใช้งาน Workflow ได้แก่ การส่ง SMS และข้อความแจ้งเตือนไปยังผู้ใช้งาน 

ซึ่งจะมีทางเลือกการทำงาน ขึ้นอยู่กับเหตุการณ์ เช่น เมื่อมีการแก้ไข หรือ update ข้อมูล ให้มีการส่ง SMS หรือ Email ตามปฏิทินเวลาที่กำหนด 

ส่งข้อความเข้ามือถือผู้ใช้งาน 
การเปลี่ยนดาต้า

นอกจากนั้น เวลาที่ไม่ได้ซิงค์ข้อมูลหรือ ไม่ได้เชื่อฐานข้อมูล ภาษาแอพคือ Offline เราสามารถกำหนดค่า การกระทำนั้นได้ 

ซึ่งในโอกาสต่อไป จะได้หาข้อมูล เรื่องการ SMS การส่งข้อความแจ้งเตือน เข้าหน้าจอมือถือ 


วิธีกำหนดหน้าตาของแอพ UX: The Essentials

หน้าตาขอกแอพ เลือกได้ และปรับแต่งเองได้บ้าง ผ่านเมนูที่ชื่อว่า UX: 
และคำศัพท์ในการพัฒนา ที่เขาใช้งานกันคือ View แปลตรงตัวตามไทย คือ มุมมอง  
โดย Appsheet ได้เตรียมหน้าตา หรือรูปแบบการแสดงผล 5-6 แบบด้วยกัน คือ เท่าที่จำได้นะครับ 
แบบ Desk คือแบบ โต้ะไหม มีหน้ากว้าง ๆ พื้นที่ โล่ง ๆ 
แบบ Table คือ จัดรูปแบบด้วยตาราง แต่ ไม่เห็นเส้นตาราง นะ hide line table 
Form
CAlendar ปฏิทิน 
MAp แผนที่ 
Chart แผนผัง 
Galary อัลบัม เหมาะแอพพวกแสดงรูปภาพไหม 
Dashboard แผ่นงาน 


เอาเป็นว่า ลองเลือกดู ให้มันเหมาะกับข้อมูลของเรา และความต้องการ ความชอบ ส่วนตัวของเรา ครับ 

สร้างบ้านตามใจผู้อยู่ คงเคยได้ยินกัน ใช่ไหม อิอิอิ
การสร้างความประทับใจให้ผู้ใช้งาน เป็นอีก 1 แนวคิด ที่ทำแอพประสพความสำเร็จ 
ส่วนตัวแอดเอง ชอบง่าย เพราะง่ายคือ สร้างสรรค์ 555

บอกความเป็นตัวตนของคุณผ่าน UX 
อื่นๆ ของ UX ผู้ใช้งาน สามารถปรับสีแม่แบบ อักษร รวมทั้งควบคุม ลำดับ การแสดงข้อมูลจากตาราง 


columns are ordered

Barcode Scanner วิธีการสแกนบาร์โค่ด

การทำแอพ หรือทำฐานข้อมูล จะต้องมี อย่างน้อย 1 คีย์หลักของตาราง ที่ตัวเลขค่า จะต้องไม่ซ้ำกัน Key และ Unique 
ปกติก็จะเป็น รหัสประจำตัว ปชช. 13 หลัก
เบอร์โทรศัพท์ 
รหัสสินค้า เป็นต้น 

อาจจะเป็นตัวเลข อย่างเดียว หรือ ข้อความอย่างเดียว หรือ ลูกผสม ทั้งตัวเลขและตัวอีกษรผสมกัน 

จากนั้น จะแปลงข้อความ หรือ ตัวเลขรหัสรายการ เป็นแท่งรหัสบาร์โค้ด หรือ คิวอาร์โค้ด 

จากนั้น ใช้อุปกรณ์ อ่านรหัส บาร์โค้ด หรือ คิวอาร์โค้ด ในการอ่านข้อมูล เพื่อนำเข้าข้อมูล เพื่อการสืบค้นข้อมูล เป็นต้น 

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

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

ในการสร้างแอพ sheet 
ก็จะมีความสามารถของการ ใช้กล้อฃมือถือ ในการสแกนบาร์โค่ด ในการบันทึก ค้นหา ข้อมูล ได้เช่นกัน 
ในหลังบ้านการพัฒนาแอพ ไปที่ Table หรือ ตารางฐานข้อมูล ที่กำลังพัฒนา 
โครงสร้างตาราง หรือ column structure 
เลือก คอลัมน์ที่ต้องการกำหนดค่า ในการสแกน รหัสบาร์โค้ด 
คลิก OTHER ภาษาไทย คือ อื่นๆ 
เลือก Scanable หมายถึง สามารถสแกนได้ 

ตั้งค่าแล้ว ก็ลองทดสอบดูสิครับ 
ได้ 2 วิธีด้วยกัน คือ 
บนมือถือ และบนคอมพิวเตอร์  สะดวกแบบไหนก็เลือกแบบนั้น น่าจะได้ผลเท่ากัน 
แต่แนะนำให้ลองทั้งสองแบบ 

การอ่านบาร์โค้ด ผ่านโปรแกรมเว็บ หรือภาษาพัฒนา เรียกว่า Browser จะไม่รองรับ นะ แต่ ต้องใช้ตัวช่วยจำลองหน้าจอของ Appsheet หรือ Emulatot บนหน้าจอทำแทน 

ส่วน ทดสอบบนมือถือ จะรองรับ และสะดวกกว่า เลยนะ 

ข้อจำกัดการสแกนรหัสบาร์โค้ด
รองรับ กล้องหลักของมือถือ 
รองรับค่า QR-CODE แบบแถวเดียว เท่านั้น ถ้าแบบหลายบรรทัด ยังไม่รองรับ

ใช้โปรแกรม ท่องเน็ตในการสแกนไม่ได้ จะแสดงค่า  "111122333"

รูปแบบค่าบาร์โค้ด และ คิวอาร์โค้ด ที่ AppSheet รองรับ ได้แก่
  • UPC-A and UPC-E
  • EAN-8 and EAN-13
  • QR Code
  • Interleaved-Two-of-Five (ITF)
  • Code 39
  • Code 93
  • Code 128
  • Codabar
  • Data Matrix
  • PDF 417



Capturing Images จับภาพแอพชีท

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

จะเอากี่รูปกี่แบบก็ตั้งชื่อคอมลัมน์ในตารางเป็น รูปภาพ 1 รูปภาพ 2 รูปภาพ 3

จะเอารูปย่อ หรือ รูปปกติ อันนี้แหละ แอพ ต้องให้เรา เลือกการตั้งค่า นิดหนึ่ง จากหลังบ้านการพัฒนาแอพไปที่เมนู ชื่อว่า Data > Column Structure tab

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

สำหรับระบบ iOS ก็จะเปิดกล้องได้เลย ว่างั้น ไม่ได้ลองนะ ไม่มี iphone 5555

สำหรับ โปรแกรมท่องเน็ต เช่น Chrome or IE

เปิดแอพที่พัฒนา ขึ้นมา จะมี icon การจับภาพ ให้แตะ แล้ว จะเข้าไปเลือกไฟล์รูปภาพ เข้ามาได้ ส่วน กรณีมีกล้องในตัว ไม่แน่ใจ ว่ามันรองรับหรือเปล่า ต้องลองกันเอง แล้วมาเล่าให้ฟังด้วย ถ้ามีโอกาส

เลือกว่าจะเชื่อมตารางข้อมูล หรือภาษาพัฒนาคือ ซิงค์ข้อมูลกันเลยไหม ขึ้นกับ speed เน็ต นิดหน่อย


การควบคุม ขนาดรูปภาพ ทำได้ที่เมนู Editor > UX > Options > Image
ค่าปกติคือ 600 พิกเซล
ต่ำ 200 พิกเซล
กลาง 800 พิกเซล
สูง 1600 พิกเซล
Full เต็มขนาดจากกล้อง ไม่แน่นำนะ มันโหลดนาน และกล้องรุ่นใหม่ มันถ่ายโครตละเอียด และสวยงาม อาจจะหลาย MB มันจะทำให้แอพ ค้างได้ นะ

ระบบจับภาพ ทำงานยังงัย
จำเป็นต้องรู้ไหม 55555
ทุกภาพจะเก็บที่ความละเอียดสูงสุด บนมือถือของคนที่ถ่าย
จากนั้น แอพจะซิงค์ข้อมูลภาพไปเก็บไว้ที่ระบบฐานข้อมูลที่เขาเรียกกันว่า ก้อนเมฆ หรือ Cloud Server นั้นเอง ในขนาดความละเอียดที่เล็กลง เพื่อให้สามารถเรียกดูได้บนมือถือ นั้นเอง

รูปภาพที่เก็บในฐานข้อมูล Cloud ปกติจะแยกเก็บ และแอพ มันฉลาดพอที่จะสร้างแฟ้มเก็บภาพให้เรา ในแฟ้มรอง หรือภาษาอังกฤา คือ Sub Directory นั้นเอง
ค่ากำหนด คือ {TableName}_Images by default.

ถามว่า ว่างพอที่จะระบุแหล่งภาพที่ต้องการจัดเก็บไหม ได้ไหม แน่นอนทำได้อยู่แล้ว ขึ้นอยู่กับความขยันของแต่ละคน
ถ้าแอพ ไม่ได้ต่อกับ Cloud Server Storage จะเก็บภภาพที่ไหน
อืมๆๆๆๆ
ไม่แนะนำ ขอผ่าน
ภาพทุกภาพที่บันทึก จะได้ชื่อที่มันแตกต่างกัน หรือ Unique
หวังว่าบทความนี้จะเป็นประโยชน์ สำหรับคนที่หามันเจอ ฝากกดไลท์ กดแชร์ให้ด้วย หากเห็นว่ามีประโยชน์
ขอบคุณมากๆ คราบ
thaifreewaredownload.com