!delete()

   
แตสงสัยว่า ฟิลด์ที่ตั้งเป็น Primary keys เมื่อ delete record ไปแล้ว(ยังไม่ได้ pack) เวลาที่เพิ่มข้อมูลเข้าไปใหม่โดยใช้ รหัสเดิม ทำไมมันเพิ่มไม่ได้ พอเวลา ไปเพิ่มคำที่ว่า !delete() ตรง filter มันกลับเพิ่มได้ "!delete()" หมายความว่าไง คืออะไรหรือคะ
แต
29 ธ.ค. 47 เวลา 13:43:28 น. --> 203.118.120.30,
   
   
Primary keys จะมีซ้ำกันไม่ได้ (Just only one.)
ใส่เงื่อนไข !DELETE() กับ Record ที่ delete แล้วเงื่อนไขจะเป็นจริง (.T.)
Filter มาจึงได้ Record ที่ไม่มี Primary keys ตัวนั้นมาเปรียบเทียบ
ตอบจากความคิดนะยังไม่ได้ทดลองเลย. แต่กรณีนี้หากกลับไปเป็น Table เต็มจะไม่มีปัญหาหรือ ?
Primary keys มันเบิ้ลนะ
DanceWithFox
29 ธ.ค. 47 เวลา 13:58:37 น. --> 202.47.247.130,
  
   
คิดว่าไม่น่าจะมีปัญหานะคะเพราะว่าจะสั่ง pack ตอนปิด ฟอร์ม อีกทีหนึ่ง หรือคิดว่าไงคะ...ขอบคุณนะคะที่แนะนำมา
แต
29 ธ.ค. 47 เวลา 15:40:04 น. --> 203.118.113.96,
  
   
สรุปคุณแตใช้ได้ยัง?
และตกลงว่าได้ทำการ Pack หรือไม่ได้ทำ

*กระทู้
"...เมื่อ delete record ไปแล้ว(ยังไม่ได้ pack)..."

*ข้อความ 2

"...คิดว่าไม่น่าจะมีปัญหานะคะเพราะว่าจะสั่ง pack ตอนปิด ฟอร์ม อีกทีหนึ่ง ..."

Arsenal
29 ธ.ค. 47 เวลา 16:38:08 น. --> 203.170.137.119
  
   
ตอบ...คุณArsenal สรุปว่าใช้ได้ค่ะ ก็คือในระหว่างที่กำลังรันโปรแกรม มีrecordบางตัวที่ต้องการลบ ก็ลบโดยใช้ delete recordนั้นออกไปแต่ยังไม่pack พอเพิ่มrecordเข้าไปใหม่โดยใช้รหัสเดิม(ที่เป็นPK)บันทึกลงไปมันไม่สามารถบันทึกลงไปได้ แต่ถ้าแตไปกำหนดค่า Filter ในโครงสร้างของTableให้เป็น !delete() ทีนี้ก็สามารถเพิ่มrecordใหม่ที่รหัสเดิม(ที่เป็นPK)นั้นลงไปได้ พอแตปิดโปรแกรมก็จะสั่งให้ pack recordที่ลบไปตอนแรกค่ะ จะได้ไม่มีไปซ้ำกับรหัสrecordใหม่ที่เพิ่มไปทีหลัง(รหัสมันเบิ้ลPK) ซึ่งแตคิดว่าไม่น่าจะมีปัญหานะคะ ที่แตสงสัยก็คือทำไม !delete()มันแก้ตรงนี้ได้ค่ะ
แต
30 ธ.ค. 47 เวลา 9:02:52 น. --> 203.118.113.21,
  
   
คุณแต ลองจากสำเนาฐานข้อมูลก่อนน่าจะดีกว่านะ ถ้าใช้ตัวจริงเลยเดี๋ยวอาจยุ่งยาก
ผมถนัดจาก Fox Dos (Table อย่างเดียว) มาทำ VFP แรก ๆ ยุ่งยากกับเรื่องกฏเกณฑ์ของ
Database จนเกือบท้อ โดยเฉพาะอะไรที่อัตโนมัติมาก ๆ น่ะครับ แต่ถ้าแม่นเรื่องแบบนี้แล้วก็ดี
ทดลองจากของซ้อมก่อนนะ โชคดี..... ปีใหม่... ?
DanceWithFox
30 ธ.ค. 47 เวลา 9:06:29 น. --> 202.47.247.130,
  
   
โชคดีปีใหม่ค่ะ โชคดีมีเงินใช้นะคะทุกคนชาวสมาชิก Fox ของแตก็โชคดีมีตังค์เยอะ (อวยพรให้ตัวเองน่ะ)
แต
30 ธ.ค. 47 เวลา 9:48:56 น. --> 203.118.113.21,
  
   
ที่ผมถามเพราะว่ามันยังมีอีกรณีหนึ่งที่เป็นสาเหตุ
ของการซ้ำกันของ PK ได้ ลักษณะที่คุณแตบอกว่าน่าจะเป็นเป็นการเปิดใช้Table แบบ Stand alone
หรือ Exclusive จุดที่ทำให้ซ้ำกันได้ก็คือ การใช้คำสั่ง APPEN BLANK ในการเพิ่มเรคคอร์ด
ถ้าหากเกิด Hang หลังจาก APPEN BLANK โดยที่ยังไม่ได้ Replace ก็จะเกิดเรคคอร์ดว่างขึ้นมา
และครั้งต่อไปเมื่อ เพิ่มรายการโดยสั่ง APPEN BLANK ก็จะ Error เพราะ PK ซ้ำ (ค่าว่าง) เหมือนกับกรณีข้างต้นได้ ...ถ้าเจอแบบนี้ก็ให้เลี่ยงไปใช้ INSERT INTO แทน

***************
ขออวยพรให้ทุกท่านที่ผ่านมาอ่าน มาสนทนาใน Foxboard แห่งนี้
ขอให้ปี 2548 ที่จะถึงนี้ มีแต่สิ่งดีๆ เข้ามาในชีวิตนะครับ
Arsenal
30 ธ.ค. 47 เวลา 10:25:18 น. --> 203.170.137.204
  
ขอเชิญร่วมตอบคำถามครับ
 
ผู้ตอบ :
รหัสผ่าน :
รูปภาพ :
คำตอบ :