แสดงกระทู้

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

หน้า: 1 ... 38 39 40 [41] 42 43 44 ... 46
721
ผมชื่นชมการตั้งกระทู้แบบนี้ครับ
มีการตั้งโจทย์สอบถามเป็นขั้นเป็นตอนมีการยกตัวอย่างด้วยรูป
และบอกถึงปัญหาที่พบ หรือ ผลลัพธ์ที่อยากได้ อย่างชัดเจนง่ายต่อการตอบมากๆ ครับ  :grin: :grin:
ท่านอื่นถ้าสะดวก ตั้งกระทู้แบบนี้จะดีต่อผู้ตอบและคนตอบจะได้คำตอบที่รวดเร็วครับ

722
เดี่ยวผมลองสร้างตัวอย่างให้ครับ

723
แก้เป็น
โค๊ด: [Select]
Me.PackPerPallet = DLookup("[PackQuantity]", "[Packing]", "Number='" & [SizeOfCarton] & "'")

724
ห้อง MS Access / : Access Runtime 2013ติดปัญหาครับ
« เมื่อ: 17 ต.ค. 62 , 15:49:20 »
อ้างถึง
เราจะเช็ค Reference library ของ VBA ได้อย่างไรครับ
กดเข้าหน้าเขียนโค้ด กด Alt+F11 เลือก Tool > Reference




อ้างถึง
และจะ Enable All Macro ตรง Trust Center Setting ได้อย่างไรครับ
ลองดูกระทู้นี้ครับ วิธีเปิด macro
https://www.thai-access.com/index.php?topic=375.msg1562#msg1562

725
เจอ กระทู้ที่ 98 ของ อจ.PNR ใช้แบบกำหนด tag เป็นกลุ่ม click แล้ว in-visible ถ้าจะให้ visible เหมือนเดิม ต้องให้ true ตรงไหน
Private Sub Command321_Click()
 Dim ctl As Control
    For Each ctl In Me
        If ctl.Tag = "Group1" Then
                ctl.Visible = False
     
        End If
        Next ctl
End Sub

แก้เป็นแบบนี้ครับ ถ้าแสดงอยู่ก็ให้ซ่อน ถ้าซ่อนอยู่ก็ให้แสดง Group1 คือชื่อของ Tag สามารถตั้งชื่อได้ตามความต้องการ
โค๊ด: [Select]
Private Sub Command6_Click()
 Dim ctl As Control
    For Each ctl In Me
        If ctl.Tag = "Group1" And ctl.Visible = False Then
                ctl.Visible = True
        ElseIf ctl.Tag = "Group1" And ctl.Visible = True Then
                ctl.Visible = False
        End If
        Next ctl
End Sub

หรือจะสร้าง Toggle แบบไอเดียคุณ nonc31 ก็น่าจะสะดวกดีครับเช่น
ผมสมมุติ ชื่อ Toggle ชื่อ Toggle13

โค๊ด: [Select]
Private Sub Toggle13_Click()
    Dim ctl As Control
    For Each ctl In Me
If ctl.Tag = "Group1" And Me.Toggle13 Then
                ctl.Visible = True
        ElseIf ctl.Tag = "Group1" And Not Me.Toggle13 Then
                ctl.Visible = False
        End If
        Next ctl
End Sub

726
ใช้การป้อนข้อมูลจาก Combobox แล้ว แสดง ListBox มาเลือกรายการให้กับ Combobox มันจะสามารถใช้ Scroll Mouse ได้

727
ไม่มีไฟล์ที่แนบมาครับ ลองตรวจเช็คดู

728
อยากจะทราบวิธี ขยาย Check Boxบนฟรอม คะ



ถ้าอยากให้ใหญ่ตามที่เราอยากได้ ใช้ Label มาสร้าง Checkbox ก็ได้ครับ
วิธีทำ
1 สร้าง Label ขึ้นมา ช่องใส่ข้อความ เคาะ space bar 1 ที ไม่ต้องใส่ข้อความ
2.ตั้งชื่อว่า lblCheck
3.จัดแนวข้อความกึ่งกลาง กำหนดขนาดตามต้องการ
4.ใส่ลักษณะพิเศษ แบบยุบตัว

กำหนดสถานะเมื่อ Click เราจะใช้ ChrW(&H2713) หรือ ChrW(&H2714) คือเครื่องหมายกาถูก
โดยเมื่อติ๊กถูกให้ checkbox ที่ชื่อ check1 = true ไปด้วย

Private Sub lblCheck_Click()
Call CheckboxDIY
End Sub

Sub CheckboxDIY()
  If Me.lblCheck.Caption = ChrW(&H2713) Then
    Me.lblCheck.Caption = vbNullString
    Me.Check1 = False
  Else
    Me.lblCheck.Caption = ChrW(&H2713)
    Me.Check1 = True
  End If
End Sub


729
ตามหัวข้อเลยครับ ผมทำฟอร์มไว้ฟอร์มนึง มันสามารถตั้งค่าให้เปิดเอาจาก Desktop เลยได้ไหมโดยไม่ต้องเปิดโปรแกรม
เหมือนการทำเป็น Shortcut อะไรประมาณนั้น

คลิกขวาที่ไฟล์ เลือก Send to > (Desktop Create shotcut) ได้เลยครับ แล้ว ไปกำหนด Icon ตามใจชอบ

โดยที่ file access ต้องสร้าง Autoexec macro เพื่อสั่งเปิดฟอร์มที่เราต้องการแสดงขึ้นมา
หรือไปที่ File > Option > Current Database > ดูตรงตั้งค่าแสดงฟอร์ม ตามภาพ
โดยท่านสามารถตั้งชื่อโปรแกรมของท่าน / และใส่ Icon ได้ตรงส่วนนี้ด้วยครับ

730
ลองใช้ DAO ดูครับ

Dim db As DAO.Database
Dim rsProduct As DAO.Recordset

check References ด้วยนะครับ
ตรง Tool References

731
โค้ด ถูกแล้วครับ แต่ทำมันไม่ทำงานเพราะเราเพิ่มโค้ดแล้ว แต่ลืมไปกำหนด Event ตรงคุณสมบัติให้มันด้วย
สังเกตุว่า Event Afterupdate แต่ตรงคุณสมบัติยังว่างอยู่ กดเข้าไปตามรูปครับ

อีกอย่างตรง textbox totalpcs ยังเป็นชื่อ Text80 อยู่อย่าลืมแก้นะครับ


732
Private Sub จำนวนบรรจุ_AfterUpdate()
Call CalculateTotal
End Sub
Private Sub จำนวนชิ้นจ่ายออก_Afterupdate()
Call CalculateTotal
End Sub
Private Sub จำนวนลังจ่ายออก_Afterupdate()
Call CalculateTotal
End Sub

Sub CalculateTotal()
Dim cal1, cal2 As Double
cal1 = Nz([จำนวนบรรจุ], 0) * Nz([จำนวนลังจ่ายออก], 0)
cal2 = Nz([cal1], 0) + Nz([จำนวนชิ้นจ่ายออก], 0)

Me.ผลรวมจำนวนชิ้น = cal2
End Sub

ไม่มี textbox ชื่อผลรวมจำนวนชิ้นครับ อีกอย่างตั้งชื่อ Control เป็นภาษาอังกฤษเถอะครับ จะได้ไม่มีปัญหาในอนาคต



733
สมการที่ 1 : จำนวนรับเข้า*จำนวนลัง = จำนวนชิ้น 
สมการที่ 2 : จำนวนชิ้น+จำนวนชิ้นจ่ายออก=ผลรวมจำนวนชิ้น


จำนวนชิ้น = nz([จำนวนรับเข้า],0) * nz([จำนวนลัง],0)

ผลรวมจำนวนชิ้น = nz([จำนวนชิ้น],0) + nz([จำนวนชิ้นจ่ายออก],0)

สอบถามเพิ่มเติมค่ะต้องวางสูตรที่ไหนคะ ใส่ในช่องฟอร์มได้เลยมั้ยคะ

ถ้าให้คำนวนตลอด ไว้ที่ form_current
หรือ สร้าง sub แล้วกำหนดevent Afterupdate ของ textbox ที่ใช้คำนวน ครับเช่น

Sub CalculateTotal
จำนวนชิ้น = nz([จำนวนรับเข้า],0) * nz([จำนวนลัง],0)
ผลรวมจำนวนชิ้น = nz([จำนวนชิ้น],0) + nz([จำนวนชิ้นจ่ายออก],0)
end sub


Private sub จำนวนรับเข้า_Afterupdate
Call CalculateTotal
end sub
Private sub จำนวนลัง_Afterupdate
Call CalculateTotal
end sub
Private sub จำนวนชิ้นจ่ายออก_Afterupdate
Call CalculateTotal
end sub
Private sub จำนวนลัง_Afterupdate
Call CalculateTotal
end sub

หมายเหตุดูว่า มีการเพิ่มข้อมูล textbox ไหน ก็วาง call ที่ event afterupdate textbox นั้นเพื่อให้ผลรวมจำนวนชิ้น คำนวนทุกครั้งที่ระบุจาก textbox ที่เกี่ยวข้อง

734
สมการที่ 1 : จำนวนรับเข้า*จำนวนลัง = จำนวนชิ้น 
สมการที่ 2 : จำนวนชิ้น+จำนวนชิ้นจ่ายออก=ผลรวมจำนวนชิ้น


จำนวนชิ้น = nz([จำนวนรับเข้า],0) * nz([จำนวนลัง],0)

ผลรวมจำนวนชิ้น = nz([จำนวนชิ้น],0) + nz([จำนวนชิ้นจ่ายออก],0)

735
1.ที่ฟอร์มสร้างปุ่มเปิดรายงานไว้ 1 ปุ่ม ใส่โค้ดนี้เข้าไป
DoCmd.OpenReport "ชื่อรายงาน", acViewPreview

วิธีที่ 1 กำหนดrecordsource

2.ที่รายงานใส่โค้ดนี้เข้าไป
(ถ้าเป็นฟอร์มที่มีซัพฟอร์ม)
Private Sub Report_Open(Cancel As Integer)
On Error Resume Next
Me.RecordSource = [Forms]![ชื่อฟอร์มหลัก]![ชื่อฟอร์มย่อย].Form.RecordSource
End Sub

(ถ้าเป็นฟอร์มเดี่ยว)
Private Sub Report_Open(Cancel As Integer)
On Error Resume Next
Me.RecordSource = [Forms]![ชื่อฟอร์มหลัก].Form.RecordSource
End Sub

วิธีที่ 2 RecordsetClone

ที่ปุ่มเปิดรายงานใส่โค้ดนี้เข้าไป
Private Sub Command56_Click()
Dim strWhere As String
        Me.Dirty = False
        With Me.Recordset.Clone
            Do Until .EOF
                strWhere = strWhere & "," & !ID
                .MoveNext
            Loop
        End With
        strWhere = Mid(strWhere, 2)
        DoCmd.OpenReport "rpt", acViewReport, WhereCondition:="ID In (" & strWhere & ")"
        End Sub

หมายเหตุ rpt คือชื่อรายงานนะครับ โดยส่วนตัวผมชอบใช้ RecordsetClone นะครับเพราะถ้ากรณีที่เรามีการกรองข้อมูลในฟอร์มแบบ Datasheet ข้อมูลก็จะแสดงที่รายงานเหมือนฟอร์มทุกประการ


736
ใช้ recordsetclone ได้คับ ไว้พรุ่งนี้จะทำให้ดูพอดี ไม่มีคอมวันนี้

737
พอดีผมมือบอนครับอยากลองดู ไปคลิกขวาที่ Form แล้วกด hide มันหายไปแล้วจะเรียก form คืนยังไงดีครับ ทำมาตั้งนาน ขอบคุณมากครับ

กด F11 ตั้งค่า Navigation pane 


หรือกด คริกขวาที่ Navigation  pane ก็จะเห็น Form ที่ซ่อนอยู่ ก็กด  Show Hidden Objects ได้เลย

738
อ้างถึง
เมื่อจะ add ข้อมูลสินค้า  เมื่อป้อนข้อมูลที่รหัสสินค้า(goods_id) ใส่อักษร 2 ตัวครบ ลำดับถัดไป(-000X) แสดงให้อัตโนมัตเป็นลำดับใหม่

ตกลงตัวอักษรด้านหน้าเป็นแบบไหนกันแน่คับผมทำไปนั้น จำกัดไว้ให้ต้องคีย์ 2 ตัว

งั้นผมแก้ให้ใหม่โดย ตัวอักษรพิมพ์ใส่เอาเลยว่าอยากได้กี่ตัว มันจะรันเลขให้ตามกลุ่มของอักษรที่คีย์เข้าไปนะครับ
เช่นลำดับการบันทึกข้อมูล
     A     = A-0001
     AAA = AAA-0001
     A     = A-0002
     AAA = AAA-0002
     AA   = AA-0001


ตัวอักษรด้านหน้าผมไม่ Fix นะครับ

หน้า: 1 ... 38 39 40 [41] 42 43 44 ... 46