บทความ

กำลังแสดงโพสต์จาก มิถุนายน, 2019

หลายหลายวิธีแสดงข้อมูลด้วย 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