เปลี่ยนข้อมูลในแต่ละฟิลด์ยังไงครับ
กระทู้เก่าบอร์ด อ.Yeadram

 956   9
URL.หัวข้อ / URL
เปลี่ยนข้อมูลในแต่ละฟิลด์ยังไงครับ

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

            strSQL = "UPDATE student SET yearths = '2/2558' where yearths = '3/2559';"
            strSQL = "UPDATE student SET id_room = 'ม.2/1' where id_room = 'ม.3/1';"
            strSQL = "UPDATE student SET class = 'ม.2/1' where class = 'ม.3/1';"
            strSQL = "UPDATE student SET room_1 = 'มัธยมศึกษาปีที่ 2/1' where room_1 = 'มัธยมศึกษาปีที่ 3/1';"
            
            strSQL = "UPDATE student SET id_room = 'ม.2/2' where id_room = 'ม.3/2';"
            strSQL = "UPDATE student SET class = 'ม.2/2' where class = 'ม.3/2';"
            strSQL = "UPDATE student SET room_1 = 'มัธยมศึกษาปีที่ 2/2' where room_1 = 'มัธยมศึกษาปีที่ 3/2';"
            
            strSQL = "UPDATE student SET id_room = 'ม.2/3' where id_room = 'ม.3/3';"
            strSQL = "UPDATE student SET class = 'ม.2/3' where class = 'ม.3/3';"
            strSQL = "UPDATE student SET room_1 = 'มัธยมศึกษาปีที่ 2/3' where room_1 = 'มัธยมศึกษาปีที่ 3/3';"
            
            strSQL = "UPDATE student SET id_room = 'ม.2/4' where id_room = 'ม.3/4';"
            strSQL = "UPDATE student SET class = 'ม.2/4' where class = 'ม.3/4';"
            strSQL = "UPDATE student SET room_1 = 'มัธยมศึกษาปีที่ 2/4' where room_1 = 'มัธยมศึกษาปีที่ 3/4';"
            
            strSQL = "UPDATE student SET id_room = 'ม.2/5' where id_room = 'ม.3/5';"
            strSQL = "UPDATE student SET class = 'ม.2/5' where class = 'ม.3/5';"
            strSQL = "UPDATE student SET room_1 = 'มัธยมศึกษาปีที่ 2/5' where room_1 = 'มัธยมศึกษาปีที่ 3/5';"
            
            strSQL = "UPDATE student SET id_room = 'ม.2/6' where id_room = 'ม.3/6';"
            strSQL = "UPDATE student SET class = 'ม.2/6' where class = 'ม.3/6';"
            strSQL = "UPDATE student SET room_1 = 'มัธยมศึกษาปีที่ 2/6' where room_1 = 'มัธยมศึกษาปีที่ 3/6';"
            
            strSQL = "UPDATE student SET id_room = 'ม.2/7' where id_room = 'ม.3/7';"
            strSQL = "UPDATE student SET class = 'ม.2/7' where class = 'ม.3/7';"
            strSQL = "UPDATE student SET room_1 = 'มัธยมศึกษาปีที่ 2/7' where room_1 = 'มัธยมศึกษาปีที่ 3/7';"
            
            strSQL = "UPDATE student SET id_room = 'ม.2/8' where id_room = 'ม.3/8';"
            strSQL = "UPDATE student SET class = 'ม.2/8' where class = 'ม.3/8';"
            strSQL = "UPDATE student SET room_1 = 'มัธยมศึกษาปีที่ 2/8' where room_1 = 'มัธยมศึกษาปีที่ 3/8';"
            
            strSQL = "UPDATE student SET id_room = 'ม.2/9' where id_room = 'ม.3/9';"
            strSQL = "UPDATE student SET class = 'ม.2/9' where class = 'ม.3/9';"
            strSQL = "UPDATE student SET room_1 = 'มัธยมศึกษาปีที่ 2/9' where room_1 = 'มัธยมศึกษาปีที่ 3/9';"
            
            strSQL = "UPDATE student SET id_room = 'ม.2/10' where id_room = 'ม.3/10';"
            strSQL = "UPDATE student SET class = 'ม.2/10' where class = 'ม.3/10';"
            strSQL = "UPDATE student SET room_1 = 'มัธยมศึกษาปีที่ 2/10' where room_1 = 'มัธยมศึกษาปีที่ 3/10';"
            
            strSQL = "UPDATE student SET id_room = 'ม.2/11' where id_room = 'ม.3/11';"
            strSQL = "UPDATE student SET class = 'ม.2/11' where class = 'ม.3/11';"
            strSQL = "UPDATE student SET room_1 = 'มัธยมศึกษาปีที่ 2/11' where room_1 = 'มัธยมศึกษาปีที่ 3/11';"

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

1 @R21430
สั่งว่า DoCmd.RunSQL "Update ......" โดยตรงเลย หรือ DoCmd.RunSQL strSQL ก็ได้ครับ
2 @R21434
ต้องสั่งทีละบรรทัดเหรอครับ อาจารย์สันติสุข ให้มันทำครั้งเดียวพร้อมกันทั้งหมดได้ไหมครับ
3 @R21435
ทำทั้งหมดทีเดียว เราเรียกว่าทำเป็น transaction เราต้องใช้ method BeginTrans และ CommitTrans หรือ Rollback เป็นคำสั่งครอบคำสั่งที่ทำการปรับปรุงข้อมูลเอาไว้อีกที

BeginTrans เป็นคำสั่งบอกว่าเราจะเริ่ม transaction

CommitTrans เป็นคำสั่งบอกว่าทั้งหมดที่เราทำกับข้อมูลหลังคำสั่ง BeginTrans นั้นให้ปรับปรุงลงไปในฐานข้อมูลได้แล้ว

Rollback เป็นคำสั่งบอกว่าทั้งหมดที่เราทำกับข้อมูลหลังคำสั่ง BeginTrans นั้นให้ยกเลิกให้หมด

การสั่ง CommitTrans และ Rollback โดยไม่ได้สั่ง BeginTrans มาก่อนจะทำให้เกิด runtime error ได้ ดังนั้นจึงมักใช้ตัวแปรตัวนึงเพื่อเป็น flag บอกว่าได้สั่ง BeginTrans ไปแล้วหรือยังด้วย

โครงสร้างของโปรแกรมจะเป็นดังนี้ครับ

Dim Flag As Boolean
Dim DB As DAO.Database
...
...

On Error Goto ErrRtn

Set DB = CurrentDB()

DBEngine.BeginTrans : Flag = True
   strSQL = "...."
   DB.Execute

   strSQL = "...."
   DB.Execute

   strSQL = "...."
   DB.Execute

   หรือถ้าเจอเงื่อนไขให้ยกเลิกการปรับปรุงข้อมูล ก็ให้สั่ง DBEngine.Rollback: Flag = False แล้วก็ห้ามไปทำ DBEngine.CommitTrans ที่อยู่ข้างล่างด้วยนะครับ ต้องหาทางกระโดดข้ามไป ไม่งั้นจะเกิด error

DBEngine.CommitTrans : Flag = False

ExitRtn:
   Exit Sub หรือ Exit Function
   
ErrRtn:
    ...
    ...
    ...

    If Flag then DBEngine.Rollback: Flag = False
    Resume ExitRtn
End If
End Sub หรือ End Function

ลองเอาไปปรับใช้ดูนะครับ
4 @R21438
หรือคุณหมายถึงยุบรวมบรรทัดให้เป็นอย่างนี้หรือเปล่า

DoCmd.RunSQL "UPDATE student SET id_room = replace(id_room,""ม.3/"",""ม.2/""), class = replace(id_room,""ม.3/"",""ม.2/"") where id_room like ""ม.3/*"";"
5 @R21439
ครับผมหมายถึงยุบรวมเป็นบรรทัดครับ
6 @R21440
คือตอนนี้ทำทำเป็นปุ่มคำสั่งแต่ละปุ่ม ดังนี้ครับ ซึ่งมันต้องกดถึง 34 ปุ่มคำสั่งครับ เลยอยากยุบรวมทำเป็นปุ่มเดียวครับ

Private Sub Command1_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/1', 'ม.3/1') WHERE id_room LIKE 'ม.2/1';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command2_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/2', 'ม.3/2') WHERE id_room LIKE 'ม.2/2';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command3_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/3', 'ม.3/3') WHERE id_room LIKE 'ม.2/3';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command4_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/4', 'ม.3/4') WHERE id_room LIKE 'ม.2/4';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command5_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/5', 'ม.3/5') WHERE id_room LIKE 'ม.2/5';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command6_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/6', 'ม.3/6') WHERE id_room LIKE 'ม.2/6';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub
Private Sub Command7_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/7', 'ม.3/7') WHERE id_room LIKE 'ม.2/7';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command8_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/8', 'ม.3/8') WHERE id_room LIKE 'ม.2/8';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command9_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/9', 'ม.3/9') WHERE id_room LIKE 'ม.2/9';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command10_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/10', 'ม.3/10') WHERE id_room LIKE 'ม.2/10';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command11_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/11', 'ม.3/11') WHERE id_room LIKE 'ม.2/11';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command12_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET class = REPLACE(class, 'ม.2/1', 'ม.3/1') WHERE class LIKE 'ม.2/1';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command13_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET class = REPLACE(class, 'ม.2/2', 'ม.3/2') WHERE class LIKE 'ม.2/2';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command14_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET class = REPLACE(class, 'ม.2/3', 'ม.3/3') WHERE class LIKE 'ม.2/3';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command15_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET class = REPLACE(class, 'ม.2/4', 'ม.3/4') WHERE class LIKE 'ม.2/4';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command16_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET class = REPLACE(class, 'ม.2/5', 'ม.3/5') WHERE class LIKE 'ม.2/5';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command17_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET class = REPLACE(class, 'ม.2/6', 'ม.3/6') WHERE class LIKE 'ม.2/6';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub
Private Sub Command18_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET class = REPLACE(class, 'ม.2/7', 'ม.3/7') WHERE class LIKE 'ม.2/7';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command19_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET class = REPLACE(class, 'ม.2/8', 'ม.3/8') WHERE class LIKE 'ม.2/8';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command20_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET class = REPLACE(class, 'ม.2/9', 'ม.3/9') WHERE class LIKE 'ม.2/9';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command21_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET class = REPLACE(class, 'ม.2/10', 'ม.3/10') WHERE class LIKE 'ม.2/10';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command22_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET class = REPLACE(class, 'ม.2/11', 'ม.3/11') WHERE class LIKE 'ม.2/11';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command23_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET room_1 = REPLACE(room_1, 'มัธยมศึกษาปีที่ 2/1', 'มัธยมศึกษาปีที่ 3/1') WHERE room_1 LIKE 'มัธยมศึกษาปีที่ 2/1';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command24_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET room_1 = REPLACE(room_1, 'มัธยมศึกษาปีที่ 2/2', 'มัธยมศึกษาปีที่ 3/2') WHERE room_1 LIKE 'มัธยมศึกษาปีที่ 2/2';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command25_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET room_1 = REPLACE(room_1, 'มัธยมศึกษาปีที่ 2/3', 'มัธยมศึกษาปีที่ 3/3') WHERE room_1 LIKE 'มัธยมศึกษาปีที่ 2/3';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command26_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET room_1 = REPLACE(room_1, 'มัธยมศึกษาปีที่ 2/4', 'มัธยมศึกษาปีที่ 3/4') WHERE room_1 LIKE 'มัธยมศึกษาปีที่ 2/4';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command27_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET room_1 = REPLACE(room_1, 'มัธยมศึกษาปีที่ 2/5', 'มัธยมศึกษาปีที่ 3/5') WHERE room_1 LIKE 'มัธยมศึกษาปีที่ 2/5';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command28_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET room_1 = REPLACE(room_1, 'มัธยมศึกษาปีที่ 2/6', 'มัธยมศึกษาปีที่ 3/6') WHERE room_1 LIKE 'มัธยมศึกษาปีที่ 2/6';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub
Private Sub Command29_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET room_1 = REPLACE(room_1, 'มัธยมศึกษาปีที่ 2/7', 'มัธยมศึกษาปีที่ 3/7') WHERE room_1 LIKE 'มัธยมศึกษาปีที่ 2/7';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command30_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET room_1 = REPLACE(room_1, 'มัธยมศึกษาปีที่ 2/8', 'มัธยมศึกษาปีที่ 3/8') WHERE room_1 LIKE 'มัธยมศึกษาปีที่ 2/8';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command31_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET room_1 = REPLACE(room_1, 'มัธยมศึกษาปีที่ 2/9', 'มัธยมศึกษาปีที่ 3/9') WHERE room_1 LIKE 'มัธยมศึกษาปีที่ 2/9';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command32_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET room_1 = REPLACE(room_1, 'มัธยมศึกษาปีที่ 2/10', 'มัธยมศึกษาปีที่ 3/10') WHERE room_1 LIKE 'มัธยมศึกษาปีที่ 2/10';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command33_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET room_1 = REPLACE(room_1, 'มัธยมศึกษาปีที่ 2/11', 'มัธยมศึกษาปีที่ 3/11') WHERE room_1 LIKE 'มัธยมศึกษาปีที่ 2/11';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command34_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET yearths = REPLACE(yearths, '2/2558', '3/2559') WHERE yearths LIKE '2/2558';"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
End Sub

Private Sub Command39_Click()
            On Error Resume Next
            DoCmd.Close
            DoCmd.OpenForm "frm_studentnew"
            DoCmd.MoveSize 3000, 400, 15000, 10250
End Sub
7 @R21443
แก้ไขหน่อยครับ

ที่ผมเขียนไป ... class = replace(id_room ... ให้แก้เป็น class = replace(class นะครับ
8 @R21444
Private Sub Command1_Click()
        DoCmd.SetWarnings False
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/1', 'ม.3/1') WHERE id_room LIKE 'ม.2/1';"
        DoCmd.RunSQL strSQL
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/2', 'ม.3/2') WHERE id_room LIKE 'ม.2/2';"
        DoCmd.RunSQL strSQL
        strSQL = "Update student SET id_room = REPLACE(id_room, 'ม.2/3', 'ม.3/3') WHERE id_room LIKE 'ม.2/3';"
        DoCmd.RunSQL strSQL
        strSQL = "Update student SET class = REPLACE(class, 'ม.2/4', 'ม.3/4') WHERE class LIKE 'ม.2/4';"
        DoCmd.RunSQL strSQL
        ...
        DoCmd.SetWarnings True
End Sub
9 @R21445
ขอบคุณอาจารย์สันติสุข และ อาจารย์ O_o ครับ ได้ตามความต้องการแล้วครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 1.8442s