เมื่อเร็ว ๆ นี้ฉันพบปัญหาการประมวลผลชุดข้อมูลเมื่อฉันเขียนโมดูลการพัฒนาฐานข้อมูลสำหรับเพื่อนที่ดี
ฉันคิดเกี่ยวกับวิธีการพัฒนาบางอย่างสำหรับการประมวลผลชุดข้อมูลและฉันไม่กล้าที่จะได้รับการสรุปพิเศษและแบ่งปันกับคุณ
ในระบบฐานข้อมูลแอปพลิเคชันข้อมูลมักจะถูกแบตช์เช่นการผนวกการลบและการเปลี่ยนแปลง
การดำเนินการชุดนี้ดำเนินการกับคำสั่งที่เกี่ยวข้องในเครื่องมือพัฒนาฐานข้อมูลพิเศษเช่น VFP โดยใช้คำสั่งภาคผนวกและคัดลอก
คำสั่งสามารถทำให้เสร็จได้อย่างง่ายดาย อย่างไรก็ตามไม่มีคำสั่งที่คล้ายกันในเครื่องมือการพัฒนาอื่น ๆ
แต่จะมีการควบคุมหรือวัตถุที่สามารถทำหน้าที่คล้ายกันได้เช่นใน PowerBuilder
ใช้สายท่อ (ท่อข้อมูล) เพื่อดำเนินการประมวลผลชุดข้อมูลให้เสร็จสิ้นระหว่างตารางสองหรือ isomorphic หรือตารางที่สร้างขึ้นต่างกัน
บทความนี้แนะนำวิธีการประมวลผลแบบแบตช์โดยใช้ส่วนประกอบตัวจับเวลาเมื่อใช้ Delphi สำหรับการพัฒนาฐานข้อมูล
ในการพัฒนา Delphi วิธีการที่ใช้มากที่สุดคือ ADO และ BDE เมื่อใช้ Delphi สำหรับการพัฒนาฐานข้อมูล
ดังนั้นบอร์แลนด์จึงใช้ประสบการณ์มากมายเกี่ยวกับส่วนประกอบ BDE ดังนั้นจึงมีการควบคุม tbatchMove เกี่ยวกับการประมวลผลชุดข้อมูลที่สามารถดำเนินการประมวลผลชุดข้อมูลได้
การดำเนินการเฉพาะจะต้องเสร็จสิ้นโดยการตั้งค่าคุณสมบัติโหมดของ tbatchMove จากนั้นเรียกใช้วิธีการดำเนินการ ช่วยด้วย BDE
ผลลัพธ์ที่แท้จริงของโหมดการทำงานที่หลากหลายในบทความนี้สามารถพบได้จากเดสก์ท็อปฐานข้อมูลของ Delphi
ดูใน
นี่ไม่ใช่จุดสนใจของบทความนี้ดังนั้นฉันจะไม่อธิบายรายละเอียดเกี่ยวกับเรื่องนี้
จุดเน้นของบทความนี้คือ: วิธีการประมวลผลแบบแบทช์ของข้อมูลใน ADO
เมื่อคุณได้รับปัญหานี้วิธีการทั่วไปคือการสำรวจข้อมูลทั้งหมดและแทรกลูป
อย่างไรก็ตามสิ่งที่ฉันต้องการพูดคุยเกี่ยวกับที่นี่คือวิธีการประมวลผลแบบแบตช์ที่รวดเร็วมีประสิทธิภาพและแนะนำ
ขั้นตอน TFORM1.FormCreate (ผู้ส่ง: TOBJECT);
วาจา
MyPath: String;
const
myPassw = '****';
เริ่ม
MyPath: = ExtractFilePath (Paramstr (0));
Adoconnection1.ConnectionString: = 'ผู้ให้บริการ = microsoft.jet.oLedb.4.0; แหล่งข้อมูล ='+
MyPath+'db/db.mdb; Jet OLEDB: รหัสผ่านฐานข้อมูล ='+
myPassw+'; คงข้อมูลความปลอดภัย = false';
//////////// ตั้งค่าเครื่องมือข้อมูลและโหลดรหัสผ่าน
Adoconnection1.loginPrompt: = false;
Adoconnection1.Connected: = true;
ADOTABLE1.CONNECTION: = ADOCONNECTION1;
Adotable1.tablename: = 'tab1';
Adotable2.Connection: = Adoconnection1;
adotable2.tablename: = 'tab2';
พยายาม
Adotable2.open;
Adotable1.open;
DataSource1.Dataset: = Adotable1;
dbgrid1.datasource: = dataSource1;
dbnavigator1.datasource: = dataSource1;
ยกเว้น
MessageBox (0, 'ไม่สามารถเปิดฐานข้อมูล', 'ข้อผิดพลาด', mb_ok);
จบ;
////////////////////// ////////////////////////////////////elh
เริ่ม
////////////////////// การประมวลผลข้อมูลแบทช์ของตารางต่างกันที่ดำเนินการควบคุมข้อผิดพลาด
dataSource2.dataset.insert;
Adotable2.fields [0] .ASTSTRING: = ADOTABLE1.FIELDS [0] .ASSTRING;
Adotable2.fields [1] .ASTSTRING: = ADOTABLE1.FIELDS [1] .ASTSTRING;
DataSource1.dataset.next;
ถ้า dataSource1.dataset.eof = true timer1.enabled: = false;
ถ้า dataSource1.dataset.eof = true จากนั้น showMessage ('ข้อมูลถูกนำเข้าสำเร็จ!');
ยกเว้น
MessageBox (0, 'การนำเข้าข้อมูลล้มเหลว', 'ข้อผิดพลาด', mb_ok);
จบ;
จบ;
dataModule2.datasource1.dataset.next; ////////////////////////////////////////////////////////////////////////////////// th
เวลาในการแทรกบันทึก (เวลาตอบสนองของตัวจับเวลา) สามารถตั้งค่าได้
นี่คือฟังก์ชั่นการนำเข้าแบทช์ของข้อมูลระหว่างตารางที่แตกต่างกันที่ออกแบบโดยคุณสมบัติขององค์ประกอบของตัวจับเวลา. dataset.next
จากนั้นสามารถนำรหัสที่คล้ายกันมาใช้เพื่อลบอัปเดตและฟังก์ชั่นอื่น ๆ (ใช้แอตทริบิวต์แหล่งข้อมูลเพื่อแก้ไข)
เนื่องจากมีฟังก์ชั่นการสืบค้นฉันจึงใช้องค์ประกอบ tadoquery ในการพัฒนาโดยประมาณวิธีเดียวกัน
ผู้แต่ง: viivd
อีเมล: [email protected]
วันที่: 2004.6.5