แสดงกระทู้

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 - prajak

หน้า: 1 2 3 4 [5] 6 7 8 9
73
เรียกชื่อก็พอคับ ผมไม่ใช่อาจารย์นะครับ ศึกษาอยู่เหมือนกันพยายามทดลองทำก่อนถ้าได้ผลก็แชร์ต่อ  :cool: :cool:
ถ้าผมแนะนำผิดพลาดไป อาจารย์ทุกท่าน ช่วยแนะนำเพิ่มเติมด้วยนะครับ อาจารย์สันติสุข  อาจารย์TTT อาจารย์ Oddywriter อาจารย์ท่านอืนๆ  :miao:
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

74
ถ้า Filter  Style แล้ว Style จาก Textbox ไหนมี Style นี้อยู่ก็ให้แสดง PO ทุกรายการที่มีแบบนั้นใช่ไหมครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

75
โค๊ด: [Select]
Private Sub save_Click()
 Dim rstObj As DAO.Recordset, msgStr As String
 Me.Dirty = False
    Set rstObj = CurrentDb.OpenRecordset("FindDuplicate")
    Do While Not rstObj.EOF
        msgStr = msgStr & rstObj.Fields("ID") & vbCrLf
        rstObj.MoveNext
    Loop
    If IsNull(msgStr) Or msgStr = "" Then
    Me.EDTDATE = Now
    DoCmd.RunCommand acCmdSave
    Else
    Call MsgBox(msgStr, , "ตรวจพบ ID ซ้ำกัน !!!!")
    End If
     Set rstObj = Nothing
End Sub
ที่ปุ่ม Save แก้เป็นแบบนี้ครับ
คือถ้าเจอ ID ไหนซ้ำกันก็จะแจ้งเดือน ปกติ ถ้าเพิ่ง Copy มาแล้ว Save แล้วมันจะแจ้งว่า ID ไหน ซ้ำกับ ID ไหน พอเราแก้ไขกดเซฟไปก็จะสามารถเซฟได้แล้วครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

76
ปกติ เมื่อเราลบข้อมูลจาก Form แล้ว สั่งให้โปรแกรมไปยัง Record ท้ายสุดก็ได้คับ
พอดีคุณสร้าง Macro มาผมเลยเพิ่มส่วนที่ต้องใส่เพิ่มดังนี้ครับ


เพิ่มเติมถ้าคุณต้องการให้แสดงวันที่และเวลาตรงปุ่ม Save แก้จาก Date เป็น now ดังนี้
โค๊ด: [Select]
Private Sub save_Click()
Me.EDTDATE = now
DoCmd.RunCommand acCmdSave
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

77
เช็ค4ฟิวด์เหมือนกันแสดงว่าซ้ำกันได้ใช่ไหมครับ งั้นผมขอกำหนด4ฟิวด์ดังนี้นะครับ
1 PD#
2 Style
3.Description
4.QTY PCS

รบกวนด้วยนะครับ
หากเห็นตัวอย่างคำสั่ง ผมอาจนำมาปรับใช้ เผื่อ4ฟิวด์นี้ยังแก้ปัญหาไม่ได้

ผมเคยทำโปรแกรมตัวนึงเป็นกรณี Copy ข้อมูลมาแก้ไขแบบของคุณ Prajak นี้ละครับ แต่ผมจะมี Field เพิ่มมาอีก Filed นึงไว้สำหรับเก็บค่าการ แก้ไขข้อมูล โดยกำหนดให้เมื่อ Copy ข้อมูลมา เราจะไม่ดึงค่า จาก Field Edit มาด้วย มันจึงเป็นค่าว่างอยู่โดยค่าว่างนี้จะ อัพเดทข้อมูลก็ต่อเมื่อกดปุ่ม Edit แล้ว โดยปุ่ม Editจะจัดเก็บวันที่ปัจจุบันใน Field Edit เมื่อเราต้องการ Copy ข้อมูลต่อไป หรือทำขั้นตอนต่อไป (กรณี Copy มาแล้วลืม Edit) ก็ให้คำสั่งเช็คค่าว่างของ Field Edit  ตรวจสอบ ถ้าว่างอยู่ก็มีการแจ้งเตือนขึ้นมาทันที ประมาณนี้ครับ ส่วนตัวอย่างเดี่ยวลองทำให้ดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

78
ผมลองปรับปรุงให้ ใหม่เป็นโค้ด แต่คงไม่ยากมาก ลองดูว่าสามารถใช้งานได้หรือไม่นะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

79
ข้อมูล ที่ Copy มาแก้ไข ส่วนที่แก้ไขส่วนใหญ่มีตรงไหนบ้างครับ แล้วมี Field ไหนที่ต้องไม่ซ้ำกันบ้างครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

80


ผมสมมุติ Combobox ชื่อ Ohms และ textbox ของ Accept/Reject​ ชื่อ AandR
 
โค๊ด: [Select]
Private Sub Ohms_AfterUpdate()
   Dim lngRed As Long, lngGreen As Long
   
        lngRed = RGB(255, 0, 0)
        lngGreen = RGB(50, 205, 50)
     
       
If Me.Ohms >= "10E04" And Me.Ohms <= "10E09" Then
Me.AandR = "Accept"
AandR.BackColor = lngGreen
ElseIf Me.Ohms >= "10E10" And Me.Ohms <= "10E12" Then
Me.AandR = "Reject"
AandR.BackColor = lngRed
Else
Me.AandR.BackColor = Ohms.BackColor
Me.AandR = Null
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

81
กรณีออเดอร์ 1 ใบมีได้หลายรายการ  ก็นึกถึงรูปแบบใบสั่งซื้อทั่วๆไปนี่แหล่ะครับ  รายการแรกในใบออเดอร์ก็มีค่าของเลขบรรทัดเป็น 1  รายการที่สองก็เป็น 2  อย่างนี้ไปเรื่อยๆ  ส่วน Primary Key ก็ประกอบด้วยสองฟิลด์ ฟิลด์เลขใบออเดอร์และฟิลด์เลขบรรทัดครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

82
ปกติในระบบงาน ทุกเทเบิลจะมีการกำหนดฟิลด์ที่เป็น Primary Key เอาไว้ ระบบฐานข้อมูลจะไม่ยอมให้ค่าในฟิลด์เหล่านี้ซ้ำกัน  Primary Key อาจประกอบไปด้วยหลายฟิลด์ก็ได้  แต่ถ้ามี Primary Key อยู่แล้ว ก็กำหนด Key อื่นๆเพิมเติมก็ได้ และกำหนด Unique property ของ Key นั้นเป็น No หรือ Yes เพื่อให้ค่าในฟิลด์ซ้ำกันหรือไม่ซ้ำกันเหมือนคุณสมบัติของ Primary Key ก็ได้  (Key เหล่านี้รวมๆกันจะอยู่ในหมวดที่ Access เรียกว่า Indexes) 

ในกรณีของออเดอร์สินค้า หมายเลขออเดอร์จะไม่ซ้ำกันอยู่แล้ว ถ้าธุรกิจคุณเป็นแบบออเดอร์เดียวมีแค่รายการเดียว ก็กำหนดฟิลด์หมายเลขออเดอร์เป็น Primary Key ไปได้เลย ดังนั้นเมื่อก็อปปี้มาแล้ว ถ้าไม่แก้ไขค่าฟิลด์ที่เป็น Primary Key ระบบก็จะฟ้องออกมาและไม่ยอมบันทึกลงเทเบิลให้ แต่ถ้าที่ป้อนเป็นแค่รายการหนึ่งในหลายๆรายการในใบออเดอร์ ก็จะต้องหาฟิลด์อื่นๆมารวมกับเลขออเดอร์เพื่อเป็น Primary Key ถ้าระบบไม่ยอมให้ออเดอร์สินค้าตัวเดียวกันปรากฏมากกว่าหนึ่งรายการในออเดอร์หนึ่งๆ ก็เอาฟิลด์เลขอเดอร์และฟิลด์รหัสสินค้ามารวมเป็น Primary Key ได้  แต่ถ้าระบบยอม ก็ต้องหาอย่างอื่นมาเพิ่มเติมเข้าไปอีกเพื่อให้แตกต่างจากรายการอื่นๆในใบนั้นให้ได้ หรือกำหนดฟิลด์หมายเลขบรรทัดรวมกับฟิลด์หมายเลขออเดอร์ก็เป็นวิธีหนึ่งที่ทำๆกันครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

83
ครับ กดเปิด Query นั้นใน มุมมองแก้ไขแล้วกดลาก Field ใหม่ไปใส่เลยก็ได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

84
เพิ่มคำสั่งตอนท้ายครับเป็นแบบนี้
Private Sub Command0_Click()
    Dim xlApp           As Object
    Dim xlWorkbook      As Object
    Dim xlSheet         As Object
   
    DoCmd.TransferSpreadsheet acExport, , "Query1", "D:\ExportQuery1.xls", True
   
    Set xlApp = CreateObject("excel.application")
    Set xlWorkbook = xlApp.Workbooks.Open("D:\ExportQuery1.xls")
    Set xlSheet = xlWorkbook.activesheet

    With xlSheet.range("A1")
        .entirerow.insert -4121             ' Insert and Shift Row Down
        .entirerow.insert -4121             ' Insert and Shift Row Down
        xlApp.DisplayAlerts = False
        xlSheet.range("A1:F2").merge        ' Merge Cells (ผสานเซล A1:F2)
        xlApp.DisplayAlerts = True
    End With
   
    With xlSheet.range("A1")
        .Value = "ชื่อหัวเรื่องที่ต้องการ"
        .Font.Name = "Tahoma"
        .Font.Size = 18
        .Font.Bold = True
        .HorizontalAlignment = -4108        ' Align Center
    End With
    xlApp.ActiveWorkbook.Close True
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

85
โค๊ด: [Select]
    Dim xlApp           As Object
    Dim xlWorkbook      As Object
    Dim xlSheet         As Object
   
    DoCmd.TransferSpreadsheet acExport, , "ชื่อคิวรี่", "พาธ\ไฟล์.xls หรือ .xlsx", True
   
    Set xlApp = CreateObject("excel.application")
    Set xlWorkbook = xlApp.Workbooks.Open("พาธ\ไฟล์.xls หรือ .xlsx")
    Set xlSheet = xlWorkbook.activesheet

    With xlSheet.range("A1")
        .entirerow.insert -4121             ' Insert and Shift Row Down
        .entirerow.insert -4121             ' Insert and Shift Row Down
        xlApp.DisplayAlerts = False
        xlSheet.range("A1:E2").merge        ' Merge Cells
        xlApp.DisplayAlerts = True
    End With
   
    With xlSheet.range("A1")
        .Value = "ชื่อหัวเรื่อง"
        .Font.Name = "Tahoma"
        .Font.Size = 18
        .Font.Bold = True
        .HorizontalAlignment = -4108        ' Align Center
    End With
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

86


สามารถไปกำหนดได้ที่ File  >  Option  > Object Designer > QueryDesign
กำหนดรูปแบบฟ้อน กับขนาดได้เลยครับ


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

87
น่าจะตามท่าน prajak ได้อยู่นะครับ ผมก็มือใหม่เหมือนกันครับยังไงถ้าทำแล้วแก้ไขได้รบกวนอัปเดทผลด้วยนะครับ



คำเตือน  อย่าใส่ลิ้งผิดกฎนะครับ
• กฎกติกาบอร์ดเรียนรู้ Access สำหรับคนไทย •

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

88
ลองศึกษาการสร้าง Menu Ribbon จากเว็บนี้ดูก่อนครับ จะได้รู้หลักการเขียน accessribbon
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

89
แนวคิดคร่าวๆ คือ ไม่ว่าคุณจะสร้าง Ribbon จากการใช้ไฟล์ UsysRibbons หรือ User Table หรือ XML File (อันนี้ไม่แน่ใจว่าได้หรือเปล่า) เราสามารถสร้างเป็น List ของคำสั่งแต่ละชุดเมนูได้อยู่แล้ว โดยกำหนดชื่อต่างกัน จากนั้นในตอน Login เข้ามาก็กำหนดสิทธิได้ว่า user ระดับไหนใช้เมนูชื่ออะไรบนฟอร์มไหนโดยกำหนดที่ Event > On Load ของฟอร์มนั้นๆ เช่น ถ้า Level1 ก็โหลด Me.RibbonName = "เมนู1" หรือ Level2 ก็โหลด Me.RibbonName = "เมนู2" อย่างนี้ได้เลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

90
ห้อง MS Access / : สอบถามการ join Output ครับ
« เมื่อ: 09 มิ.ย. 61 , 12:05:42 »
ก่อนเอามา union สร้างคิวรี่ มา บวก หรือ ลบให้เสร็จก่อน แล้วเอาคิวรี่นั้นมา union กันคับเดี่ยว ไว้จะเพิ่มเติมให้นะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

หน้า: 1 2 3 4 [5] 6 7 8 9