รบกวนด้วยครับ เขียน Code VBA เพื่อบันทึกข้อมูลจากฟ
กระทู้เก่าบอร์ด อ.Yeadram

 3,862   13
URL.หัวข้อ / URL
รบกวนด้วยครับ เขียน Code VBA เพื่อบันทึกข้อมูลจากฟ

ผมต้องการให้ผู้ใช้งานกรอกข้อมูลผ่านฟอร์ม และทำการบันทึกข้อมูล ผมจึงเขียน Code ดังนี้คับ

Option Compare Database
    Dim DB As Database
    Dim rsSe As Recordset

Private Sub CmdRec_Click()
    Dim sqlSave As String
        Set DB = CurrentDb
            sqlSave = "SELECT*FROM[OderTbl]"
               Set rsSe = DB.OpenRecordset(sqlSave)
    With rsSe
            .AddNew
                    !PrdBarcode = [Text1]
                    !PrdDate = [Text2]
                    !PrdType = [Text3]
                    !CdCus = [Text4]
                    !CdTruck = [Text5]
            .Update
        End With
End Sub

แต่เมื่อผมลองทดสอบกดปุ่มบันทึกข้อมูล (CmdRec) พบว่าข้อมูลที่ผมพิมพ์ลงในฟอร์ม ไม่ถูกบันทึกลงตาราง

ผมอยากทราบว่าน่าจะเกิดจากสาเหตุใดได้บ้างครับ

ขอบคุณครับ

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

1 @R15654
ที่เขียนมาดูแล้วก็น่าจะใช้ได้นะครับ หากผิดก็คงเป็นเรื่องของชื่อตาราง ชื่อฟิลด์ แต่เรื่องการประกาศตัวแปร ไม่ต้องเขียนในส่วน Declarations นะครับ เอาเข้ามาใน ส่วนของ Procedure ปกติก็พอแล้ว เขียนแค่นี้พอครับ

Private Sub CmdRec_Click()
    Dim rsSe As Recordset
    Set rsSe = CurrentDb.OpenRecordset("OderTbl")
    With rsSe
            .AddNew
                    !PrdBarcode = [Text1]
                    !PrdDate = [Text2]
                    !PrdType = [Text3]
                    !CdCus = [Text4]
                    !CdTruck = [Text5]
            .Update
        End With
    rsSe.Close: Set rsSe = Nothing
End If
2 @R15656
อาจารย์ TTT ปกติผมจะใช้ Query Append อะไรดีกว่ากันครับผม
3 @R15659
@ คุณUn
ผมคงไม่กล้าบอกว่าอะไรดีกว่านะครับ แต่หากในเรื่องของ Inset Into จะดีในแง่ของการทำแบบมีเงื่อนไข ในเรคคอร์ดเยอะๆ ซึ่งหากใช้แบบ Recordset มันต้องใช้วนลูป ซึ่งไม่ดีครับ ช้ามากเมื่อเทียบกับ SQL
แต่หากเป็นลักษณะแบบนี้ คือเพิ่มทีละเรคคอร์ขณะผู้ใช้ใส่ข้อมูลเอง ไม่ต้องใช้เงื่อนไขใดๆ ผมว่าอะไรก็ได้ครับ แล้วแต่ความถนัด เหมือนคำที่อดีตท่านผู้นำจีน เติ้งเสี่ยวผิง กล่าวไว้ว่า ไม่ว่าจะเป็นแมวสีอะไรขอให้จับหนูได้ก็พอ
4 @R15662
แต่ในหลายๆ กรณี จากข้อมูลดิบที่เรามี เราอาจไม่สามารถสร้างเงื่อนไขการใช้คำสั่ง SQL ตามที่เราต้องการได้ เราก็อาจหันมาใช้ Recordset ทำแทน เพื่อแก้ปัญหาได้ นี่ทำให้ MS Access มีความหลากหลายในการจัดการฐานข้อมูลครับ
5 @R15663
ขอบคุณอาจารย์ครับ ผมเขียนโคตแบบนี้ไม่เป็น ใช้ copy แล้วลองผิดลองถูกมานาน อันนี้ก็เป็นตัวอย่าง ที่ดีแบบนึงให้ Copy ^^
6 @R15664
ขอบคุณครับอาจารย์ TTT แต่ผมลองทำแล้วก็ยังไม่ได้อะครับ ขึ้น Error ตามภาพที่แนบมานะครับ รบกวนอาจารย์ด้วยนะครับ

7 @R15665
แล้วก็ขึ้นภาพนี้ด้วยครับ
8 @R15666
ไม่แน่ใจนะครับ แต่ลองเปลี่ยนบรรทัดนี้เป็นพาธเต็มดู
Dim rsSe As Recordset
เป็น
Dim rsSe As DAO.Recordset
9 @R15667
ลองเปลี่ยนแล้วอะครับ แต่มันก็ยังขึ้น Error ตามภาพเหมือนเดิมเลยอะครับ เศร้า(T T ) อาจารย์ TTT ครับถ้าผมจะรบกวนติดต่ออาจารย์โดยตรงผ่าน E-mail ของอาจารย์เลยไม่ทราบอาจารย์สะดวกมั๊ยครับ คือผมต้องใช้ โปรแกรม Access นี้เป็นโปรเจคจบ ป.โท อะครับ โดยส่วนตัวแล้วผมมือใหม่มาก อีกทั้งตอนนี้ผมก็เหลือเวลาไม่มากแล้วด้วยครับ ถ้าได้รบกวนอาจารย์ทักผมตาม E-mail นี้เลยนะคับ - - - > natnawat.k@gmail.com ขอบคุณมากครับ
10 @R15668
มีอีกเรื่องนะครับอาจารย์ TTT ตอนผมไปเลือก DAO 3.6 จาก Reference โปรแกรมก็ฟ้องตามภาพที่แนบนะครับ
11 @R15669
- รู้สึกตั้งแต่ 2007 ขึ้นไป (คือผมใช้ 2010 เลย ไม่ได้ใช้ 2007) ไม่ต้องเพิ่ม DAO 3.6 แล้วนะครับ มันมีอยู่ในไลบารี่ Micorosoft Access xxx Object Library เลยครับ และใหม่กว่าด้วย

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

- เรื่อง E-mail ผมไม่สะดวกนะครับ ไว้ติดอะไรถามในนี้มีอาจารย์เก่งๆ อีกหลายท่าน ส่วนตัวผมยังไม่ถึงขั้นนะครับ และ (บ่งตง ขนาดงานผมเองผมยังขี้เกียจดูเลยอ่ะครับ) ยังไงต้องขอโทษด้วย ตัวผมเองก็เริ่มจาก 0 นะครับ ไม่ได้เรียนมาทางนี้ จบทางด้านอิเล็คทรอนิกส์ เริ่มจากการอ่านหนังสือ ลองทำ ถามในกระทู้ พยายามเข้าใจภาพรวมมันให้ได้ ลองดูครับ สุดท้ายเราจะภูมิใจกับความสามารถที่ตัวเราเองมี
12 @R15670
ขอบคุณมากครับอาจารย์ TTT ผมจะลองพยายามดูครับ
13 @R15671
อาจารย์ TTT พอจะทราบคำสั่ง ที่บังคับ หรือ แจ้งเตือน ผู้ใช้ในกรณีที่ผู้ใช้พิมพ์ตัวเลขข้อมูลซ้ำ ในฟิล ที่เป็น Primary มั๊ยครับ โปรแกรมแจ้งเตือนผมประมาณนั่นอะคับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2991s