BMS-HOSxP Community

HOSxP => Delphi / Pascal => ข้อความที่เริ่มโดย: naj ที่ กุมภาพันธ์ 22, 2010, 01:25:41 AM

หัวข้อ: ตัวอย่าง Script import Excel data to HOSxP
เริ่มหัวข้อโดย: naj ที่ กุมภาพันธ์ 22, 2010, 01:25:41 AM
มีหลาย รพ ที่ ได้รับ file excel จากสปสช และต้องการนำข้อมูลจากตาราง Excel ดังกล่าว เข้า HOSxP เลยยกตัวอย่างมาให้ดูครับ
1.สร้างตาราง zdata โดยใช้คำสั่งนี้ครับ
โค๊ด: SQL
  1. CREATE TABLE `zdata` (
  2.   `hcode` VARCHAR(5) DEFAULT NULL,
  3.  
  4.  `hname` VARCHAR(50) DEFAULT NULL,
  5.  
  6.  `province_id` VARCHAR(50) DEFAULT NULL,
  7.  
  8.  `hn` VARCHAR(7) DEFAULT NULL
  9. )
  10.  ENGINE=MyISAM DEFAULT CHARSET=tis620;
  11.  
ใน sql (เครื่องหมายสายฟ้า) ของ HOSxP แล้วกดแทบ Exec
จากนั้นนำ Script นี้ไปวางใน tab source (อย่าลืมลบข้อมูลเดิมที่อยู่ใน source และ dfm ออกก่อนนะครับ)
หลังจากวางเสร็จเรีบยร้อยแล้วให้ตั้ง path excel file ในตัวอย่างนี้ อยู่ที่ d:\book1.xls
ตัวอย่าง code
โค๊ด: Pascal
  1. unit Yindee;
  2. function addzero(s: string; i: integer): string;//เป็น function สำหรับปรับ hn โดยเติม 0 ข้างหน้าให้ตรงตามจำนวนหลักของ รพที่ตั้งไว้ (7 หรือ 9 หลัก)
  3. begin
  4.   //result:=s;
  5.   while length(s) < i do
  6.   begin
  7.     s := '0' + s;
  8.   end;
  9.   result := s;
  10. end;
  11. procedure main;
  12. var
  13.   Excel : Variant;
  14.   Workbook : Variant;
  15.   Worksheet : Variant;
  16.   Cells : Variant;
  17.   Item : Variant;
  18.   X, Y : Integer;
  19.   row_count : Integer;
  20.   cell_data : string;
  21.   hn_int,i:integer;
  22.   fhn : string;
  23.   fhcode,fhname,fprovince_id : string;
  24.   fdatapath:string;
  25.  begin
  26.    i:=0;
  27.   fdatapath:='d:\book1.xls';//path ที่เก็บ excel file ที่ต้องการ
  28.  
  29.   showmessage('Excel import data By Yindee'+#13+
  30.   'Data path = '+fdatapath);
  31.   if messagedlg('Please confirm import , old data  will be replace ?',
  32.      mtconfirmation,[mbyes,mbno],0)<>mryes then exit;
  33.  
  34.   Excel := CreateOleObject('Excel.Application');
  35.   try
  36.     Workbook := Excel.Workbooks.open(fdatapath);
  37.     Cells := Excel.Cells;
  38.     x:=1;
  39.     y:=1;
  40.     row_count:=0;
  41.     repeat
  42.       cell_data := cells.item(y,x);
  43.       row_count:=row_count+1;
  44.       y:=y+1;
  45.     until cell_data='';
  46.  
  47.     Item := Cells.Item(2,2); // row, col
  48.  
  49.     //showmessage(formatdatetime('yyyy-mm-dd',item));
  50.  
  51.     row_count:=row_count-1;
  52.  
  53.     showmessage('Found   '+inttostr(row_count-1)+' Records');
  54.  
  55.   for x:=2 to row_count do
  56.     begin
  57.     i:=i+1;
  58.       fhn:=cells.item(x,4);  // HN in column number 4
  59.  
  60.       SetStatusLabel('Processing HN '+fhn);
  61.       SetProgressBar(x,row_count);
  62.       ShowDebugText('Record no.'+inttostr(i)+'   import HN '+fhn+'..... OK');
  63.             if length(fhn)>0 then
  64.         begin
  65.         fhcode:=cells.item(x,1);
  66.         fhname:=cells.item(x,2);
  67.         fprovince_id:=cells.item(x,3);
  68.         fcds.close;
  69.         fcds.datarequest('select * from zdata where hn="'+fhn+'"');
  70.         fcds.open;
  71.         fcds.first;
  72.         if fcds.recordcount=0 then
  73.         fcds.insert
  74.       else
  75.       fcds.edit;
  76.         fcds.fieldbyname('hn').asstring:=addzero(fhn,7);
  77.         fcds.fieldbyname('hcode').asstring:=fhcode;
  78.         fcds.fieldbyname('hname').asstring:=fhname;
  79.         fcds.fieldbyname('province_id').asstring:=fprovince_id;
  80.          fcds.post;
  81.         fcds.datarequest('select * from zdata where hn="'+fhn+'"');
  82.         applyupdate_fcds(-1);
  83.  
  84.         fcds.close;
  85.  
  86.  
  87.          end;
  88.  
  89.       application.processmessages;
  90.  
  91.     end;
  92.  
  93.  
  94.   finally
  95.  
  96.     Excel.Quit;
  97.   end;
  98.     ShowDebugtext('====================================================');
  99.   showDebugtext('Import Done.');
  100.  
  101. end;
  102. end.
  103.  
  104.  
หมายเหตุ
เนื่องจาก file excel ต้นฉบับ มี hn บางรายที่จำนวนหลักไม่เท่ากับของ รพ ผมจึงใช้ function addzero ช่วยปรับตอนนำเข้าให้ครับ ซึ่งในตัวอย่างผมตั้ง hn เป็น 7 หลักครับ และผมได้แนบ doraemon_excel.cds มาด้วยครับ
หัวข้อ: Re: ตัวอย่าง Script import Excel data to HOSxP
เริ่มหัวข้อโดย: siemens ที่ กุมภาพันธ์ 22, 2010, 20:06:59 PM
ขอบคุณหลายเด้อ..................... ;D

// วันนี้พี่ไปรามาการ์เดน เจอรถโรงพยาบาลหลวงพ่อเปิ่น เลยเกร่ไปถามหา อจ.นาจ เสียดายไม่ได้เจอกันครับ
หัวข้อ: Re: ตัวอย่าง Script import Excel data to HOSxP
เริ่มหัวข้อโดย: thannawe ที่ กุมภาพันธ์ 22, 2010, 20:53:45 PM
สุดยอด!!  ;D ;) :D
หัวข้อ: Re: ตัวอย่าง Script import Excel data to HOSxP
เริ่มหัวข้อโดย: naj ที่ กุมภาพันธ์ 22, 2010, 21:39:23 PM
ขอบคุณหลายเด้อ..................... ;D

// วันนี้พี่ไปรามาการ์เดน เจอรถโรงพยาบาลหลวงพ่อเปิ่น เลยเกร่ไปถามหา อจ.นาจ เสียดายไม่ได้เจอกันครับ
:D :D :D :D :D
หัวข้อ: Re: ตัวอย่าง Script import Excel data to HOSxP
เริ่มหัวข้อโดย: jdadmin1 ที่ กุมภาพันธ์ 22, 2010, 22:00:10 PM
อ้างถึง
วันนี้พี่ไปรามาการ์เดน เจอรถโรงพยาบาลหลวงพ่อเปิ่น เลยเกร่ไปถามหา อจ.นาจ เสียดายไม่ได้เจอกันครับ
;D ;D ;D ผมก็เจอบ่อยครับแต่เข้าไปถามแล้วถึงรู้ครับว่าอ.นาจไปไหนไม่ได้ ตอนแรกผมไม่เชื่อน้านาญนะคิดว่าอำผมเล่น แต่ตอนนี้เชื่อแล้วครับว่าเป็นเรื่องจริง ;D ;D ;D
หัวข้อ: Re: ตัวอย่าง Script import Excel data to HOSxP
เริ่มหัวข้อโดย: asawincyber ที่ กุมภาพันธ์ 22, 2010, 22:06:06 PM
อ้างถึง
วันนี้พี่ไปรามาการ์เดน เจอรถโรงพยาบาลหลวงพ่อเปิ่น เลยเกร่ไปถามหา อจ.นาจ เสียดายไม่ได้เจอกันครับ
;D ;D ;D ผมก็เจอบ่อยครับแต่เข้าไปถามแล้วถึงรู้ครับว่าอ.นาจไปไหนไม่ได้ ตอนแรกผมไม่เชื่อน้านาญนะคิดว่าอำผมเล่น แต่ตอนนี้เชื่อแล้วครับว่าเป็นเรื่องจริง ;D ;D ;D
ที่ไปไม่ได้ เพราะยังไม่ได้รับการอนุมัติจาก ผอ.ทบ. (ผู้อำนวยการที่บ้าน)  ;D ;D
หัวข้อ: Re: ตัวอย่าง Script import Excel data to HOSxP
เริ่มหัวข้อโดย: Svl2Nuk3 ที่ กุมภาพันธ์ 23, 2010, 01:41:06 AM
ขอบคุณมากครับ
Script  แบบนี้ถ้าไม่ได้เห็น  code  มานั่งทำเองคงอีกนานเลยกว่าจะได้
หัวข้อ: Re: ตัวอย่าง Script import Excel data to HOSxP
เริ่มหัวข้อโดย: wiphusit ที่ กุมภาพันธ์ 23, 2010, 08:27:37 AM
ขอบคุณมากๆ ครับ
หัวข้อ: Re: ตัวอย่าง Script import Excel data to HOSxP
เริ่มหัวข้อโดย: naj ที่ กุมภาพันธ์ 23, 2010, 08:54:27 AM
อ้างถึง
ที่ไปไม่ได้ เพราะยังไม่ได้รับการอนุมัติจาก ผอ.ทบ. (ผู้อำนวยการที่บ้าน)  ;D ;D
ซะง้าน......จั๋งซี้มันต้องถอน
สู้ต่อไปทาเคชิ
หัวข้อ: Re: ตัวอย่าง Script import Excel data to HOSxP
เริ่มหัวข้อโดย: niyomstd ที่ กุมภาพันธ์ 23, 2010, 09:29:27 AM
อ นาจ นี่ เทพ จริงๆๆๆ
 ;) :) ;)