สร้าง row จาการระบุจำนวน row
กระทู้เก่าบอร์ด อ.Yeadram

 1,988   4
URL.หัวข้อ / URL
สร้าง row จาการระบุจำนวน row

ใน tabel มี 4 column คือ ID , กลุ่มสินค้า , ลำดับเลขที่ , Serial number ดึงมาทำฟอร์มเพื่อกรอก ข้อมูล
โดยที่กลุ่มสินค้ามีหลายกลุ่ม และแต่ละกลุ่มก็มีหลาย serial number จะทำฟอร์มแบบ กำหนด row ไว้ล่วงหน้า
เพื่อกรอก Serial โดยระบุตัวเลขเพื่อสร้าง row และให้ สร้างลำดับเลขที่ โดยอัตโนมัติจากการ ระบุตัวเลขเพื่อกำหนดจำนวน row
แต่ที่สำคัญคือ ลำดับเลขที่จะนับ 1 ใหม่เมื่อเป็นกลุ่มสินค้าใหม่ ท่านใดพอมีตัวอย่าง หรือ คำแนะนำได้บ้างครับ ส่งมาที่
anaypol@hotmail.com ก็ได้นะครับ ขอบคุณมาก (เมื่อวานถามไปแล้วแต่ให้คำถามไม่ชัดเจนเองครับ)

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

1 @R10294
สิ่งที่ต้องเตรียม :
- สร้างฟอร์มเป็นแบบ contineous form ใช้แหล่งข้อมูลจากตารางต้นทาง (สมมติชื่อ table1 )
- คอนโทรล สามตัวสำคัญ ให้วางไว้ส่วนหัวของฟอร์ม
1 cbGroup ไม่ต้องผูกกับฟิลด์ ใช้เป็น textbox หรือ combo box ก็ได้ ให้ผู้ใช้กรอกระบุกลุ่มที่กำลังจะทำงาน
2 textbox ชือ txRow ไม่ต้องผูกกับฟิลด์ใดๆ ให้ผู้ใช้กรอกจำนวนแถวตามต้องการ
3 ปุ่มคำสั่ง cmdAddRow เขียนคำอธิบายให้ผู้ใช้เข้าใจว่า เป็นปุ่มสร้างรายการ

ข้อจำกัด :
    ตารางนี้จะต้องไม่มีฟิลด์ Primary เดี่ยว หากจำเป็นต้องมี ให้ใช้ คีย์ร่วม คือใช้ฟิลด์ กลุ่มสินค้า และ ลำดับที่


การทำงาน :
- ให้ผู้ใช้กรอก ระบุกลุ่ม
- ให้ผู้ใช้กรอก ระบุจำนวนรายการ
- ให้ผู้ใช้กดปุ่มคำสั่ง
- เขียนคำสั่ง ให้เพิ่มรายการเข้าตาราง โดยใส่ข้อมูลไปเพียงสองฟิลด์ คือ กลุ่มสินค้า และ ลำดับที่
   - เขียนสายอักขระ sql statement แบบเลือกข้อมูล ระบุเงื่อนไขให้เลือกเฉพาะรายการที่ มีกลุ่มสินค้าเดียวกันกับกลุ่มสินค้าที่ผู้ใช้ระบุไว้บนคอนโทรลหัวฟอร์ม
   - สั่งให้ฟอร์มนำสายอักขระนั้น มาเป็นแหล่งข้อมูลของฟอร์ม และสั่ง Requery

โค้ดในปุ่มคำสั่ง :
Private sub cmdAddRow_Click()
' ตรวจสอบ ถ้าผู้ใช้กรอกข้อมูลไม่ครบ หรือไม่ถูกต้อง ก็ให้หยุดทำงาน
if len(txRow) < 1 or val(txRow) < 1 then exit sub
if len(cbGroup) < 1 then exit sub

' ล้างข้อมูลเก่าในตาราง เพื่อป้องกันการซ้ำของข้อมูล
docmd.runsql "DELETE FROM Table1 Where [กลุ่มสินค้า] = " & cbGroup
' อาจต้องเปลี่ยน Operator เป็น Like และใส่เครื่องหมาย หยดน้ำค้างให้ถูกต้อง กรณีฟิลด์นี้เก็บข้อมูลเป็น text

' ประกาศตัวแปรไว้ทำงานสะดวก
dim i as integer
dim sq as string
' วนลูปเพิ่มรายการเข้าตาราง ตามจำนวนที่ระบุ
i = 0
do
i = i+1
sq= "Insert into table1([กลุ่มสินค้า], [ลำดับเลขที่]) Values(" & cbGroup & ", " & i & ");"
docmd.runsql sq
loop until i = cint(txRow)


' เขียนสายอักขระ คิวรี่แบบเลือกข้อมูล
sq = "Select * from table1 where [กลุ่มสินค้า] = " & cbGroup
' เอาสายอักขระดังกล่าวมาเป็นแหล่งข้อมูลของฟอร์ม
me.Recordsource = sq
' สั่งให้ฟอร์มโหลดข้อมูลใหม่ ตามแหล่งข้อมูลใหม่ที่เพิ่งให้ไป
me.requery

End sub
2 @R10330
ขอบคุณมากครับคุณ yeadram
ผมได้ทดลองนำไปทำตามที่แนะนำมาแล้วครับก็ insert Row ได้ครับได้ผมต้องปรับโดยต้อง คำสั่งนี้ เพื่อไม่ให้ลบข้อมูลเดิม
' DoCmd.RunSQL "DELETE FROM t_sn_PV Where [GroupArray] = " & cbGroup
กับคำสั่งนี้

' Me.RecordSource sq โดยเฉพาะ คำสั่ง Me.RecordSource sq ไม่สามารถใส่ลงไปได้เลยจะ debug ตลอด
โดยสร้างตาราง และ ฟอร์ม กับไฟล์ ฐาน Access เปล่าขึ้นมาใหม่ หรือในไปไว้ในฐานข้อมูลที่จะใช้งานจริง และ Run
เป็น ฟอร์มหลัก ฟอร์มเดียว แต่ปัญหาเกิดตอนที่ในไปใช้เป็น sub form สามารถ insert ได้ โดยไปดูข้อมูลที่ตาราง
แต่ไม่มีการแสดงข้อมูลในฟอร์มที่นำไปเป็น sub form หากเป็นไปได้ผมจะส่งไฟล์ที่ทำไปให้ดูครับ
3 @R10360
ถ้าเป็น sub form ก็ต้องอ้างให้ถูก อ้างไปถึงฟอร์มย่อยซิครับ

me.ชื่อคอนโทรลฟอร์มย่อย.form.recordsource = sq
me.ชื่อคอนโทรลฟอร์มย่อย.form.requery
4 @R10369
ขอบคุณมากเลยครับ มีหนังสือแนะนำให้อ่านได้บ้างไหมครับ คุณ yeadram
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3440s