สอบถามเรื่อง ตัวช่วยสร้างปุ่มคำสั่ง หน่อยค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 2,066   9
URL.หัวข้อ / URL
สอบถามเรื่อง ตัวช่วยสร้างปุ่มคำสั่ง หน่อยค่ะ

คือว่าหนูสร้างปุ่ม "ระเบียนที่ซ้ำ" เอาไว้หน้า _NewOrder_ เพื่อคัดลอก Order ในกรณีที่มีลูกค้าคนเดียวแต่สั่งหลายๆ Product เมื่อหลายวันก่อนเคยใช้คำสั่งนี้ก็ใช้ได้นะ แต่วันนี้ไม่รู้ทำไมจึงเกิดปัญหาดังภาพขึ้นมา ลองแก้ลบทำใหม่ ลองสร้าง DB ใหม่ มันก็ยัง Error เหมือนๆเดิมอะค่ะ ใครพอจะมีวิธีการอื่นที่ช่วยในการไม่ต้องพิมพ์ข้อมูลทั้งหมดในหน้า _NewOrder_ ไหมค่ะ รบกวนช่วยแนะนำที ขอบคุณค่ะ

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

1 @R16734
ไม่เคยเห็นเลยออบชั่นแบบนี้ error ก็ให้ข้อมูลน้อยเหลือเกิน เลยไม่รู้ว่าติดขัดที่ตรงไหน

ลองกด Esc ดูครับ เวลาที่มันเกิด error ตัวนี้

ปัญหาน่าจะเกิดจากการออกแบบตาราง มีปัญหาเรื่องการสร้าง Primary เพราะเดาว่าคำสั่งช่วยสร้างปุ่มนี้ คือชุดคำสั่งสำเร็จรูปในการ คัดลอกรายการด้วยคำสั่ง select ..... into ...... หรือ insert into .....value (select....)
ซึ่งเวลาที่มันใส่ข้อมูลเข้าไปในตาราง ปรากฎว่า มันมีปัญหาเรื่อง index ซ้ำ หรือไม่ก็ ปัญหาการล็อคเรคคอร์ดในขณะนั้น

แต่ถ้าบอกว่า เคยมีประวัติว่าเคยทำงานได้ตามปกติ ด้วยรูปแบบนี้มาก่อน ก็ให้สันนิษฐานว่า การแก้ไขเพิ่มเติมการออกแบบใดๆ ที่ได้เพิ่งจะเสริมเติมแต่งไปใหม่นี้ ได้ก่อให้เกิดการขัดแย้งกับคำสั่งนี้แล้วล่ะ ให้ลองย้อนไปดูว่า ได้แก้ไขเพิ่มเติมอะไรไปหรือเปล่า ที่ทำไปมีอะไรที่น่าจะขัดแย้งกันหรือไม่

หรือถ้าบอกอีกว่า ไม่ได้แก้ไขเพิ่มเติมอะไรเลย เมื่อวานทำงานได้ปรกติ วันนี้ทำไม่ได้แล้ว ก็ให้สันนิษฐานว่าเป็น Bug ของ Access เอง ให้ลองทำการ compact ฐานข้อมูลแล้วทำงานดูใหม่ครับ
2 @R16751
บางทีก็ใช้งานได้นะ แต่ใช้ได้แค่ครั้งเดียวก็ขึ้นแบบนี้

พอจะมีวิธีการอื่นที่ช่วยในการไม่ต้องพิมพ์ข้อมูลทั้งหมดในหน้า _NewOrder_ ไหมค่ะ รบกวนช่วยแนะนำที ขอบคุณค่ะ
3 @R16763
ที่ผมเข้าใจคือ กดsave แล้ว ข้อมูลบางส่วนจะไม่หายไปใช่ไหมครับ
4 @R16764
Private Sub Command87_Click() (Command87คือชื่อของ กล่องปุ่มsave)
Dim grop, cou, ass, dat, times, timee, section, lean, shift, duct, cess, obser, list, Detail, audit As String (ประกาศตัวแปรของแต่ละ Box ตั้งเองเอาชื่อคล้ายๆ Box เช่น Sale Order ก็อาจเป็น SO = Me.ชื่อBox)
grop = Me.Combo42
cou = Me.Combo43
ass = Me.Combo73
section = Me.Combo158
lean = Me.Combo49
shift = Me.Combo51
duct = Me.Combo53
cess = Me.Combo55
list = Me.Combo77
Detail = Me.Detail_blem
(หลัง = Me.ชื่อของ Box)
การประกาศตัวแปร คุณก็ประกาศตามความต้องการของคุณเลยนะครับ ข้างบนนี้เป็นตัวแปรของผม เพื่อโชว์เป็นตัวอย่างนะครับ

DoCmd.RunCommand acCmdSaveRecord
DoCmd.GoToRecord acDataForm, "ชื่อตารางที่ใช้เก็บข้อมูล", acNewRec

Me.Combo42 = grop
Me.Combo43 = cou
Me.Combo73 = ass
Me.Combo158 = section
Me.Combo49 = lean
Me.Combo51 = shift
Me.Combo53 = duct
Me.Combo55 = cess
Me.Combo77 = list
Me.Detail_blem = Detail
อันนี้ก็เอาที่เราประกาศตัวแปรข้างบนมาสลับที่กัน เพื่อไรสักอย่างผมลืมละครับ
End Sub

ทั้งหมดนี้ผมเขียนเป็น code VB เอาไปวางได้เลย
5 @R16780
ที่ผมเข้าใจคือ กดsave แล้ว ข้อมูลบางส่วนจะไม่หายไปใช่ไหมครับ

ก็ไม่ได้หายไปไหนนี่ค่ะ พอกดปุ่ม save ขอมูลที่กรอกไปจากหน้าฟอร์ม มันก็ไป save อยุ่ที่ตารางเป้าหมายทุกอันแล้วค่ะ แต่พอจะกดอีกปุ่ม "คัดลอกปุ่ม" มันก็ขึ้นเหมือนภาพที่2 ข้างบนอะค่ะ
6 @R16781
[แก้ใหม่] เป็นภาพที่ 3
7 @R16782
ทำได้แล้วค่ะขอบคุณค่ะ เดี๋ยวถ้ามีปัญหาจะมาถามอีกนะค่ะ
8 @R16783
น่าจะบอกสักนิดนะครับว่าทำยังไงถึงหาย เผื่อใครที่เปิดปัญหาเดียวกันจะได้แก้ไขได้ครับ
9 @R16786
ทำตามข้างบนเลยค่ะ ดัดแปลงแค่ นิดๆหน่อยๆ เปลี่ยนชื่อตัวแปรเป็นของเราที่ต้องการ
Private Sub SAVE_Click()
Dim sale_order, id_customer, id_prod, quantity, id_unit, remark, order_date, delivery_date
sale_order = Me.sale_order
id_prod = Me.id_product
quantity = Me.quantity
id_unit = Me.id_unit
remark = Me.remark
id_customer = Me.customer_id
order_date = Me.order_date
delivery_date = Me.delivery_date

DoCmd.GoToRecord acDataForm, "TableName", acNewRec

Me.sale_order = sale_order
Me.id_product = id_prod           
Me.customer_id = id_customer
Me.quantity = quantity
Me.id_unit = id_unit                   
Me.remark = remark
Me.order_date = order_date
Me.delivery_date = delivery_date

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