การย้ายข้อมูลให้อยู่บรรทัดเดียวกัน
กระทู้เก่าบอร์ด อ.Yeadram

 1,305   3
URL.หัวข้อ / URL
การย้ายข้อมูลให้อยู่บรรทัดเดียวกัน

ข้อมูลเริ่มแรก
Field1        Field2        Field3
0001
0009
                 block          BB
0003
0002
0005
                 block          AA
0002
                 block          CC

ข้อมูลที่ต้องการย้าย
Field1        Field2        Field3      Field4
0001                                             BB
0009                                             BB
                 block          BB
0003                                             AA
0002                                             AA
0005                                             AA
                 block          AA
0002                                             CC
                 block          CC

ไม่ทราบว่า access สามารถทำได้หรือไม่ครับ หากทำได้รบกวนอธิบายวิธีโดยละเอียดด้วยครับ

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

1 @R08802
มันทำได้อยู่แล้วครับ
อาจจะด้วยการเขียนโค้ด เพราะสะดวกที่สุด
แต่ให้นั่นอธิบาย มันต้องพิมพ์ยาวมากครับ
เอาแค่แนวคิดไปก่อนก็แล้วกัน

- คุณต้องเพิ่มฟิลด์ลำดับให้มัน เพื่อเป็นดัชนี เช่น id (autonumber)
- สร้างฟิลด์ที่4 เอาไว้รอ
- เขียนโค้ด เปิดเรคคอร์ดเซ็ต วนลูปในทุกๆ เรคคอร์ด
ถ้าเจอเรคคอร์ดที่ ฟิลด์2 ไม่เป็นค่าว่าง
   1) เก็บค่าฟิลด์ 3 เข้าตัวแปร f3
    2) เก็บค่า id เข้าตัวแปร idx
    3) เขียน statement สั่งอัพเดตตารางว่า
       ให้อัพเดตข้อมูล ฟิลด์4 ของทุกๆ เรคคอร์ด เป็นค่า f3 โดยที่เรคคอร์ดเหล่านั้นจะต้องมีค่า id น้อยกว่าค่า idx และฟิลด์4 ของเรคคอร์ดเหล่านั้น ต้องเป็นค่าว่าง
- จบการวนลูป
- เขียน statement อีกชุดเพื่ออัพเดตตารางอีกครับว่า
    ให้อัพเดตฟิลด์4 ของทุกๆ เรคคอร์ด เป็นค่าว่าง โดยเลือกกระทำกับเรคคอร์ด ที่มีข้อมูลในฟิลด์ 3 เท่านั้น

2 @R08803
พอดีคำถามคล้ายๆกับเคสเก่าที่ผมเคยตอบไป ขออนุญาติก๊อปโค๊ตเก่ามาปรับตอบให้นะครับ...
Run Code ตามด้านล่างได้เลยครับ แต่ใน Table ต้องมี Field 4 อยู่แล้วนะครับ

Function RevFullFill()
Dim Rs As Recordset
Dim Mem As String
Set Rs = CurrentDb.OpenRecordset("Table1")
Rs.MoveLast
Do Until Rs.BOF
If Rs![Field3] = "" Or IsNull(Rs![Field3]) Then
    Rs.Edit
    Rs![Field4] = Mem
    Rs.Update
Else
    Mem = Rs![Field3]
End If
    
Rs.MovePrevious
Loop
Rs.Close
End Function
3 @R08809
คุณแดน code ดังกล่าวต้องนำไปว่างที่ไหนครับ และต้องทำอย่างไรบ้างให้มัน auto run ครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3978s