BMS-HOSxP Community
HOSxP => Report Exchange => ข้อความที่เริ่มโดย: autobotz ที่ มีนาคม 14, 2012, 09:48:07 AM
-
เดิมการแสดงผลของ memo เป็นรูปแบบ
aaa
bbb
ccc
ddd
แต่ถ้าผมต้องการให้ memo แสดงผลเป็นแบบ
aaa,bbb,ccc,ddd
ต้องทำอย่างไรครับ?
-
ใช้ getsqlsubquerydata ครับ
-
ใช้ getsqlsubquerydata ครับ
ผมลองทำตามที่ ท่าน pop_hosxp เคยได้แนะนำไว้แล้วโดยใช้ variable กำหนด memo
memo1.lines.text:=GetSQLSubQueryData('select o.pmh from opdscreen o '+
'left outer join referout r on r.vn = o.vn '+
'where r.vn = "'+DBPipeline['vn']+'" and r.refer_number = "'+DBPipeline['refer_number']+'" ');
ตามนี้ มันก็ยังไม่แสดงผลตามที่ต้องการเลยครับ
-
ใช้ getsqlsubquerydata ครับ
ผมลองทำตามที่ ท่าน pop_hosxp เคยได้แนะนำไว้แล้วโดยใช้ variable กำหนด memo
memo1.lines.text:=GetSQLSubQueryData('select o.pmh from opdscreen o '+
'left outer join referout r on r.vn = o.vn '+
'where r.vn = "'+DBPipeline['vn']+'" and r.refer_number = "'+DBPipeline['refer_number']+'" ');
ตามนี้ มันก็ยังไม่แสดงผลตามที่ต้องการเลยครับ
จากคำสั่ง sql ที่ใช้ มันมี record เดียวหรือเปล่า
-
ลองศึกษาจากที่นี่ครับ http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=15476.msg124142#msg124142
-
ผมลองทำตามที่ ท่าน pop_hosxp เคยได้แนะนำไว้แล้วโดยใช้ variable กำหนด memo
memo1.lines.text:=GetSQLSubQueryData('select o.pmh from opdscreen o '+ ..........
... ถ้าเป็น ข้อมูลของ pmh วิธีการแก้ไข ต้องไปแก้ไขที่สาเหตุจริงๆ คือ การบันทึกข้อมูลที่จุดคัดกรอง ครับ
ซึ่งถ้าเราบันทึกโดยการใช้การพิมพ์ แล้ว enter จากนั้นก็พิมพ์ แล้ว enter ไปเรื่อยๆ ข้อมูลหลังการ enter จะไปขึ้นเป็นบรรทัดใหม่ แถวใหม่ไปเรื่อยๆ ข้อมูลที่ถูกเก็บไว้ก็จะเป็นลักษณะที่เป็นหลายแถวเช่นกันครับ
พอดึงข้อมูลไปออกรายงาน รูปแบบข้อมูลมันก็เป็นไปตามข้อมูลที่ถูกบันทึกอยู่ในฐานข้อมูลนั่นแหล่ะครับ
ดังนั้น ตอนบันทึกข้อมูล ก็ให้เปลี่ยนลักษณะการบันทึก
โดยพิมพ์ หรือแก้ให้ข้อมูลเป็นแถวเดียวครับ ... :D ...
-
... แต่ถ้าต้องการข้อมูลมาออกรายงาน แนวทางนี้เฉพาะข้อมูลที่เก็บในลักษณะเดียวกับ pmh นะครับ
ก็ไม่ต้องใช้ Memo ในการแสดงผลที่รายงานครับ
ให้ใช้เป็น Label ธรรมดา หรือใช้การวาง variable เพื่อดึงข้อมูลไปเลยก็ได้ครับ จะได้ข้อมูลเป็นแถวเดียว ...
... ลองทดสอบวาง variable แล้วใส่คำสั่งเป็น
Value :=GetSQLStringData('select o.pmh from opdscreen o '+
'left outer join referout r on r.vn = o.vn '+
'where r.vn = "'+DBPipeline['vn']+'" and r.refer_number = "'+DBPipeline['refer_number']+'" ');
ลองดูครับ ... :D ...
-
ใช้ฟังก์ชัน replace() ช่วยซิคับ
เช่น replace(opdscreen.cc,char(13,10),',')
ลองดูคับ
-
ขอบคุณทุก ๆ ท่านมากครับ ;D