แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - ไพโรจน์

หน้า: [1]
1
Delphi / Pascal / Re: สั่ง close form แต่กลายเป็นย่อ form
« เมื่อ: มกราคม 25, 2013, 11:04:35 AM »
ไม่ทราบว่า กำหนด  FormStyle เป็น fsMDIChild  ถ้าใช่

ตรง envent onclose ของ form

ให้ใส่ว่า   action := cafree;  ลองดูครับ

3
ในหน้า Drug interaction ถูกตั้งค่าห้ามสั่งใช้ยา เมื่อมีการ key ข้อมูลในหน้า IPD dispense มีการ key ยา Alteplase ใช้ STAT dose
ไปแล้ว(หน้า profile F1) เมื่อข้ามวัน ต้องการ key ยา Warfarin ที่มี interaction กัน พบว่า key ไม่ได้ โดยระบบฟ้องว่า
เป็นยาที่มีอันตรกิริยากัน (ทั้งที่หยุดใช้ยาไปแล้ว 1 รายการ) ขอให้แก้ไขโปรแกรม หากมีการหยุดใช้ยาที่เป็น drug interaction กันแล้ว สามารถ key ยาได้ค่ะ

1. รูปแรกเป็นข้อมูลยาที่ Interaction  กัน
2. รูปสอง เป็นการ key ยาในหน้าจอ IPD dispense โดยสั่งหยุดยาตัวแรกคือยา Alteplase ไปแล้ว และได้มีการสั่งยาตัวที่มี drug interaction กัน
3. รูปสาม คือ Pop up ที่แสดงขึ้นมา
 

4
ขออธิบายเพิ่มเติม ในส่วนการสร้าง Object แบบ Runtime ครับ
ปกติ เราต้องประกาศตัวแปร เป็น ประเภท oject นั้นๆ เช่น
var
  tc : Tclientdataset;   ประกาศตัวแปร tc เป็นประเภท Clientdataset

begin
  tc := Tclientdataset.create(ระบุความเป็นเจ้าของของ Oject ที่สร้าง);
end;   
    พารามิเตอร์ ที่ระบุ มี 3 แบบ ครับ
  nil ,self และ Application
 
    ทำไมต้องระบุ ความเป็นเจ้าของ   เพราะ มันจะทำหน้า free Oject ให้เราเอง (คืนหน่วยความจำ)
    ถ้า ระบุ  nil (ไม่มีเจ้าของ)  เราต้อง free เอง
  tc := Tclientdataset.create(nil);
  try
     .....
     ......
  finally
   tc.free;
  end;
 
     ถ้าระบุ Self หมายถึง Form ที่ Oject เราเกาะอยู่  Form จะทำหน้าที่ Free ให้เราเอง
   tc := Tclientdataset.create(self);
 
    ถ้าระบุ Application หมายถึง โปรแกรม exe เรา เมื่อปิดโปรแกรม จะ free ให้เรา
   tc := Tclientdataset.create(Application);

   กรณี เราสร้าง Class เราไม่ต้องระบุเจ้าของ ครับ เช่น
 var  sl : TStringlist;
 
 begin
     sl := TStringlist.create;
     try
       ....
       ....
     finally
        sl.free;
  end;

 
 ถ้าอธิบายผิดพลาดประการใด ขออภัยด้วยครับ  หรือรบกวนผู้รู้ อธิบาย ให้ถูกต้องอีกที ครับ
 หรือ รบกวน อ.อ๊อด  ด้วยครับ  ผมเองก็มือใหม่ ครับ   :) :)




5
ตัว clientdataset จะ ดึงข้อมูลมาไว้ในตัวมัน  แล้วกรณีเรา  (add,edit,update) มันจะทำใน  memory  ก่อน ซึ่งไม่ได้มีผลกับ ข้อมูล server จริง  (ไม่ทำให้ server ทำงานหนัก)  อย่าง กรณี user แก้ไข เปลี่ยนแปลง ข้อมูลที่ grid (หน้าจอการเงิน)  ก็ไม่ได้มีผลกับข้อมูลจริง ที่ server  จนกระทั่งใช้ คำสั่ง post  คือการบันทึกลงใน memory  และใช้คำสั่ง applyupdate(-1)  คือการบันทึกเข้า server จริง เฉพาะที่มีการเปลี่ยนแปลง (delta) ครับ ซึ่งรูปแบบการใช้งาน
 
    Zconnecttion --> Zquery-->datasetprovider-->clientdateset-->datasource

แต่เนื่องจาก เราใช้ functon HOSxP_Getdatset('select........')  ฟังก์ชั่นนี้ จะสร้าง รูปแบบข้างบน แบบ runtime ไว้ให้อยู่แล้วครับ  ซึ่ง ก็จะ ส่งค่า data ของ clientdatset มาให้   
   cds1.data := HOSxP_Getdataset('select....');
ส่วน ขั้นตอนบันทึก 
   HOSxP_UpdateDelta(cds1.delta,'select....')  บันทีกเฉพาะมีการเปลี่ยนแปลง delta 
        ซึ่ง รูทีนนี้ มีคำสั่ง applyupdate(-1) อยู่แล้วครับ
และข้อดีอีกอย่าง สามารถ ทำ database แบบ local ได้ ก็ พวกไฟล์ cds น่ะครับ  รวมทั่้ง ไฟล์ xml ด้วยครับ จากคุณสมบัติ clientdateset ครับ  และอีกอย่างครับ กรณี จะเขียน เป็น 3 tier หนีไม่พ้นครับ ต้องใช้ clientdataset ครับ

ส่วน Zquery กรณีเรา  (add,edit,update) แล้ว post มันส่งคำสั่ง ไปที่ server ทันที  เหมาะกับการเขียน c/s ครับ

 


6
ยินดีต้อนรับ / Re: Report Error
« เมื่อ: พฤศจิกายน 21, 2007, 10:57:32 AM »
 version รายงานที่ import เข้ามา กับเครื่องที่แก้ report  เป็นคนละ version กันครับ  อย่างนี้ ต้องสร้างและแก้ไขในVersion เดียวกันเท่านั้นหรือครับ แล้วในกรณี มีการ Upgade report Designer แล้ว Report เก่า จะแก้ปัญหาอย่างไร รบกวนอีกครั้งครับ ขอบคุณครับ สำหรับทุกคำตอบครับ

7
ยินดีต้อนรับ / Report Error
« เมื่อ: พฤศจิกายน 20, 2007, 18:23:27 PM »
สาเหตุ คือ เอารายงาน import เข้า มาแก้ไข แล้วบันทึกเป็นรายงานใหม่ แต่ เวลาสั่งพิมพ์ แล้วเกิด Error ดังรูป ไม่ทราบจะแก้ไขอย่างไร รบกวนอาจารย์ MN  และผู้รู้ ด้วยครับ ขอบคุณครับ

8
รับทราบ ครับผม :'( :'(

หน้า: [1]