กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
477 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 ในกระทู้เก่าๆ ดูนะครับ จะมีตัวอย่างให้ศึกษาด้วย
นี่เป็นความคิดเห็นส่วนตัวของผมนะครับ ท่านอื่นที่มีความคิดเห็น ทั้งแตกต่าง และเห็นด้วย สามารถร่วมแจมได้นะครับ
โดยเขาถามว่า
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 จะดีที่สุดครับ
ถ้าจะลบข้อมูลแบบไม่ต้องรีรอ ก็เลือก Execute จะดีที่สุดครับ
Time: 0.1276s