ตรวจสอบตัวแปร ว่ายังให้ค่าอยู่หรือไม่
กระทู้เก่าบอร์ด อ.Yeadram

 1,243   2
URL.หัวข้อ / URL
ตรวจสอบตัวแปร ว่ายังให้ค่าอยู่หรือไม่

สมมุติตัวแปรตามที่ท่าน อ.เคยแนะนำไว้ เช่น
Recordset เปิดแล้ว ต้องปิด ถ้าไม่ปิดมันก็เหมือน ล่องลอยอยู่ใน
Memmory ประมาณนี้(ผมสมมุติเอาตามที่ผมเข้าใจ)

แล้วมีวิธีการตรวจสอบไหมครับว่า มีตัวแปรอะไรบ้าง ที่ยังให้ค่าในขณะนี้
และยังไม่ได้ปิด

(พิ้นฐาน VB ไม่มีครับ อ่านจากหนังสืออย่างเดียว)
ขอบคุณครับ

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

1 @R02283
ผมไม่มีวิธีเช็คครับ
ผมใช้แต่วิธีดัก

dim sq as string
sq = "SElect * from table 1"
if Rs.state=1 then Rs.Close
Rs.open sq, conn,1
2 @R02297
สำหรับผมแล้ว รูปแบบของโค้ดของผมเป็นแบบข้างล่างนี้ จะเห็นได้ว่าที่ตรงลาเบล xxx_exit ผมกำหนด on error resume next เอาไว้ ดังนั้นไม่ว่า Recordset Object มันจะเปิดอยู่หรือไม่ก็ตาม ผมก็สั่งปิดไปเลย ผมไม่สนใจมานั่งเช็คแล้ว เพราะยังไงผมก็กำลังจะออกจาก Procedure แล้ว แต่กรณีของ ADO Recordset นั้นมีพิเศษหน่อยก็คือต้องเช็คว่ามันอยู่ระหว่างการเพิ่มเรคอร์ดใหม่หรือแก้เรคอร์เก่าอยู่หรือไม่ ถ้ามี ก็ต้องสั่งยกเลิกก่อนแล้วถึงจะปิดได้ เพราะ ADO ทำงานต่างจาก DAO ตรงที่ว่า ถ้าปิดเรคอร์ดไปโดยที่ยังไม่สั่ง ADO_RS.Update แล้ว   ADO ก็ถือว่าจะสั่ง Update ไปโดยปริยาย   ส่วน DAO จะทำงานตรงกันข้ามโดยถือว่ายกเลิกการแก้ไข/เพิ่มข้อมูลไปโดยปริยายครับ

Private Sub xxx
Dim DAO_RS as DAO.Recordset
Dim ADO_RS as New ADO_RS.Recordset

on error goto xxx_error
...
...
...
xxx_exit:
   on error resume next
   DAO_RS.Close : Set DAO_RS = Nothing

   If (ADO_RS.EditMode = adEditAdd) Or (ADO_RS.EditMode = adEditInProgress) Then ADO_RS.CancelUpdate
   ADO_RS.Close : Set ADO_RS = Nothing
   exit sub

xxx_error:
   msgbox "error code " .......
   resume xxx_exit
end sub
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3825s