ผู้เขียน หัวข้อ: ขอปรึกษาเรื่อง IMPORT ACCESS 2003 TO HOSxP ฺ  (อ่าน 9351 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ naj

  • Hero Member
  • *****
  • กระทู้: 2,449
  • Respect: +10
    • ดูรายละเอียด
    • http://www.luangphopern-hospital.com
ขอปรึกษาเรื่อง IMPORT ACCESS 2003 TO HOSxP ฺ
« เมื่อ: สิงหาคม 03, 2009, 08:38:40 AM »
0
ลองทดสอบ Script ที่ อ.mn เคย post มาลองทดสอบกับฐานข้อมูลที่เป็น access 2003 ไม่สามารถใช้งานได้ครับ เหมือนมันไม่ commit ข้อมูลเข้าไปในตาราง tempreport แต่เวลาที่ run ก็ไม่ได้ฟ้อง error อะไรครับ
หมายเหตุ
ทดสอบใน HOSXP 3.52.7.22
โค๊ด: Delphi
  1. Unit AccessImport;
  2.  
  3. // example script for import data from access database
  4. // this script use WelfareUC2 database as sample file
  5. // version 0.1
  6. // 2005-07-11
  7. // Chaiyaporn Suratemekul
  8.  
  9. procedure Main;
  10. var
  11.   sconnection:string;      // variable for hold connection string
  12.   st:string;               // variable for hold any string
  13.  
  14. begin
  15.   sconnection:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;'+
  16.   '[color=red]Data Source=D:\TEST.mdb[/color];'+    // change access filename here
  17.   'Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";'+
  18.   'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;'+
  19.   'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;'+
  20.   'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";'+
  21.   'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;'+
  22.   'Jet OLEDB:Don''t Copy Locale on Compact=False;'+
  23.   'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False ';
  24.  
  25.  
  26.   // jconnection is remote database connection
  27.   // you can set jconnection to connected any database
  28.  
  29.   jconnection.connected:=false;
  30.   jconnection.protocol:='ado';
  31.   jconnection.database:=sconnection;
  32.  
  33.   jconnection.connected:=true;
  34.  
  35.  
  36.   // jquery is remote dataset object
  37.   // use jquery to get remote data
  38.  
  39.   jquery.close;
  40.  
  41.   // set sql statement
  42.   // select sample data from table ucdata just 10 records
  43.   jquery.sql.text:='[color=red]select top 10 * from EXPORT[/color]';
  44.  
  45.   // open dataset
  46.   jquery.open;
  47.  
  48.  
  49.   // zquery is dataset point to current database (hosxp database)
  50.   // this example try to erase old data from table tempreport
  51.   // table tempreport use to t store temporary report data
  52.   // but can use to hold any temp data too
  53.  
  54.   zquery.close;
  55.   // delete all data from tempreport
  56.   zquery.sql.text:='delete from tempreport';
  57.   zquery.execsql;
  58.   zquery.close;
  59.   // open table tempreport
  60.   zquery.sql.text:='select * from tempreport';
  61.   zquery.open;
  62.  
  63.  
  64.   // loop dataset until end of file (first to last record)
  65.   // when open dataset record pointer is at first record by default
  66.   while not jquery.eof do
  67.   begin
  68.     // prepare to insert data to temptable
  69.     zquery.insert;
  70.  
  71.     zquery.fieldbyname('id').asstring:=jquery.fieldbyname('pid').asstring;
  72.  
  73.     // insert data from access field fname + lname to table tempreport field name
  74.     zquery.fieldbyname('name').asstring:=
  75.        jquery.fieldbyname('fname').asstring+' '+jquery.fieldbyname('lname').asstring;
  76.  
  77.     zquery.fieldbyname('name1').asstring:=jquery.fieldbyname('sex').asstring;
  78.  
  79.  
  80.     // now commit change to database
  81.     zquery.post;
  82.  
  83.  
  84.     jquery.next;
  85.   end;
  86.  
  87.   jquery.close;
  88.   zquery.close;
  89.  
  90.   showmessage('Import OK');
  91.  
  92.   // ok now open table tempreport to see what happen
  93.  
  94. end;
  95.  
  96.  
  97. end.
  98.  
  99.  
« แก้ไขครั้งสุดท้าย: สิงหาคม 03, 2009, 08:46:30 AM โดย naj »
Yindee And Tan

ออฟไลน์ naj

  • Hero Member
  • *****
  • กระทู้: 2,449
  • Respect: +10
    • ดูรายละเอียด
    • http://www.luangphopern-hospital.com
Re: ขอปรึกษาเรื่อง IMPORT ACCESS 2003 TO HOSxP ฺ
« ตอบกลับ #1 เมื่อ: สิงหาคม 04, 2009, 15:46:03 PM »
0
ลองทดสอบ นำข้อมูลเข้าตาราง Tempreport เล่นดู โดยใช้ ADOConnection และ ADOQuery ช่วยครับ น่าจะพอได้ตามแบบมวยวัด  แต่ยังขาดคำสั่งตรวจสอบว่าถ้าเป็นการ import ข้อมูลเดิมที่อยู่แล้ว ไม่ต้อง import ข้อมูล เอาแต่เฉพาะข้อมูลใหม่เท่านั้นที่นำเข้า
Source Section
โค๊ด: Delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, DB, ADODB;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     ADOConnection1: TADOConnection;
  12.     ADOQuery1: TADOQuery;
  13.     Button1: TButton;
  14.     procedure Button1Click(Sender: TObject);
  15.   private
  16.     { Private declarations }
  17.   public
  18.     { Public declarations }
  19.   end;
  20.  
  21. var
  22.   Form1: TForm1;
  23.  
  24. implementation
  25.  
  26. {$R *.dfm}
  27.  
  28. procedure TForm1.Button1Click(Sender: TObject);
  29. var
  30. i:integer;
  31. begin
  32.       i:=0;
  33.      ADOquery1.Open;
  34.      fcds.close;
  35.      fcds.datarequest('select name1,name2,name3,name4,date1    from tempreport');
  36.      fcds.open;
  37.      ShowMessage('Found  import data ' +inttostr(Adoquery1.recordcount)+' Records');
  38.      while not ADOquery1.eof do
  39.      begin
  40.      i:=i+1;
  41.      fcds.insert;
  42.      fcds['name1']:=ADOquery1.fieldbyname('hn').asstring;
  43.      fcds['name2']:=ADOquery1.fieldbyname('pname').asstring+ADOquery1.fieldbyname('fname').asstring+'   '+ADOquery1.fieldbyname('lname').asstring;
  44.      fcds['date1']:=ADOquery1.fieldbyname('birthday').asdatetime;
  45.      ShowDebugtext('no.'+inttostr(i)+'  Import '+ADOquery1.fieldbyname('hn').asstring +'..... OK');
  46.      fcds.post;
  47.      ADOquery1.next;
  48.  
  49.      end;
  50.      fcds.datarequest('select name1,name2,name3,name4,date1    from tempreport');
  51.      applyupdate_fcds(-1);
  52.      Showdebugtext('----------------------------------');
  53.      Showdebugtext('Data import complete '++inttostr(i)+'  Records');
  54.      fcds.close;
  55. Showmessage('Yindee Data Import Done   ');
  56. end;
  57.  
  58. end.

DFM Section;
โค๊ด: Delphi
  1. object Form1: TForm1
  2.   Left = 0
  3.   Top = 0
  4.   Caption = 'Form1'
  5.   ClientHeight = 216
  6.   ClientWidth = 504
  7.   Color = clBtnFace
  8.   Font.Charset = DEFAULT_CHARSET
  9.   Font.Color = clWindowText
  10.   Font.Height = -11
  11.   Font.Name = 'Tahoma'
  12.   Font.Style = []
  13.   OldCreateOrder = False
  14.   PixelsPerInch = 96
  15.   TextHeight = 13
  16.   object Button1: TButton
  17.     Left = 320
  18.     Top = 16
  19.     Width = 75
  20.     Height = 25
  21.     Caption = 'Button1'
  22.     TabOrder = 0
  23.     OnClick = Button1Click
  24.   end
  25.   object ADOConnection1: TADOConnection
  26.     Connected = True
  27.     ConnectionString =
  28.       'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test.mdb;Persi' +
  29.       'st Security Info=False'
  30.     LoginPrompt = False
  31.     Mode = cmShareDenyNone
  32.     Provider = 'Microsoft.Jet.OLEDB.4.0'
  33.     Left = 72
  34.     Top = 32
  35.   end
  36.   object ADOQuery1: TADOQuery
  37.     Connection = ADOConnection1
  38.     Parameters = <>
  39.     SQL.Strings = (
  40.       'select * from export')
  41.     Left = 64
  42.     Top = 96
  43.   end
  44. end

Yindee And Tan

ออฟไลน์ armds

  • Hero Member
  • *****
  • กระทู้: 1,084
  • armds
  • Respect: +10
    • ดูรายละเอียด
Re: ขอปรึกษาเรื่อง IMPORT ACCESS 2003 TO HOSxP ฺ
« ตอบกลับ #2 เมื่อ: สิงหาคม 05, 2009, 08:12:50 AM »
0
ลองแบบนี้ ดูนะครับ
ตอนแรกน่าจะเพิ่ม  ตัวแปร  เอาไว้เช็คว่า  มีข้อมูลนี้หรือยัง

var  hn :string

และต่อจากนั้น ก็เพิ่ม


hn := ADOquery1.fieldbyname('hn').asstring;

fcds.datarequest('select name1,name2,name3,name4,date1    from tempreport  where name1 = ''' + hn + '''');

และตอนจะเพิ่ม  หรือ แก้ไข ก็ใช้เงื่อนไขได้

if   fcds.recordcount = 0 then
      fcds.insert
else   fcds.edit;


หรือไม่ต้อง  fcds.edit  ก็ได้นะครับ

เสร็จแล้วก็จะเป็นแบบนี้ครับ

----------------------------------
procedure TForm1.Button1Click(Sender: TObject);

var

i:integer;
hn : string;

begin

     i:=0;

     ADOquery1.Open;

     ShowMessage('Found  import data ' +inttostr(Adoquery1.recordcount)+' Records');

     while (not ADOquery1.eof)  do

     begin

     fcds.close;

     hn := ADOquery1.fieldbyname('hn').asstring;
     showmessage(hn);

     fcds.datarequest('select name1,name2,name3,name4,date1    from tempreport  where name1 = ''' + hn + '''');

     fcds.open;

     i:=i+1;

     if fcds.recordcount = 0 then
      fcds.insert else fcds.edit;

     //fcds.insert;

     fcds['name1']:=ADOquery1.fieldbyname('hn').asstring;

     fcds['name2']:=ADOquery1.fieldbyname('pname').asstring+ADOquery1.fieldbyname('fname').asstring+'   '+ADOquery1.fieldbyname('lname').asstring;

     fcds['date1']:=ADOquery1.fieldbyname('birthday').asdatetime;

     ShowDebugtext('no.'+inttostr(i)+'  Import '+ADOquery1.fieldbyname('hn').asstring +'..... OK');

     fcds.post;

     fcds.datarequest('select name1,name2,name3,name4,date1    from tempreport where name1 = ''' + hn + '''');

     applyupdate_fcds(-1);

     ADOquery1.next;

     end;

     Showdebugtext('----------------------------------');

     Showdebugtext('Data import complete '++inttostr(i)+'  Records');

     fcds.close;

Showmessage('Yindee Data Import Done   ');

end;
----------------------------------
« แก้ไขครั้งสุดท้าย: สิงหาคม 05, 2009, 08:39:15 AM โดย armds »
โรงพยาบาลสมเด็จพระยุพราชด่านซ้าย จ.เลย
ขนาด 60 เตียง นวก. คอมพิวเตอร์ ขึ้นระบบ ปี 2548
ขอบคุณ อ.ชัยพร อ.สุชัย อ.เดชา อ.doreamon อ.naj อ.ขวด และอ.ในเว็บ hosxp.net ทุกท่าน

ออฟไลน์ naj

  • Hero Member
  • *****
  • กระทู้: 2,449
  • Respect: +10
    • ดูรายละเอียด
    • http://www.luangphopern-hospital.com
Re: ขอปรึกษาเรื่อง IMPORT ACCESS 2003 TO HOSxP ฺ
« ตอบกลับ #3 เมื่อ: สิงหาคม 05, 2009, 08:22:57 AM »
0
Thanks  :) :) :) :)
จะลองทดสอบดูครับ
Yindee And Tan

ออฟไลน์ armds

  • Hero Member
  • *****
  • กระทู้: 1,084
  • armds
  • Respect: +10
    • ดูรายละเอียด
Re: ขอปรึกษาเรื่อง IMPORT ACCESS 2003 TO HOSxP ฺ
« ตอบกลับ #4 เมื่อ: สิงหาคม 05, 2009, 09:04:15 AM »
0
ลองเอามาปรับแก้ไขใ้ห้แล้วนะครับ ลองดูนะครับ  อ.naj
โรงพยาบาลสมเด็จพระยุพราชด่านซ้าย จ.เลย
ขนาด 60 เตียง นวก. คอมพิวเตอร์ ขึ้นระบบ ปี 2548
ขอบคุณ อ.ชัยพร อ.สุชัย อ.เดชา อ.doreamon อ.naj อ.ขวด และอ.ในเว็บ hosxp.net ทุกท่าน

ออฟไลน์ SrWooD

  • Hero Member
  • *****
  • กระทู้: 1,024
  • Respect: +1
    • ดูรายละเอียด
Re: ขอปรึกษาเรื่อง IMPORT ACCESS 2003 TO HOSxP ฺ
« ตอบกลับ #5 เมื่อ: สิงหาคม 05, 2009, 10:36:42 AM »
0
 ;D ;D ;D
โรงพยาบาลโพธิ์ทอง จังหวัดอ่างทอง

ออฟไลน์ thannawe

  • Hero Member
  • *****
  • กระทู้: 2,904
  • Respect: +8
    • ดูรายละเอียด
Re: ขอปรึกษาเรื่อง IMPORT ACCESS 2003 TO HOSxP ฺ
« ตอบกลับ #6 เมื่อ: สิงหาคม 05, 2009, 10:45:26 AM »
0
สรุป แหล่มกันทั้ง สามท่านครับ  ;D :D ;D ;)
กิจจา ชาญธัญกรรม
นักวิชาการคอมพิวเตอร์ชำนาญการ รพ.โพธาราม จ.ราชบุรี
็HOSxP XE