Tuesday, 23 April 2013

การตัดแถวขึ้นบรรทัดใหม่ โดยใช้ memo1.lines.text:=


คำถาม
เนื่องจากผมทำ Form ใบนัดตรวจรักษาแล้วติดปัญหาเรื่องของการแสดงผล
ของ Memo กับ DBMemo ครับ คือ

ในส่วนของ Report ผมเอา ทั้ง DBMemo และ Memo มาทดสอบดู
และใช้ความกว้าง และยาวไว้พอสมควร โดยเอาไว้ในส่วน
การเตรียมตัวก่อนมา และรายการแล็บ ครับ
แล้วก็ไปกำหนด Properties ให้เป็นแบบ Strench แล้วบันทึก
จากนั้นทดสอบใช้งาน โดยลองกำหนด รายการทั้งสองอย่าง
ไว้อย่างละ 4 ข้อ แล้วแสดงผลดู ก็ปกติดีครับ แต่พอลองใส่รายการมากกว่า 4 รายการ
แทนที่จะตัวรายการที่ 5 ไปขึ้นคอลัมน์ใหม่ กับเรียงต่อกันลงไปเรื่อยๆ จนทับข้อมูล มั่วไปหมด

ไม่รู้ว่ามีวิธีไหนจัดการกับปัญหานี้ได้บ้างครับ

คำตอบ

ใช้ variable ไปกำหนดคุณสมบัติของ memo แทน (ไ่่ม่ต้องใช้ DBMemo)  เพื่อใช้ function GetSQLSubQueryData เพื่อที่จะให้ตัวหนังสือเรียงกันเป็นแบบ "xxx","yyy","zzz" น่าจะใช้แก้ปัญหาตัวหนังสือล้นได้ โดยเขียนประมาณนี้

memo1.lines.text:=GetSQLSubQueryData('select xxx from yyy');


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

ตัวอย่างการใช้ memo1.lines.text:


ตัวอย่างจาก hosxp.net




1 comment:

รพช.นาแห้ว said...

ขอบคุณครับ