Page 1 of 1

การตรวจเช็คข้อมูลก่อนการบันทึก

Posted: Wed Nov 02, 2011 10:19 pm
by bank9597
:D อาจารย์ครับ ผมได้ทำ AutoValidation ปัญหาที่ตามมาคือ เราต้องเขียนโค๊ดเพื่อตวรจสอบข้อมูลก่อนการบันทึก ว่าข้อมูลดังกล่าวมีอยู่ในฐานข้อมูลจริงหรือไม่

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

Re: การตรวจเช็คข้อมูลก่อนการบันทึก

Posted: Thu Nov 03, 2011 8:48 am
by snasui
:lol: Code ที่ใช้ในการ Update ข้อมูลที่ผมเคยตอบไปสามารถนำมาประยุกต์ใช้ได้เลยครับ

Re: การตรวจเช็คข้อมูลก่อนการบันทึก

Posted: Thu Nov 03, 2011 1:50 pm
by bank9597
:roll: ตรงนี้ขอเวลาหน่อยครับ ผมชักไม่มั่นใจในตัวเอง :mrgreen:

Re: การตรวจเช็คข้อมูลก่อนการบันทึก

Posted: Thu Nov 03, 2011 2:49 pm
by bank9597
:D อาจารย์ครับ รบกวนเรื่องนี้ก่อนน่ะครับ

พอดีว่าต้องการให้ระบบตรวจสอบการคีย์ข้อมูลให้ครบช่องก่อนจะบันทึกได้ ผมมีโค๊ดมาให้อาจารย์ดูครับ

Code: Select all

Sub SaveToDB()
Dim msg As Integer
msg = MsgBox("คุณต้องการบันทึกข้อมูลใช่หรือไม่, vbYesNo)
If msg = vbYes Then
If Range("C17") <> "" Then
    Sheets("Temp").Range("A2:L61") _
        .Resize(Sheets("Temp").Range("M1"), 12).Copy
    Sheets("Database").Range("A" & Rows.Count) _
        .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
    Sheets("PurchaseOrder").Range("B17:J76,H7,D13,C7,I13,H10") _
        .SpecialCells(xlCellTypeConstants).ClearContents
    MsgBox ("บันทึกข้อมูลแล้ว")
Else
    MsgBox ("คุณยังไม่ทำรายการใดๆเลย")
    Range("C17").Activate
End If
End If
End Sub
ผมต้องการบังคับให้เซลล์ H7,D13,C7,I13,H10 ไม่ว่าง ต้องคีย์ข้อมูล ผมต้องใช้โค๊ดอะไรครับ เพราะผมลองทำ Activate และ IF เพิ่มต่อลงไปในโค๊ดข้างบนแล้ว ก็ยังไม่เป็นผลครับ :roll:

Re: การตรวจเช็คข้อมูลก่อนการบันทึก

Posted: Thu Nov 03, 2011 4:10 pm
by snasui
:D ลองใช้ And เข้ามาช่วยครับ ยกตัวอย่างเช่น

Code: Select all

'Other code
If Range("A1") <> "" And Range("A2") <> "" And Range("A3") <> "" And Range("A4") <> "" Then
'Other code

Re: การตรวจเช็คข้อมูลก่อนการบันทึก

Posted: Thu Nov 03, 2011 5:00 pm
by bank9597
:lol: :lol: อาจารย์เป็นนักบอลแน่เลย สับขาหลอกเก่งมากเลย อิอิ

ขอบคุณมากครับ :mrgreen:

Re: การตรวจเช็คข้อมูลก่อนการบันทึก

Posted: Thu Nov 03, 2011 5:03 pm
by snasui
:shock: ผมอ่านเรื่องสับขาหลอกมาสองรอบแล้ว :twisted: ช่วยอ่านคำว่าตัวอย่างเช่น ด้วยทุกครั้งนะครับ จะได้เข้าใจว่ามันเป็นตัวอย่างจริง ๆ การนำไปใช้ต้องปรับให้ตรงกับเซลล์จริง ไม่ได้ต้องการทำให้หลงผิดแต่อย่างใดครับ

Re: การตรวจเช็คข้อมูลก่อนการบันทึก

Posted: Thu Nov 03, 2011 6:17 pm
by bank9597
:D คือผมหมายความว่าอาจารย์มีวิธีเสนอแนะที่ต่างไป แทนที่จะบอกกันตรงๆ แต่จะให้ไปคิดเองแทน เพียงแต่อาจารย์จะให้แนวทางหรือลู่ทางไว้ครับ
ดังนั้น คำว่าสับขาหลอก ผมจึงหมายความเอาเองว่า ต้องการให้เราคิดเองก่อน ให้ใช้ความคิดก่อน ครับ :D
ขออภัยอาจารย์ด้วยครับ ที่ทำให้เข้าใจผิด :D

จากที่อาจารย์แนะนำมา ผมได้ปรับโค๊ดดังนี้ครับ :ard:

Code: Select all

Sub SaveToDB()
Dim msg As Integer
msg = MsgBox("คุณต้องการบันทึกข้อมูลใช่หรือไม่, vbYesNo)
If msg = vbYes Then
If Range("C17") <> "" And Range ("C7") <> "" And Range ("H7") <> () Then
    Sheets("Temp").Range("A2:L61") _
        .Resize(Sheets("Temp").Range("M1"), 12).Copy
    Sheets("Database").Range("A" & Rows.Count) _
        .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
    Sheets("PurchaseOrder").Range("B17:J76,H7,D13,C7,I13,H10") _
        .SpecialCells(xlCellTypeConstants).ClearContents
    MsgBox ("บันทึกข้อมูลแล้ว")
Else
    MsgBox ("คุณยังไม่ทำรายการใดๆเลย")
    Range("C17").Activate
End If
End If
End Sub
อันนี้ที่ยกโค๊ดมา เพื่อให้เพื่อนๆ เข้าใจด้วยครับอาจารย์ และขอบคุณอาจารย์มากครับ อิอิ :D