Online Reference

Home

Microsoft Reference
Knowledge Developer Database Internet Resource Forum
VBA
Input / Output Function
ดาวน์โหลดคู่มือ

Lock Statement, Unlock Statement

VBA Statement, ควบคุมการเข้าถึงจากกระบวนการอื่น ไปยังบางส่วน หรือทั้งหมดของไฟล์ ที่เปิดด้วยการใช้ประโยคคำสั่ง Open

ไวยากรณ์

Lock [#] filenumber [, recordrange]

Unlock [#] filenumber [, recordrange]

ไวยากรณ์ประโยคคำสั่ง Lock และ Unlock มีรายละเอียดส่วนดังนี้

ส่วน รายละเอียด
filenumber บังคับ, เป็นหมายเลขไฟล์
recordrange ไม่บังคับ, เป็นช่วงของเรคคอร์ดที่ต้องการล็อก หรือยกเลิกการล็อก

การตั้งค่า

อากิวเมนต์ recordrange ตั้งค่า ดังนี้

recnumber | [start] To end

การตั้งค่า คำอธิบาย
recnumber หมายเลขเรคคอร์ด (ไฟล์โหมด Random) หรือหมายเลขไบต์ (ไฟล์โหมด Binary) ที่เริ่มการล็อก หรือยกเลิกการล็อก
start หมายเลขของเรคคอร์ดหรือไบต์แรก ที่ต้องการล็อก หรือยกเลิกการล็อก
end หมายเลขของเรคคอร์ดหรือไบต์สุดท้าย ที่ต้องการล็อก หรือยกเลิกการล็อก

ลักษณะการประยุกต์

ประโยคคำสั่ง Lock และ Unlock ใช้ในสภาพแวดล้อมที่มี หลายกระบวนการต้องการเข้าถึงไฟล์เดียวกัน

ประโยคคำสั่ง Lock และ Unlock ใช้คู่กันเสมอ อากิวเมนต์ของ Lock และ Unlock ต้องตรงกัน

เรคคอร์ดหรือไบต์แรกในไฟล์อยู่ที่ตำแหน่งที่ 1 เรคคอร์ดหรือไบต์ที่ 2 อยู่ที่ตำแหน่งที่ 2 และต่อไป ถ้าระบุเพียงเรคคอร์ดเดียว จะมีการล็อก หรือยกเลิกการล็อกเรคคอร์ดนั้น เพียงเรคคอร์ดเดียว ถ้าระบุช่วงของเรคคอร์ดแต่ละเรคคอร์ดเริ่มต้น (start) เรคคอร์ดทั้งหมด จากเรคคอร์ดแรกจนถึงสิ้นสุดช่วง (end) ได้รับการล็อกหรือยกเลิกการล็อก การใช้ Lock โดยไม่มี recnumber ไฟล์ที่ระบุจะถูกล็อก การใช้ Unlock โดยไม่มี recnumber ไฟล์ที่ระบุจะถูกยกเลิกการล็อก

ถ้าไฟล์เปิดแบบ Sequential สำหรับการนำหรือส่งออก Lock และ Unlock มีผลกับทั้งไฟล์ โดยไม่พิจารณาช่องที่ระบุด้วย start และ end

ข้อควรระวัง ต้องมั่นใจว่ามีการยกเลิกการล็อกด้วยประโยคคำสั่ง Unlock ก่อน การปิดไฟล์ หรือออกจากโปรแกรม ความล้มเหลวในการยกเลิกการล็อก สร้างผลลัพธ์ที่ไม่สามารถคาดการณ์

ดูเพิ่มเติม

Open Statement

ตัวอย่าง

' กำหนด User - define type
Type Record
  ID As Integer
  Name As String * 20
End Type

Dim MyRecord As Record, RecordNumber ' ประกาศตัวแปร

' เปิดไฟล์สำหรับการเข้าถึงแบบสุ่ม (random access)
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)

' อ่านไฟล์ด้วย Get
' กำหนดหมายเลขเรคคอร์ด
RecordNumber = 4
' ล๊อกเรคคอร์ด
Lock #1, RecordNumber

' อ่านเรคคอร์ดที่ 3
Get #1, Position, MyRecord
' ปรับปรุงเรคคอร์ด
MyRecord.ID = 234
MyRecord.Name = "John Smith"

' เขียนเรคคอร์ดที่ปรับปรุง
Put #1, Position, MyRecord
' ยกเลิกล๊อกเรคคอร์ด
Unlock #1, RecordNumber

' ปิดไฟล์
Close #1