กระทู้เก่าบอร์ด อ.Yeadram
1,243 2
URL.หัวข้อ /
URL
ตรวจสอบตัวแปร ว่ายังให้ค่าอยู่หรือไม่
สมมุติตัวแปรตามที่ท่าน อ.เคยแนะนำไว้ เช่น
Recordset เปิดแล้ว ต้องปิด ถ้าไม่ปิดมันก็เหมือน ล่องลอยอยู่ใน
Memmory ประมาณนี้(ผมสมมุติเอาตามที่ผมเข้าใจ)
แล้วมีวิธีการตรวจสอบไหมครับว่า มีตัวแปรอะไรบ้าง ที่ยังให้ค่าในขณะนี้
และยังไม่ได้ปิด
(พิ้นฐาน VB ไม่มีครับ อ่านจากหนังสืออย่างเดียว)
ขอบคุณครับ
Recordset เปิดแล้ว ต้องปิด ถ้าไม่ปิดมันก็เหมือน ล่องลอยอยู่ใน
Memmory ประมาณนี้(ผมสมมุติเอาตามที่ผมเข้าใจ)
แล้วมีวิธีการตรวจสอบไหมครับว่า มีตัวแปรอะไรบ้าง ที่ยังให้ค่าในขณะนี้
และยังไม่ได้ปิด
(พิ้นฐาน VB ไม่มีครับ อ่านจากหนังสืออย่างเดียว)
ขอบคุณครับ
2 Reply in this Topic. Dispaly 1 pages and you are on page number 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
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
Time: 0.3825s
ผมใช้แต่วิธีดัก
dim sq as string
sq = "SElect * from table 1"
if Rs.state=1 then Rs.Close
Rs.open sq, conn,1