แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - สันติสุข

หน้า: 1 2 [3] 4
37
ลองนึกถึงใบเสร็จเวลาเราไปซื้อของในห้าง ที่หัวกระดาษเขาจะพิมพ์ว่าแคชเชียร์คือใคร และเราซึ่งเป็นลูกค้าเป็นใคร ส่วนกลางกระดาษก็จะแสดงรายละเอียดสินค้าว่าเราซื้ออะไรบ้าง ซึ่งรองรับได้หลายๆรายการ  ถ้าคุณต้องการลักษณะการเก็บแบบนี้ แปลว่านอกจากเทเบิล Loan ซึ่งเปรียบได้กับหัวกระดาษแล้ว ก็จะต้องมีเทเบิล LoanedItems ซึ่งเป็นรายละเอียดของที่ยืมเพิ่มเติมอีกครับ และอย่างน้อยก็จะมีฟิลด์ Loan_No (PK), Asset_ID(PK) ที่ย้ายมาจากเทเบิล Loan เอามาใส่ไว้ที่นี่แทน และจำนวนที่ยืมด้วยครับ และเราจะสร้างความสัมพันธ์ (Table Relationships) ระหว่างทั้ง 2 เทเบิลไว้ด้วย   (ส่วนนี้หาวิธีทำใน Youtube ด้วยคำว่า  microsoft access table relationships)

สำหรับการบันทึก ก็สร้างฟอร์มสำหรับเทเบิล Loan และ LoanedItems แล้วเราจะเอาฟอร์มของ LoanedItems มาใส่ในฟอร์มของ Loan อีกที (เราจะเรียกฟอร์มของ Loan ว่าเป็น main form และ LoanedItems ว่าเป็น sub form) เป็นการเชื่อม 2 ฟอร์มเข้าด้วยกันด้วย Loan_No ทีนี้ก็จะได้หน้าฟอร์มที่เหมือนมีหัวกระดาษและรายละเอียดรายการยืม/คืนอยู่ภายใน  (ส่วนนี้หาวิธีทำใน Youtube ด้วยคำว่า  microsoft access subform)

และเพื่อให้การแสดงดูเข้าใจมากขึ้น เราจะกำหนดคุณสมบัติต่างๆในแทป Lookup ของฟิลด์ Employee_ID, Customer_ID, Asset_ID ให้เชื่อมโยงไปยังเทเบิล Employees, Customers และ Asset เพื่อที่ว่าระบบจะดึงเอา Employees_Name, Customer_Name และ Asset Description มาแสดงแทนที่จะแสดงเป็น ID ซึ่งอาจไม่สื่อความหมายให้ผู้ใช้ได้เข้าใจอย่างชัดเจนสักเท่าไหร่ ดังนั้นเมื่อถึงเวลาสร้างคิวรี่ที่มีเทเบิล Loan และ LoanedItems เชื่อมระหว่างกัน และเลือกฟิลด์ Employee_ID, Customer_ID, Asset_ID มาแสดง   Access ก็จะดึงเอา _Name และ _Description ของค่าเหล่านี้มาแสดงให้อย่างอัตโนมัติเช่นกัน (ส่วนนี้หาวิธีทำใน Youtube ด้วยคำว่า microsoft access table lookup field) แต่ถ้าหากเราไม่ได้สร้าง Lookup เอาไว้ในฟิลด์ข้างบน ตอนสร้างคิวรี่ เราก็ต้องดึงเอาเทเบิล Employees, Customers และ Asset เข้ามาในคิวรี่ด้วย แล้วสร้างความสัมพันธ์ในคิวรี่เองครับ

ผมอยากทราบครับว่า Loan_No ที่เป็น Primary Key นั้นต้องอยู่ใน LoanedItems หรือว่า Loan ครับ เพราะอีก1ตัวที่เหลือก็จะเป็น FK ถูกไหมครับถ้าผมเข้าในไม่ผิดก็น่าจะเป็น Loan_No ที่อยู๋ใน Table Loan ใช่ไหมครับอาจารย์ แล้วก็หลังจากที่ผมสร้างฟอร์ม จาก Query แล้วเนี้ยมันมีปัญหาคือไม่สามารถเลือกค่าจาก Combobox ได้เกิดจากอะไรครับอาจารย์
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

38
คือประมาณว่าท่านจะทำระบบกึ่งออโต้ลำดับที่ใช้ใหมครับ นั่นคือ
ลำดับที่อันแรกท่านจะใส่เอง สมมุติใส่ 11156 พอรายการต่อๆมาให้มัน +1 ออโต้ไปเรื่อยๆเลยจนครบ 25รายการโดยที่ท่านไม่ต้องมานั่งใส่เลขเองใช้หรือไม่ครับ :question:(25รายการถ้านับรวม 11156ด้วยจะจบที่ 11180นะ)
แล้วเมื่อมันครบ25แล้วล่ะ อยากให้มัน... :question:
แล้วแนวการใส่เลขคุณเป็นอย่างไร  :question:
คือประมาณว่า
ชุดที่1 เริ่ม 11156-11180
ชุดที่2 เริ่ม 22221-22245
ชุดที่3 เริ่ม 20001-20025 < ลำดับแทนที่ดันไปแทรกกลางชุด1-2 หรือไม่
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

39
ความงงกับคำถามระดับ 5 ตามมาตราริกเตอร์
 

สมมุติผมใส่ตัวเลข 11156 มันก็จะเพิ่มขึ้นที่ละหนึ่งค่า 11157 11158 11159 ... 11181 ซึ่งจะสิ้นสุดที่ค่าที่ 25 แล้วหลังจากนั้น ก็จะใส่ตัวเลขใหม่คือ 22221 แล้วก็ให้มันเพิ่มที่ละ 1 ค่า จนสิ้นสุดค่า ที่ 25 ตามข้างต้นครับ แล้วก็ใส่ตัวเลขค่าใหม่ วนแบบนี้ซ้ำไปมาอะครับ  ขอโทษด้วยครับ ที่เขียนไม่รู้เรื่อง
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

40
ความงงกับคำถามระดับ 5 ตามมาตราริกเตอร์
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

41
ขออนุญาตแชร์ประสบการณ์นะคะ

โดยปกติโปรแกรมที่ทำจาก 2003 ก็สามารถนำไปเปิดใช้กับ2016 ได้อยู่แล้ว
แต่จากกรณีคำถามคือต้องการแปลงไปเป็น 2016 ก็สามารถทำได้ดังนี้ค่ะ

-เอาโปรแกรมที่ต้องการแปลง ไปเปิดใน Access2016
-ไปที่เมนู แฟ้ม ให้เลือกไปที่ "บันทึกฐานข้อมูลเป็น" หรือ "บันทึกและประกาศ"
-เลือกอ็อปชั่นที่ต้องการแล้วก็ตั้งชื่อใหม่ เสร็จแล้วค่ะ ลองดูนะคะ
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

42
ขอตอบแบบนี้นะครับ (ท่านอื่นสามารถเสริมได้นะครับ เผื่อผมผิดพลาด ตกหล่นตรงไหน)

ก่อนอื่นต้องแยกกันอย่างนี้ก่อนนะครับ
สำหรับ Object นั้นเป็นเรื่องของเทคโนโลยีเชิงวัตถุ คือมองทุกสิ่งอย่างให้เป็นวัตถุไปหมด โดยเจ้าวัตถุที่เราเห็นบนหน้าจอ (หรือที่ไม่เห็นบนหน้าจอ) ก็ต้องมีคุณสมบัติตามกฏของ Object Oriented Programming เช่น Inheritance และบลาๆๆ 3-4 ข้อจำไม่ได้ แต่ที่จำได้คือ Access มีแต่ไม่ครบทุกข้อ แต่ก็หยวนๆ วพอกล่อมแกล้มว่าเป็น OO ได้ (อันนี้บ่น)

สรุปคือ Object คือสิ่งที่เรามองเห็นได้บนหน้าจอ และสิ่งที่เรามองไม่เห็นเพราะทำงานอยู่เบื้องหลัง คือให้มองว่ามันเหมือนวัตถุชิ้นนึง

คราวนี้มาเรื่องของ Control
Control น่ะ ก็เป็นออบเจ็กต์แบบนึงที่ทำงานอยู่บนฟอร์มและรีพอร์ต แต่คราวนี้ถ้าเรียก ComboBox TextBox ว่าออบเจ็กต์อาจสร้างความสับสนได้ (อันนี้ผมคิดเอง) เขาก็เลยเปลี่ยนมาเรียกคอนโทรลแทน เพราะหน้าที่หลักคือใช้ควบคุมการทำงานต่างๆ ทั้งในฟอร์มและรีพอร์ต
เส้นตรงที่ลากใส่ในฟอร์มก็เรียกคอนโทรลนะ ทั้งที่ไม่เคยใช้ควบคุมอะไรเลยซักอย่าง (หรือใครเคยใช้ก็เล่าสู่กันหน่อย)

สรุป Control ก็คือ Object แบบนึง ที่เราใส่ไว้ในฟอร์มหรือรีพอร์ต

โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

43
ไม่เข้าใจ
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

44
อ่านแล้ว งง คำถาม แต่ งง ไปอีก ทำไมอาจารย์เก่งจัง
เดาได้ด้วยว่าเค้าถามอะไร
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

45
สนับสนุนการบ่นอีกเสียงครับ

บางคำถามอ่านแล้วได้แต่ถอนใจ
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

46
กดปุ่ม [CTRL] + ['] จะเป็นการเรียกข้อมูลก่อนหน้ามาใส่ (ไม่รู้ว่าช่วยแก้ปัญหาได้ป่าวนะครับ)
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

47
มันคือ Arrays หรือเปล่าครับหรือ
https://docs.microsoft.com/en-us/office/vba/language/concepts/getting-started/using-arrays
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

48
x \ y = จำนวนเต็มของ x / y
x Mod y = เศษเหลือจาก x / y เป็นจำนวนเต็ม

ตัวอย่างการนำไปใช้ (1วัน = 24ชั่วโมง = 1440นาที)

Text1 = 1500 นาที

Text2 = [Text1]\1440          = 1 วัน
Text3 = ([Text1]\60) Mod 24    = 1 ชั่วโมง

หมายเหตุ จากตัวอย่างจะเป็นการปัดเศษนาทีทิ้งทั้งหมดครับ (59นาที=0ชม.)
มาแถม [Text1] Mod 60 = เศษนาทีที่เหลือ
แถม2 Text2 =[Text1]\1440 & " วัน " & ([Text1]\60) Mod 24 & " ชั่วโมง" = 1 วัน 1 ชั่วโมง
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

49
โดยทั่วไป Ms Access จะใช้โค้ดสีที่ต่างจากพวก > Hex / RGB / MS Access Color Values
แต่สามารถกำหนดใช้เป็น RGB ได้เช่น Me.TextBox.BackColor = RGB(255, 255, 255) เป็นต้น

ดังนั้นการที่จะนำโค้ดสีที่เป็น Hex มาใช้ได้ก็ต้องแปลงให้กลายไปเป็น RGB ก่อนด้วย Module ตัวอย่างของท่านปิ่นณรงค์
หรือ > https://stackoverflow.com/questions/40588470/setting-access-colour-codes-in-vba/50523021#50523021
โค๊ด: [Select]
Public Function Color_Hex_To_Long(strColor As String) As Long
    Dim iRed As Integer
    Dim iGreen As Integer
    Dim iBlue As Integer

    strColor = Replace(strColor, "#", "")
    strColor = Right("000000" & strColor, 6)
    iBlue = Val("&H" & Mid(strColor, 1, 2))
    iGreen = Val("&H" & Mid(strColor, 3, 2))
    iRed = Val("&H" & Mid(strColor, 5, 2))

    Color_Hex_To_Long = RGB(iRed, iGreen, iBlue)
End Function

หรือ > https://stackoverflow.com/questions/51292169/how-to-set-background-of-a-form-to-a-hexidecimal-color-in-ms-access-vba
ซึ่งวิธีนี้สามารถแปลงออกมาได้เลยไม่ต้องใช้โมดูล ผมจึงขอนำไฟล์ตัวอย่างของท่านปิ่นณรงค์มาทดสอบได้ผลตามไฟล์ตัวอย่างครับ
โค๊ด: [Select]
Me.Detail.BackColor = RGB("&H" & Left$(s, 2), _
                          "&H" & Mid$(s, 3, 2), _
                          "&H" & Right$(s, 2))
โค๊ด: [Select]
Me.Detail.BackColor = "&H" & Right$(s, 2) & Mid$(s, 3, 2) & Left$(s, 2)
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

50
ขอเพิ่มเติมอีกวิธีนะครับ


ที่ Module ใส่โค้ดนี้เข้าไป
โค๊ด: [Select]
Function MyHexColor(ByVal StrHex)
 
    If Len(StrHex) = 7 Then StrHex = Mid(StrHex, 2, 6)
    If Len(StrHex) = 6 Then

        num_array = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f")
        char1 = LCase(Mid(StrHex, 1, 1))
        char2 = LCase(Mid(StrHex, 2, 1))
        char3 = LCase(Mid(StrHex, 3, 1))
        char4 = LCase(Mid(StrHex, 4, 1))
        char5 = LCase(Mid(StrHex, 5, 1))
        char6 = LCase(Mid(StrHex, 6, 1))
        For i = 0 To 15
            If (char1 = num_array(i)) Then position1 = i
            If (char2 = num_array(i)) Then position2 = i
            If (char3 = num_array(i)) Then position3 = i
            If (char4 = num_array(i)) Then position4 = i
            If (char5 = num_array(i)) Then position5 = i
            If (char6 = num_array(i)) Then position6 = i
        Next
        If IsEmpty(position1) Or IsEmpty(position2) Or IsEmpty(position3) Or IsEmpty(position4) Or IsEmpty(position5) Or IsEmpty(position6) Then
            MyHexColor = -1
        Else
            MyHexColor = RGB(position1 * 16 + position2, position3 * 16 + position4, position5 * 16 + position6)
        End If
    Else
        MyHexColor = -1
    End If
End Function

ที่ฟอร์มกำหนดค่า ในส่วนของ Detail
โค๊ด: [Select]
Private Sub รายละเอียด_Paint()
If Not IsNull(Me.HEX) Then
    Me.COLOR.BackColor = MyHexColor(HEX)
    Else
    Me.COLOR.BackColor = MyHexColor("#FFFFFF")
 End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

51
ลองเล่นๆ การส่ง line notify ส่งข้อความ รูปภาพด้วย VBA ไปเจอบทความดีดี ที่นี่เลยเอามาลองเล่นครับ

ขอขอบคุณแหล่งที่มา :
http://white5168.blogspot.com/2017/01/line-notify-6-line-notify.html#.XHvsT4gzbIV
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

52
ด้วยตัว MS Access ไม่น่าจะอ่าน บัตรประชาชน แบบ Smart card ได้โดยตรง  ต้องใช้โปรแกรมอื่น อ่านก่อน อาทิของ  Siam-ID (อย่างที่ คุณ TTT บอกหรือ Awara Thai Smart card reader ซึ่ง พัฒนาโดยคนไทย และให้ใช้ ฟรี  โดยเฉพาะของ  Siam-ID แนะนำเพิ่มเติมได้ และพัฒนาให้ด้วย ครับ   เมื่อใช้โปรแกรมดังกล่าวแล้ว จะได้ ข้อมูลมา เป็น Text file หรือ XML File และ ไฟล์ รูปภาพ จากบัตรประชาชน  แล้วจึง นำข้อมูลที่ได้จากเครื่องอ่านบัตรสมาร์ทการ์ด เข้ามาในฐานข้อมูล MS ACCESS อีกครั้งนึง  แล้วที่นี้เราก็มาปรับเปลี่ยนหรือพัฒนาเอาเองตามใจชอบ.....ผมไฟล์ที่ผมเขียนใช้งานอยู่ครับ (MS Access+Awara Thai Smart card reader) และนำเข้าข้อมูล XML ที่อ่านได้จาก Awara Thai Smart card reader  เข้ามาใน ฐาน Access ครับ  ถ้าต้องการได้ไฟล์ตัวอย่างแจ้ง E-Mail  ไว้ครับ เดี๋ยวผมส่งไปให้ลองศึกษาดูครับ....
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

53
แนะนำให้โหลดโปรแกรม Siam-ID มาติดตั้งนะครับ เป็นฟรีแวร์โปรแกรมในตำนานโปรแกรมเดียวของไทยที่ฟรี และใช้โหมด Fill From จากนั้นก็สร้างฟิลด์บนตาราง MS Access ให้ตรงกับที่ตั้งค่าไว้ในโปรแกรม Siam-ID
การใช้งานคือเมื่อเปิดโปรแกรม Siam-ID ในโหมด Fill from แล้ว เราก็เปิดใช้งานโปรแกรมอะไรก็ได้ในที่นี่ก็คือ MS Access จากนั้นก็คลิ๊กเคอร์เซอร์ไปที่ฟิลด์แรกที่เราต้องการบันทึกรอไว้ก่อน แล้วเราก็เสียบบัตรประชาชนเข้าเครื่องอ่านบัตร โปรแกรม Siam-ID ก็จะทำการ SendKey เหมือนกับการใส่คำในคีย์บอร์ดทีละหัวข้อลงไปในฟิลด์ของ MS Access ที่เราโฟกัสไว้ทีละฟิลด์ไปเรื่อยๆ จนครบ ส่วนรูปให้สร้างฟิลด์ใน MS Access เป็น OLE Object มันจะรองรับไฟล์รูปบัตรลงในฟิลด์ได้เลยครับ
ปล. หากไม่เข้าใจอยากลองก่อน ให้ลองกับ MS Excel ก่อนได้ครับ โดยเปิดโปรแกรม MS Excel ขึ้นมา แล้วเสียบบัตรอ่านดู ก็จะเห็นการทำงานของโปรแกรม Siam-ID ในโหมด Fill From เองครับ
หรืออีกวิธีอันนี้จะยากหน่อยคือ ในโปรแกรม Siam-ID เมื่อเราทำการอ่านบัตร โปรแกรมจะสร้างไฟล์ที่เป็น Text ไฟล์ และ รูปที่เป็น Jpg ไว้ในโฟลเดอร์ Siam-ID ที่ Document เราสามารถเขียนโค้ดให้ MS Access อ่าน Text ไฟล์นั้น แล้วบันทึกลงบนฟิลด์ได้ แต่จะมีปัญหาที่ผมเคยเจออย่างนึงคือมันจะอ่านภาษาไทยไม่ได้ อันนี้ต้องใช้วิธีแก้กันหลายขั้นตอนอยู่ ส่วนรูปก็เซฟจากโฟลเดอร์ Document\Siam-ID มาใช้งานได้เลย เป็นอีกทางเลือกลองไปปรับใช้งานดูครับ เป็นไอเดีย
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

54
วิเคราะห์เหตุการณ์โจรไซเบอร์ปล้นเงิน 10 ล้านบาทด้วยมัลแวร์

https://www.catcyfence.com/it-security/article/analysis-of-cyber-crooks-use-malware-robbing-10-mb/?fbclid=IwAR3ykbcbvMGVDz73pVAARPoOdvGwO5X7yzAFEBN_EzrR8bZm6HE6tXvyNEI
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

หน้า: 1 2 [3] 4