[SQL] การบอกลำดับของ Record จากการ Select ข้อมูล

วันนี้มีเพื่อนที่ทำงานถามว่าจะเพิ่มคอลัมน์ เพื่อบอกลำดับของข้อมูลอย่างไร เพราะใน DB ก็ไม่ได้เก็บอยู่แล้ว จะเขียนใน Query หรือ มา Loop และ Count เองใน Code ดี ข้อมูลใน DB (Input) Firstname   | Lastname   | Salary กอไก่       | ไข่เจียวหมูสับ | 50,000 ขอไก่       | เกิดก่อนไก่   |  60,000 คอควาย     | รวยนะจ๊ะนะ   | 200,000 ผลลัพธ์ที่ต้องการ (Output) No | Firstname | Lastname   | Salary 1 | กอไก่    | ไข่เจียวหมูสับ | 50,000 2 | ขอไก่    | เกิดก่อนไก่   |  60,000 3 | ค.ควาย  | รวยนะจ๊ะนะ   | 200,000 จากที่เกริ่นทิ้งไว้ ว่ามี 2 ทางให้ทำ คือ Query ออกมาเลย หรือ เอาข้อมูลมา Loop Code เอาเอง ซึ่งในกรณีนี้ ผมขอ Query…

[SQL SERVER] วิธีแก้ Error: 15138 – The database principal owns a schema in the database, and cannot be dropped

Microsoft SQL Server

เมื่อวันก่อนได้งานจากหัวหน้าให้เขียน Script เพื่อจัดการ User กับสิทธิื หลังการ Restore ฐานข้อมูล เมื่อลองเขียนคำสั่งเพื่อ Drop User พบ Error Message ดังนี้ The database principal owns a schema in the database, and cannot be dropped. (Microsoft SQL Server, Error: 15138) จาก Error Message ด้านบน สามารถสรุปสาเหตุของปัญหานั้น เกิดจาก User ที่เราต้องการจะ Drop นั้นเป็นเจ้าของ Schema ของฐานข้อมูลนี้ โดยเราสามารถตรวจสอบ Schema ที่ User นั้นๆจัดการอยู่ จากคำสั่ง SQL ดังนี้ หมายเหตุ: sys.schemas มองง่ายเลย คือ กระดาษ Note ที่เก็บข้อมูล Schema ของฐานข้อมูลนั่นเอง จากข้อมูลข้างต้นได้แสดงให้เห็นว่า User invest เป็นเจ้าของ Schema INVEST อยู่ เราจึงไม่สามารถ Drop User ได้ เราจึงจำเป็นต้องโอนสิทธิ์การดูแล Schema INVEST ไปให้ User อื่น เช่น dbo ตามคำสั่ง ดังนี้ ทดสอบ SELECT Schema ที่ User ดูแลด้วยคำสั่ง ดังนี้ ทดสอบ Drop user อีกครั้งพบว่าสามารถทำได้ ดังรูป

[VB6] Regular Expression

ถึง VB6 เป็นเทคโนโลยีที่เก่า ล้าสมัยไปแล้ว แต่อย่าลืมว่าระบบงานบางระบบยังคงใช้ภาษานี้อยู่ ซึ่งการปรับเปลี่ยน หรือ Port ไปทั้งระบบ อาจจะมีค่าใช้จ่ายที่สูง ทางที่ดีที่สุด คือ พัฒนาส่วนเสริมให้มันต่อไปเรื่อยๆ วันนี้ผมจะมาแนะนำการ Validate ข้อมูลโดยใช้ Regular Expression (ตกใจหละซิ เพราะหลายคนคิดว่ามันน่าจะมีใน Java / C# กัน) โดยผมจะแนะนำขั้นตอนการทำ โดยใช้ตัวอย่างของการนำ Regular Expression มาหา IP Address ที่อยู่ในช้อความ ตามขั้นตอน ดังนี้ สิ่งที่ควรู้รู้ก่อนดูตัวอย่าง Code การใช้งาน ตัวอย่าง Code การใช้งาน ผลการทำงาน Download ตัวอย่าง Source Code แหล่งข้อมูล

วิธีการ Flash Rom Lenovo P780

เชื่อว่าหลายๆคนคงชื่อมือถือ Lenovo รุ่น P780 มาให้ แต่ Rom มันเก่ามาก คือ รุ่น P780_ROW_S110_130629.rar และมันก็ไม่อัปเดตอะไรด้วย รวมถึง Rom นี้มันยังไม่ได้ Optimize ถึงทำให้มีพื้นที่เหลือให้ลงโปรแกรมเพียง 100-200 MB เท่านั้น วันนี้ผมมาแนะนำการลง Rom รุ่นใหม่กว่า คือ P780_ROW_S116_130828.rar ซึ่งมีพื้นที่เหลือถึง 700 MB และสามารถอัปเดตแบบ OTA ได้ด้วย สิ่งที่ต้องมี ขั้นตอนการ Flash Rom แหล่งที่มาของข้อมูล

[SQL Server] การสร้าง Function ใช้เองใน Database ของเรา ตอนที่ 2(Scalar-valued Function )

Microsoft SQL Server

จากบทความที่แล้วที่ผมได้แนะนำเรื่องการสร้างฟังก์ชั่นใช้เองใน Database (User-Defined Function)ของเรา วันนี้ผมมาแนะนำการสร้างฟังก์ชั่นรูปแบบแรก Scalar-valued Function กันนะครับ Scalar-valued Function คือ อะไร Scalar-valued Function คือ ฟังก์ชั่นที่คืนค่าเป็นข้อมูลชนิดพื้นฐานเพียงตัวเดียว เช่น datetime, int ยกเว้นชนิดข้อมูลแบบ text, ntext, image หรือ timestamp ที่ไม่สามารถสั่งให้คืนค่าได้ โดยการเรียกใช้สามารถเรียกใช้แบบเดียวกันกับฟังก์ที่เคยใช้งานมา โดยส่วนชื่อคอลัมน์ที่ต้องการเข้าไป เช่น SUM, Max เป็นต้น การสร้าง Scalar-valued Function ใน MS SQL Server เริ่มสร้าง Function ซึ่งเราสามารถสร้าง Scalar-valued Function ได้สองวิธี ดังรูป เมื่อเลือกเมนูเรียบร้อย SQL Server สร้างโครงสร้าง Function ให้มา เพื่อเป็น Guideline ในการพัฒนา โดยมีรายละเอียด ดังรูป หมายเลข 1 คือ ส่วนของ Function Declaration ที่กำหนดชื่อ และ Return Type ของ Functionหมายเลข 2 คือ กำหนดตัวแปร เพื่อเอาไว้ใช้ในการ Returnหมายเลข 3 คือ ส่วนที่เอาไว้แสดงแนวคิดการทำงานของฟังก์ชั่นต่างๆหมายเลข 4 คือ คำสั่งที่ใช้ Return ตัวแปรที่กำหนดไว้ในหมายเลข 2 เมื่อเขียนคำสั่งเสร็จแล้ว ให้กด Execute เพื่อให้ฐานข้อมูลตรวจสอบความถูกค้องของ Syntax และเป็นการบ่อกให้ DBMS รับรู้ถึงการมีฟังก์ชั่นนี้ ตัวอย่างโจทย์ สร้างฟังก์ชั่น ShiftWorkingDay อย่างง่าย ซึ่งมีหน้าที่ในการเลื่อนวันออกไปเป็นวันทำการถัดไป เช่น ถ้าเลือกวันที่ที่ส่งเข้ามาวันอาทิตย์ ระบบต้องเลื่อนเป็นวันทำการถัดไป คือ วันจันทร์นั่นเอง โดยมี Parameter…

[SQL Server] การสร้าง Function ใช้เองใน Database ของเรา ตอนที่ 1(แนะนำ)

Microsoft SQL Server

ปกติแล้ว DBMS จะมีฟังค์ชั่นพื้นฐานในด้านต่างๆมาให้ในระดับนึงได้ อาทิ เช่น ฟังก์ชั่นด้านตัวเลข ได้แก่ SUM, AVG เป็นค้น ฟังก์ชั่นด้านตัวอักษร ได้แก่ Trim(), Replace เป็นต้น แต่บางครั้งงานบางชนิด ฟังก์ชั่นเหล่านี้ไม่สามารถตอบโจทย์ หรือ Business Rule ที่เราต้องการได้ ซึ่งตัว SQL Server หรือ DBMS ตัวอื่น ได้อนุญาตให้เราสร้างฟังก์ชั่นใช้เองได้ หรือ เรียกว่า User-Defined Function (ผมเน้นไปในตัว SQL Server) โดยสามารถสร้างฟังก์ชั่นได้ 3 ลักษณะ ดังนี้ Scalar-valued Function คือ ฟังก์ชั่นที่คืนค่าเป็นข้อมูลชนิดพื้นฐานเพียงตัวเดียว เช่น datetime, int ยกเว้นชนิดข้อมูลแบบ text, ntext, image หรือ timestamp ที่ไม่สามารถสั่งให้คืนค่าได้ โดยการเรียกใช้สามารถเรียกใช้แบบเดียวกันกับฟังก์ที่เคยใช้งานมา โดยส่วนชื่อคอลัมน์ที่ต้องการเข้าไป เช่น SUM, Max เป็นต้น Inline Table-valued Function คือ ฟังก์ชั่นที่คืนค่าเป็นข้อมูลชนิดตาราง ซึ่งมีการทำงานที่ไม่ซับซ้อนมากนัก(ยุ่งเกี่ยวกับ Table หรือ View เพียงอันเดียว) โดยมีจุดสังเกตุเวลาตอนเรียกใช้งานต้องใส่หลังคำว่า FROM Multi-Stalement Table-valued Function คือ มีลักษณะเหมือนกับ Inline Table-valued Function แต่จะมีการทำงานที่ซับซ้อนมาก(ยุ่งเกี่ยวกับ Table หรือ View หลายอัน) จึงต้องมีการสร้างตาราง Temp เพิ่มมาพักข้อมูลก่อนที่จะ Return ตารางออกมา โดยการสร้าง และใช้งานฟังก์ชั่น แต่ละแบบนั้น ผมค่อยเขียนบทความแนะนำต่อไปครับ

[WordPress] เพิ่ม Google Map ลงใน Post หรือ Page ของเรา ตอนที่ 2

จากบทความที่แล้ว ที่ผมได้แนะนำ Plugin MapPress Easy Google Map ไปแล้วนะครับ วันนี้เราจะมาลองใช้งานจริงกันครับ โดยมีสิ่งที่ต้องรู้ดังนี้ POI คือ อะไร ย่อมาจาก Point of Interest คือ จุดที่ผู้ใช้สนใจนั้นเอง ซึ่งอาจจะเป็นสถานที่ต่างๆ จุดนัดพบ เป็นต้น ถ้าใน GOOGLE Map เอาค่า POI มาจากไหน เปิด Google Map ขึ้นมา แล้วลองหาข้อมูล ร้านแว่นตาคนจน จะได้ข้อมูล จุดสีแดงตัว A เมื่อได้ข้อมูลมาแล้ว ให้คลิกขวาเลือก “นี่คืออะไร” (ถ้าภาษาอังกฤษ What is this) ถึงขั้นตอนนี้ จะพบเลข POI ในช่องที่ Highlight สีเหลือง ดังรูป ค่า POI ที่ได้ คือ 13.726639,100.494875 เมื่อได้ POI แล้ว เรายัดลง WordPress ยังไง ไปที่บทความของเรา เลื่อนลงมาด้านล่าง จะพบส่วนของ MapPress ดังรูป นำพิกัดที่ได้จากขั้นตอนที่แล้ว(13.726639,100.494875) มาวาง แล้วกดรูปแว่นขยาย เพื่อหาข้อมูล ระบบแสดงตัวอย่างให้ดู ดังรูป หากต้องการปรับแต่งคำอธิบาย เมื่อนำเมาส์วางเหนือจุด Mark ที่เราต้องการ เพียงเราคลิกชื่อ Mark ในกรอบสีแดง ระบบแสดงหน้าจอให้ใส่ชื่อสถานที่ และคำอธิบาย ดังรูป หากเราต้องการเพิ่มจุด Mark อื่นๆ เช่น 13.731881,100.494835 ผู้ใช้สามารถวางได้ในช่อง Add POI และกดรูปแว่นขยาย เพิ่มเติม Mark ดังรูป เมื่อแก้ไขเรียบร้อย จากนั้นกด Save จากนั้นถ้าต้องารใส่ข้อมูลลงใน Post ให้ผู้ใช้เลือกพื้นที่ต้องการแสดงผลลงใน…

[WordPress] เพิ่ม Google Map ลงใน Post หรือ Page ของเรา ตอนที่ 1

บางครั้งเวลาที่เราเขียนบล๊อก ที่มีเนื้อหาที่ควรใส่แผนที่ลงไป เพื่อให้ผู้อ่านเข้าใจได้ง่าย ได้แก่ การประชาสัมพันธ์ที่ตั้งบริษัท หรือ การแนะนำสถานที่ท่องเที่ยว ต่างๆ อาทิเช่น บทความรีวิวร้านแว่นตาคนจน (โปรโมทจริงๆ 555) วันนี้ผมมี Plugin มาแนะนำครับ MapPress Easy Google Maps ตัวช่วยที่ให้คุณไม่ต้องมาวุ่นวายกับการเอา Code มาแปะลง บล๊อก(ในเวอร์ชั่นหลังๆ WordPress ไม่ให้ใช้ Tag iframe มาแปะแผนที่แล้ว) ข้อมูล Plugin MapPress Easy Google Map ทำไมถึงแนะนำ Plugin ตัวนี้ ง่ายต่อการจัดการ ปักหมุดเพื่อแสดงสถานที่ และบริเวณที่ใก้ลเคียงได้หลายจุด ใช้งานง่าย ไม่ต้องยุ่งกับ Code มาก ฟรี ขั้นตอนการลง สามารถลงได้ทั้งสองแบบ คือ ดาวน์โหลดไฟล์ .zip แล้วโยนเข้า Ftp ไป หรือจะ Search หาแล้วกดลงเลย แล้วแต่สะดวก การตั้งค่า มี 6 ส่วนด้วยกัน ตรงนี้จะขออธิบายแบบผ่านๆนะ เพราะ ค่า Default ที่ระบบตั้งมาสามารถใข้งานได้สบายอยู่แล้ว มีรายละเอียดการตั้งค่า ดังนี้ Basic Setting การตังค่าทั่วไป ได้แก่ การกำหนดบริเวณแสดงผลของแผนที่ ได้แก่ ใน Post หรือ Page ของเรา Map Controls ตั้งค่าการควบคุมแผนที่ เช่น การใช้เมาส์ เพื่อเลื่อนดูบริเวณรอบๆ หรือการ Zoom เข้า/ออก Map Setting การตั้งค่าการแสดงผลของแผนที่ POI Setting การตั่งค่า POI Localization กำหนดข้อมูลด้านภาษา ที่ตั้ง และหน่วยวัดระยะทาง (ตรงน้ผมตั้งค่าเป็น Kilometer) Miscellaneous…

ลองตัดแว่นกับร้านแว่นตาคนจน

ร้านแว่นตาคนจน บรรยากาศหน้าร้าน

หลังจากที่ผมทำงานอยู่แถววงเวียนใหญ่ได้สักพักใหญ่ ผมได้สังเกตุร้านแว่นตาร้านนึงตรงข้ามโรบินสัน ลาดหญ้า ว่าทำไมถึงมีคนเข้าร้านตลอด โดยเฉพาะวันที่ 1 และ 16 ต่างจากร้านแว่นโดยทั่วไปที่นานๆทีจะมีคนเข้ามา และเมื่อวันเสาร์ที่ผ่านมา ผมได้ไปลองใช้บริการแล้ว ทางร้านบริการดีมาก ได้ของเร็วกว่าที่คาดว่า (แว่นตาอันเก่าจำได้ว่าต้องรอถึง 1 สัปดาห์) แถมราคาถูกเหลือเชื่อนะ และจากการสืบข้อมูลเพิ่มเติมพบว่าร้านแว่นตาต่างๆ ฟันกำไร 500 – 800 % O.O ปล. ผมได้ข่าวว่าลุงโกร่ง แกเสียตั้งแต่ปี 63 แล้วนะครับ