บทความ

หลายหลายวิธีแสดงข้อมูลด้วย Grid

รูปภาพ
หลักการนำข้อมูลจากฐานข้อมูลต่างๆแสดงในกริด (Grid) โดยทั่วไปคือ เลือกช่วงข้อมูลจากฐานข้อมูลด้วยคำสั่ง SELECT SQL เก็บไว้ในเคอร์เซอร์ (Cursor) ชั่วคราวก่อน หลังจากนั้นก็นำเคอร์เซอร์ดังกล่าวไปใส่ในกริด โดยระบุชื่อเคอร์เซอร์ดังกล่าวใน RecordSource Property ของกริดเท่านั้นเอง แต่เนื่องจากวิชวลฟอกซ์โปรมีความสามารถในการติดต่อกับฐานข้อมูลได้หลากหลาย ดังนั้นหลายท่านจึงมักสับสนว่า ควรใช้งานเมื่อไร อย่างไร สรุปให้ง่ายๆก็คือ ให้ท่านเลือกใช้ตามความชอบและความถนัดของท่าน ตัวอย่าง แสดงรายชื่อพนักงานจากฐานข้อมูลตัวอย่าง Tastrade ใน Grid 1 Native ใช้กับไฟล์ฐานข้อมูลของฟอกส์โปรโดยตรง ให้ดูประโยคคำสั่ง SELECT... INTO CURSOR cPath = HOME(2) + "Tastrade\Data\tastrade.dbc" OPEN DATABASE (cPath) SELECT * FROM employee INTO CURSOR c_data THISFORM.Grid1.RecordSource = "c_data" 2 SQL-Passthru (SPT ผ่าน ODBC) ใช้กับฐานข้อมูลอะไรก็ได้ผ่าน ODBC ให้ดูประโยคคำสั่ง =SQLEXEC( "SELECT....", "Cursor" ) ประโยคการเชื่อมต่อกับฐานข้อมูลต่างๆ * DSN cStrConn...

วิธีตรวจและซ่อมแซมไฟล์ Foxpro ด้วย CM Table Repair

รูปภาพ
ตัวอย่างในบทความนี้เเลือกใช้ CM Table Repair เวอร์ชัน 2009a ดาวน์โหลดได้ที่ cmstory.com โปรดอ่าน : ก่อนทำทุกครั้งต้องสำรอง (Backup) ไฟล์ข้อมูลของเราก่อนทุกครั้ง !!! รัน VFP (ถ้าต้องการติดตั้ง VFP ไว้บน USB Disk ดูวิธีทำ Portable VFP ใน Tips ) เปิดหน้าต่าง Command Windows (Ctrl+F2) รันคำสั่ง DO ? เลือกไฟล์ cmRepair.app ถ้าหากมุมบนซ้ายไม่ใช่โฟลเดอร์ที่เก็บไฟล์ข้อมูลของเราให้คลิกปุ่ม Select Folder ตัวอย่าง D:\Test\Data คลิกที่ปุ่ม Check Folder เลือก Normal Mode ให้สังเกตว่า ถ้าทุกอย่างปกติต้องมี x เฉพาะแถวแรก (Checked) เท่านั้น ถ้าพบว่ามี x ในคอลัมภ์ 2 แสดงว่า ไฟล์นั้นเสีย (Corrupted) ให้คลิกปุ่ม Check Folder เลือก Auto-repair mode เพื่อลองซ่อมไฟล์ทั้งหมดในโฟลเดอร์แบบอัตโนมัติก่อน คลิกที่ปุ่ม Check Folder เลือก Normal Mode อีกครั้ง หากยังพบ x (Corrupted) ตรงชื่อไฟล์ไหนอีกก็ให้คลิกปุ่ม Select Table เลือกไฟล์นั้นมาซ่อมทีละไฟล์ โดยคลิกปุ่ม Change เพื่อให้ตัวเลขทางขวา (Reported) เท่ากับทางซ้าย (Change to) ::: Good Luck :::

ใส่ Comment หลายบรรทัด

VFP ไม่มีคอมเมนต์หลายบรรทัดหรือ /* */ อย่างเช่นภาษาตระกูลซี อย่างไรก็ตาม เราสามารถใช้เทคนิค Preprocessor Directive มาแทนได้ สมมติว่า ต้องการใส่คอมเมนต์ชุดคำสั่งทั้งหมด เช่น * lcSqlcmd = "SELECT * FROM t_stmas ORDER BY 1" * rs = SQLEXEC(cn, lcSqlcmd, "stmas") * IF rs>0 * SELECT stmas * BROWSE * ENDIF แทนที่จะต้องเสียเวลาใส่ * ทีละบรรทัดข้างต้นก็ให้ใส่ #IF ... #ENDIF คร่อมไว้ทำนองเดียวกับ /* */ ของ C #IF .F. lcSqlcmd = "SELECT * FROM t_stmas ORDER BY 1" rs = SQLEXEC(cn, lcSqlcmd, "stmas") IF rs>0 SELECT stmas BROWSE ENDIF #ENDIF พูดเป็นนัยว่า แทนที่จะสั่งให้บรรทัดนั้นเป็นคอมเมนต์ ก็สั่งไปเลยว่า ไม่ต้องคอมไพล์ชุดคำสั่งข้างต้นนั่นล่ะ ลองนำเทคนิคนี้ไปประยุกต์ใช้กับภาษาอื่น ๆ ที่ใส่คอมเมนต์ได้ทีละบรรทัดได้น่ะ :-)

คำสั่ง Transaction ใน Visual Foxpro

Transaction มักนำมาใช้กับการอัปเดทข้อมูลหลายตารางพร้อมกัน ประโยชน์ก็คือ หากมีความผิดพลาดในระหว่างการอัปเดทตารางใดตารางหนึ่ง ก็สามารถยกเลิกการอัปเดทตารางทั้งหมดได้ ส่วนมากก็มักใช้กับการประมวลผลของเอกสารประเภท Parent-Child พูดเป็นนัยว่า ตารางข้อมูลมีความสัมพันธ์เชื่อมโยงเกี่ยวข้องกัน อย่างเช่น ใบรับของ ใบสั่งซื้อ ใบกำกับสินค้า เป็นต้น ตัวอย่าง เพิ่มข้อมูลใน 2 ตาราง (ถ้าหากมีข้อผิดพลาดในระหว่างการอัปเดทก็ให้ยกเลิกการอัปเดททั้งหมด) Native-SQL LOCAL ex AS Exception BEGIN TRANSACTION TRY INSERT INTO Table1 ( . . .) VALUES ( . . .) INSERT INTO Table2 ( . . .) VALUES ( . . .) END TRANSACTION MESSAGEBOX("Updated completed.") CATCH TO ex ROLLBACK MESSAGEBOX(STR(ex.ErrorNo)+" "+ex.Message) ENDTRY Native-DBF (Unbuffer) LOCAL ex AS Exception BEGIN TRANSACTION TRY APPEND BLANK IN Table1 REPLACE . . . WITH . . . IN Table1 APPEND BLANK IN Table2 REPLACE . . . WITH . . . IN Table2 END TRANSACTION MESSAGEBOX("Updated com...

ทำไมรันโปรแกรม EXE แล้วหายแว๊บ !

รูปภาพ
" หลายท่านมักสงสัยว่า ทำไมเวลารันทดสอบฟอร์มในโปรเจ็กต์ของ VFP ก็ทำงานได้ปกติ แต่เมื่อคอมไพล์โปรเจ็กต์เป็นแอปพลิเคชัน (EXE) ปรากฎว่า รันโปรแกรมแล้วหายแว๊บ ! " ก่อนอื่นให้พิจารณา Project Manager ของเราก่อนว่า ต้องการกำหนดให้ Form, Menus หรือ Program เป็น Main ของโปรเจ็กต์ หลักการโดยทั่วไปก็คือ ถ้าหากไม่มีการแสดงฟอร์มแบบ Modal ในตอนเริ่มทำงานของโปรแกรม ก็ต้องมีคำสั่ง READ EVENTS ไว้สักที่ใดที่หนึ่ง เพื่อสั่งให้โปรแกรมของเรารอรับเหตุการณ์ก่อน เมื่อใดที่ต้องการกลับไปยังบรรทัดถัดจาก READ EVENTS ข้างต้น ก็ให้ใช้คำสั่ง CLEAR EVENTS อ่านเพิ่มเติม คลิกที่นี่ ตัวอย่าง 1 ฟอร์ม (scx) เป็น Main ในโปรเจ็กต์ สร้างโปรเจ็กต์ใหม่ ตัวอย่างเช่น Proj1.pjx สร้าง Forms ใหม่ ตัวอย่าง Form1.scx กำหนด Desktop Property เป็น .T. กำหนด WindowType Property เป็น 1 - Modal เขียนคำสั่ง _SCREEN.Left = -5000 ใน Load Method Project Manager | Documents คลิกขวาที่ Form1 เลือกเมนู Set Main คอมไพล์โปรเจ็กต์ (Build) เป็นไฟล์ exe แล้วรันทดสอบดูครับ ... ตัวอย่าง 2 โปรแกรม (prg) เป็น Main ใ...

FAQ: Visual Foxpro Runtime Error

Cannot locate the Microsoft Foxpro Support Library สาเหตุ: เครื่องนั้นไม่มี VFP Runtime Library ทางแก้ไข: ลงไฟล์ Runtime Library ต่างๆตามเวอร์ชันของวิชวลฟอกส์โปรในโฟล์เดอร์ Windows ของเครื่องนั้น ดาวน์โหลดได้ที่ github.com/VFPX/VFPRuntimeInstallers Error initializing Application object สาเหตุ: ส่วนใหญ่เกิดจากการรัน VFP เวอร์ชันเก่าบน Windows 7, 8, 10 หรือสูงกว่า ทางแก้ไข: คลิกขวา (Right Click) ที่โปรแกรมแล้วรันแบบ Run As Administrator (ทำครั้งแรกครั้งเดียวเท่านั้น) เพื่อให้ VFP มีสิทธิ์ในการเขียน Registry ในวินโดวส์ หลังจากนั้นก็จะเปิดใช้งานได้ปกติ แต่ถ้าหากทำแล้วยังไม่ได้ผลก็ให้ลองปรับลดระดับ UAC ของวินโดวส์ให้ต่ำลง ทำไมรันโปรแกรม EXE แล้วหายแว๊บ ! หลายท่านมักสงสัยว่า ทำไมเวลารันทดสอบฟอร์มในโปรเจ็กต์ของ VFP ก็ทำงานได้ปกติ แต่เมื่อคอมไพล์โปรเจ็กต์เป็นแอปพลิเคชัน (EXE) ก่อนอื่นให้พิจารณา Project Manager ของเราก่อนว่า ต้องการกำหนดให้ Form, Menus หรือ Program เป็น Main ของโปรเจ็กต์ หลักการโดยทั่วไปก็คือ ถ้าหากไม่มีการแสดงฟอร์มแบบ Modal ในตอนเริ่มทำงานของโปรแกรม ก็ต้อง...

Thaifox SQL- Database programming tool for beginners

รูปภาพ
โปรแกรมนี้สร้างจาก Visual Foxpro ทำเลียนแบบ Test SQL (C#) Description: Simple VFP database tool for beginners Learn SQL command with Native DBF, ODBC, OLEDB Developer Tool: Visual Foxpro 9 (Service Pack 2) Download: https://drive.google.com/drive/folders/1aBfGpjmCrt3mIXGmbNrg4eu0YmIkSqqQ วิธีใช้งาน กำหนดวิธีการเชื่อมต่อคือ DBF, ODBC หรือ OLEDB ระบุข้อความการเชื่อมต่อ (Connection String)  DBF คือโฟลเดอร์หรือตำแหน่งที่เก็บไฟล์ *.dbf เช่น Data\Tastrade เป็นต้น ODBC ตัวอย่าง Driver={Microsoft Access Driver (*.mdb)};DBQ=Data\Northwind.mdb OLEDB ตัวอย่าง Provider=Microsoft.Jet.OleDb.4.0;Data Source=Data\Northwind.mdb ทดสอบการเชื่อมต่อ (Test Connection) เขียนคำสั่ง SQL แท็บ Query คือ คำสั่ง SELECT ผลลัพธ์แสดงในตารางด้านล่าง แท็บ NonQuery คือ คำสั่ง INSERT, UPDATE และ DELETE รันคำสั่ง SQL Execute ตัวอย่าง DBF ตัวอย่าง ODBC Driver={Microsoft Access Driver (*.mdb)};DBQ=Data\Northwind.mdb ตัวอย่าง OLEDB Provider=Microsof...