OpenQuery vs RunSQL
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 387   2
URL.หัวข้อ / URL
OpenQuery vs RunSQL

ผมเจอคำถามนี้ ซึ่งน่าจะเป็นคนไทย ถามไว้ที่ http://www.utteraccess.com/forums/showflat.php?Board=access_2000&Number=211636

โดยเขาถามว่า

DoCmd.OpenQuery "qry_SQL"
vs
DoCmd.RunSQL SQL

ต่างกันอย่างไร และอย่างไหนทำงานไวกว่ากัน

สำหรับผม ผมจะนิยมใช้แบบหลังมากกว่า เพราะจะทำงานไวกว่า โดยเฉพาะเมื่อเราใส่ Option ของ usetransaction ให้เป็น False และสามารถเขียน SQL ได้ยาวถึง 32,768 อักขระทีเดียว

DoCmd.RunSQL SQL, False

แต่แบบที่ 2 นี้จะทำงานกับ Action Queries เท่านั้น ถ้าใช้กับ Select/Crosstab Queries จะต้องใช้แบบแรก

แบบแรกมีข้อเสียคือจะต้องทำงานกับ Stored Queries หรือต้องมีการสร้าง Queries ไว้ล่วงหน้าก่อนแล้ว และจะมี Warning Message ขึ้นมาเตือนก่อนทำงานด้วย ที่มันทำงานช้าก็เพราะจุดนี้แหล่ะครับ

แต่วิธีที่ผมชอบอีกอันหนึ่งคือ Execute method

CurrentDb.Execute SQL

และสามารถที่จะคืนค่า จำนวนข้อมูลที่ถูกดำเนินการ ให้ด้วย โดยใช้ RecordsAffected

ลองค้นคำว่า RecordsAffected ในกระทู้เก่าๆ ดูนะครับ จะมีตัวอย่างให้ศึกษาด้วย

นี่เป็นความคิดเห็นส่วนตัวของผมนะครับ ท่านอื่นที่มีความคิดเห็น ทั้งแตกต่าง และเห็นด้วย สามารถร่วมแจมได้นะครับ





2 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R02755
ผมชอบ แบบ Execute ครับ ความรู้สึกส่วนตัวผมว่ามันไวกว่า Docmd.RunSQL นะครับ (อาจรู้สึกไปเองก็ได้)
2 @R02757
ผมก็เห็นอย่างนั้นเหมือนกัน คงเป็นเพราะว่า Docmd.RunSQL ยังมีพารามิเตอร์ ให้สามารถยกเลิกได้

ถ้าจะลบข้อมูลแบบไม่ต้องรีรอ ก็เลือก Execute จะดีที่สุดครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0661s