สั่ง code ให้รันเมื่อ access พบว่าซ้ำ
กระทู้เก่าบอร์ด อ.Yeadram

 1,441   6
URL.หัวข้อ / URL
สั่ง code ให้รันเมื่อ access พบว่าซ้ำ

[FONT=Arial]ผมใช้ความสามารถของ access ในการตรวจสอบข้อมูลซ้ำ ก็คือให้เช็ค primary key[/FONT] [FONT=Arial]ซึ่งเมื่อมีการซ้ำกัน Access ก็จะโชว์หน้าต่าง error มาตามปกติ[/FONT]
[SIZE=4]คำถามครับ[/FONT] [FONT=Arial]ถ้าผมมี code ตัวนึงที่ต้องการให้รันเฉพาะเวลาที่มีการซ้ำกันของ primary key (ถ้าไม่ซ้ำก็ไม่ต้องรัน) ผมจะเขียนคำสั่ง if อย่างไรครับ   
[SIZE=4]ปล. [/FONT] [FONT=Arial]ผมไม่ต้องการ select ข้อมูลมาตรวจสอบก่อน insert น่ะครับ เลยให้ Access มันเช็คเอง เพราะกลัวว่าถ้าข้อมูลมันเยอะแล้วจะช้า[/FONT]
[SIZE=4]ขอบคุณครับ[/FONT]

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

1 @R18220
ไปเช็คที่ Form_Error event

Private Sub Form_Error(DataErr As Integer, Response As Integer)
   If DataErr = 3022 Then
      รันโค้ดของคุณ
      Response = acDataErrContinue
   End if
End Sub

ปล. การเช็คจาก primary key ยังไงก็ไม่ช้าหรอกครับ เพราะมันเป็นคีย์อยู่แล้ว
2 @R18229
ขอบคุณครับ อ.สันติสุข

ปล. รหัส error ดูได้จากที่ไหนครับ
3 @R18231
อีกเรื่องครับ จากที่อาจารย์บอกว่า select primary key มาเช็คก่อนสั่ง insert มันไม่ช้า แต่ถ้าผมใส่ where เข้าไปด้วยมันจะช้าลงหรือเปล่าครับ (สมมติว่ามีประมาณ ห้าหมื่น เรคคอร์ดครับ)

คือตอนที่ผมทำโปรเจคใช้ PHP + MSSQL เวลาที่จะ insert barcode(primary) ผมจะให้ select มาตรวจก่อนว่ามี barcode ที่จะเพิ่มหรือยัง (โดยมีเงื่อนไข where ด้วย) ตอนแรกๆ ก็ใช้งานได้ดีครับ พอจำลองข้อมูลประมาณ 2 ปี (ประมาณ ห้าหมื่น เรคคอร์ด) ตอนตรวจสอบมันเริ่มช้าอย่างเห็นได้ชัดเลยครับ เลยต้อง coding กันใหม่ ไม่ทราบว่า access มันจะเป็นเหมือนกันหรือเปล่าครับ
4 @R18232
http://msdn.microsoft.com/en-us/library/office/bb221208%28v=office.12%29.aspx

ใน help file ของ Access เอง (กด F1) ก็มีครับ ลองค้นด้วยคำว่า Trapable DAO Error แต่ถ้าเป็น help ภาษาไทยผมไม่รู้นะ
5 @R18233
ขอบคุณครับอาจารย์

ตอบเร็วมากเลยครับ
6 @R18234
คุณแน่ใจหรือเปล่าว่าเป็น primary key เพราะถ้าเป็น มันไม่ควรจะช้านะ ไม่ว่าเขียนด้วยภาษาอะไรก็ตาม ลองเช็คฐานข้อมูลคุณดูครับว่ามันมีหลายๆก้อนหรือเปล่า แล้วถ้าทำให้เป็น cluster index ไปด้วย ก็จะยิ่งเร็วครับ

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