สอบถามการ Copy Record ค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 1,285   11
URL.หัวข้อ / URL
สอบถามการ Copy Record ค่ะ

มีนอยากถามอาจารย์เรื่องคัดลอก Record ค่ะ
หรือเปล่ายังไม่แน่ใจค่ะ เพราะยังไม่ได้บันทึกข้อมูลเข้าไปในตาราง

คือมีนมี BoxNum และ ArtNum ที่ตาราง TB1
ที่หน้าพอร์มหลักมี TEXT1 เป็นค่าเริ่มต้นของ BoxNum
TEXT2 เป็นค่าสุดท้ายของ BoxNum
ArtNum เก็บค่าสินค้า
มีปุ่ม CMDใช้ควบคุมการทำงาน

เช่นหากมีน ใส่ค่า TEXT1=50 , TEXT2=53 ,ArtNum=AAA

BoxNum   ArtNum
50        AAA
51        AAA
52        AAA
53        AAA

มีนจะเขียนคำสั่งที่ปุ่ม CMD ยังไงค่ะ
ขอบคุณค่ะ

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

1 @R23158
เรียน อาจารย์ทุกท่านค่ะ

     ยังคิดไม่ออกว่าจะเขียนไปแนบไหน
รบกวนอาจารย์ด้วยน่ะค่ะ



ขอบคุณค่ะ
2 @R23160
ก็น่าจะเขียนประมาณนี้นะครับ

    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("TB1", dbOpenDynaset) ' TB1 ชื่อตารางเป้าหมาย
    Dim i As Long
    For i = Me.Text1 To Me.Text2 ' ลูปตามค่า Text1 ถึง Text2
        rs.AddNew
        rs!BoxNum = i
        rs!ArtNum = Me.ArtNum ' เซฟค่า ArtNum ตามค่า Text ArtNum บนฟอร์ม
        rs.Update
    Next
    rs.Close: Set rs = Nothing

ประมาณนี้ครับ ปรับใช้ดูครับ
3 @R23163
ขอบคุณค่ะอาจารย์ TTT

หนูขอลองก่อนน่ะค่ะ เดี๋ยวกลับมาแจ้งค่ะ
4 @R23164
เย่ๆๆๆ ได้แล้วค่ะ อาจารย์ TTT      

น้ำตาจะไหลค่ะ ขอบคุณจริงๆค่ะ อาจารย์


ขอถามอีกนิดค่ะ ถ้าหนูจะเช็คก่อนว่า
ข้อมูล ArtNum ที่ BoxNum ที่จะบันทึกมีซ้ำ
และให้แจ้งเตือนจะ เขียนไว้ตรงไหน ยังไงค่ะ


ขอบคุณอีกครั้งค่ะ
5 @R23165
    If DCount("ArtNum", "TB1", "ArtNum='" & Me.ArtNum & "'") = 0 Then
        Dim rs As DAO.Recordset
        Set rs = CurrentDb.OpenRecordset("TB1", dbOpenDynaset)
        Dim i As Long
        For i = Me.Text1 To Me.Text2
            rs.AddNew
            rs!BoxNum = i
            rs!ArtNum = Me.ArtNum
            rs.Update
        Next
        rs.Close: Set rs = Nothing
    Else
        MsgBox "ข้อมูลนี้ซ้ำกับฐานข้อมูลเดิม", , "แจ้งเตือน"
    End If

6 @R23166
โหเก่งจังค่ะ
ขอบคุณอาจารย์ค่ะ

เที่ยวสงกรานต์ให้สนุกนะค่ะ

ขอบคุณค่ะ
งานหนูส่งก่อนปิด Summer พอดีขอบคุณค่ะ

7 @R23167
อาจารย์ค่ะ
พอลองแล้ว มันบอกซ้ำทุกครั้งเลยค่ะ
แล้วตัว BoxNum
ไม่ต้องเช็คเหลอค่ะ เพราะ ArtNum ส่วนใหญ่จะคงที่ แล้วไปเช็ค BoxNum
ว่ามีซ้ำหรือไม่
เช่นในฐานข้อมูลมี
ArtNum = AAA , BoxNum=01
ArtNum = AAA , BoxNum=02

พอเราเอาเข้าไปใหม่

ArtNum = AAA , BoxNum=02
ArtNum = AAA , BoxNum=03

พอเจอ ArtNum = AAA , BoxNum=02 ก็จะแจ้งเตือนค่ะว่าซ้ำ
เหมือนว่าจะต้องเช็คทั้ง 2 ค่าค่ะ

แต่ Code อาจารย์ไม่มีเช็ค BoxNum หรือเปล่าค่ะ หนูดัดแปลงไม่ค่อยเก่งค่ะ
คงต้องรบกวนอีกครั่้งค่ะ
หนูจะพยามศึกษา SQL และ Funtionค่ะ แต่ตอนนี้คงต้องรบกวนอาจารย์ก่อน

ขอบคุณค่ะ



8 @R23172
เรียนอาจารย์ที่เคารพค่ะ
หนูได้ลองดัดแปลงจากอาจารย์ เอา Code ที่หนูดัดแปลงเลยแล้วกันน่ะค่ะ

Private Sub CMD12_Click()

                                Dim rs As DAO.Recordset
                                Dim i As Long
                                Dim X As Long
                                Set rs = CurrentDb.OpenRecordset("TB_QryDETAIL", dbOpenDynaset)    ' TB1 ชื่อตารางเป้าหมาย
                                
                                If DCount("Bar", "TB_QryDETAIL", "Bar = Me.X") = 0 Then
                                For i = Me.Tx1 To Me.Tx2 ' ลูปตามค่า Tx1 ถึง Tx2
                        rs.AddNew
                                rs!BOX_NUM = i
                                rs!PART_NUM = Me.PART_NUM    ' เซฟค่า PART_NUM ตามค่า Tx3 บนฟอร์ม
                                rs!Bar = Me.PART_NUM & " " & Format([i], "0000")        ' เซฟค่า BAR เอามาจาก PART_NUM+ค่าว่าง+ค่า i ที่Box_NUM
                                X = rs!Bar
                                 rs.Update
                                Next
                                rs.Close: Set rs = Nothing
                             Else
                               MsgBox "ข้อมูลนี้ซ้ำกับฐานข้อมูลเดิม", , "แจ้งเตือน"
                               Exit Sub
                               End If
                    
End Sub


คือหนู่ไม่รู้จะเช็ค 2 พิวส์พร้อมกันยังไง เลยเอามารวมกันก่อนที่
rs!Bar = Me.PART_NUM & " " & Format([i], "0000")

แล้วเก็บค่าที่ X = rs!Bar
แล้วค่อยมาเช็คว่าซ้ำ แต่ก็ยังไม่ได้ค่ะ ช่วยรบกวนดูให้หนูหน่อยค่ะ
If DCount("Bar", "TB_QryDETAIL", "Bar = Me.X") = 0 Then
ว่าจะแก้ยังไงค่ะ มันก็ยังบอกว่าซ้ำทุกครั้ง ไม่ว่าข้อมูลจริงจะไม่ซ้ำก็ตาม
9 @R23173
ลองอย่างนี้ดูครับ

    If IsNumeric(Me.Text1) And IsNumeric(Me.Text2) Then
        If Me.Text1 > Me.Text2 Then
            MsgBox "ค่า Text1 ห้ามน้อยกว่า Text2", , "แจ้งเตือน"
        Else
            Dim rs As DAO.Recordset
            Set rs = CurrentDb.OpenRecordset("TB1", dbOpenDynaset)
            Dim i As Long
            For i = Me.Text1 To Me.Text2
               If DCount("BoxNum", "TB1", "ArtNum='" & Me.ArtNum & "' AND BoxNum=" & i) = 0 Then
                    rs.AddNew
                    rs!BoxNum = i
                    rs!ArtNum = Me.ArtNum
                    rs.Update
               Else
                    MsgBox Me.ArtNum & " " & i & " ซ้ำกับฐานข้อมูลเดิม ", , "แจ้งเตือน"
               End If
            Next
            rs.Close: Set rs = Nothing
        End If
    Else
        MsgBox "ค่า Text1 และ Text2 ต้องเป็นตัวเลขเท่านั้น", , "แจ้งเตือน"
    End If
10 @R23175
พอดีเมื่อวานลองกลับไปทำแล้ว
ผลปรากฏว่า
ได้แล้วค่ะ ดัดแปลงตามอาจารตอบล่าสุดเลย


ขอบคุณอาจารย์ TT มากค่ะ


11 @R23176
แก้ไขนิดนะครับ ตรงบรรทัดนี้
If Me.Text1 > Me.Text2 Then

เปลี่ยนเป็นอย่างนี้ครับ เพื่อให้เป็นเป็นจำนวนตัวเลข ไม่งั้นจะเทียบค่าผิดครับ
If Cint(Me.Text1) > Cint(Me.Text2) Then
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3291s