แสดงกระทู้

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

หน้า: [1]
1
ใข้เรื่อง Running Sum ลองดูวิธีการจากในไฟล์แนบนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: napat2020

2
วิธีนี้ยังไม่ได้ครับ ผมลองคลิ๊กแต่ละเรคคอร์ดแล้วเลขมันยังรันต่อไปเรื่อยๆ
โพสต์นี้ได้รับคำขอบคุณจาก: napat2020

3
ห้อง MS Access / : ความเข้าใจ .Tag code vb access
« เมื่อ: 17 ก.ย. 63 , 11:13:59 »
.Tag ในกรณีของผมเอามาใช้ในการจัดกลุ่มโดยในหน้า Property -> Ohter จะมีให้ใส่ Tag อยู่
ตัวอย่างผมมี combo box อยู่หลายตัวแต่เมื่อใช้คำสั่งนี้อยากให้มีผลเฉพาะตัวที่กำหนด Tag "B1" ใว้เท่านั้น

อ้างถึง
Private Sub CleanAllFieldsButton_Click()
Dim ctl As Control
    For Each ctl In Me.Controls
    Select Case ctl.ControlType

    Case acComboBox And ctl.Tag = "B1"
           ctl.Value = Null

    End Select
   Next

    Set ctl = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: napat2020

4
ห้อง MS Access / : ความเข้าใจ .Tag code vb access
« เมื่อ: 17 ก.ย. 63 , 00:06:50 »
.Tag property คือพื้นที่ว่างๆในคอนโทรลต่างๆที่ให้เราใส่ค่าอะไรลงไปก็ได้ เปรียบเหมือนตัวแปรนึง ไม่มีผลต่อการทำงานหรือคุณสมบัติใดๆต่อตัวคอนโทรลนั้นๆ ความหมายของค่าก็แล้วแต่เราจะกำหนดเอาเอง ในงานที่ผมเคยใช้ ก็เช่นตอนก่อนจะบันทึก ผมก็จะวิ่งอ่านแต่ละคอนโทรลดูว่า .Tag ไหนมีข้อความบ้าง ถ้ามี แต่ผู้ใช้ไม่ได้เป้อนค่าลงคอนโทรลนั้น ก็จะเอาข้อความใน .Tag ไปแสดงเป็นข้อความเตือนให้ผู้ใช้รับรู้ว่าข้อมูลที่ขาดหายไปมีอะไรบ้าง ผมก็จะได้ไม่ต้องมาเขียนโค้ดเช็คทีละคอนโทรล ซึ่งแต่ละฟอร์มก็มีคอนโทรลที่แตกต่างกัน ผมก็จะสามารถเขียนโค้ดเป็น Public Function ที่ทำการเช็คเอาไว้แค่ที่เดียว โค้ดเดียว ก็พอ เช่น ในเท็กซ์บ็อกซ์ Customer Name ผมก็ใส่คำว่า "ชื่อลูกค้า", ในเท็กซ์บ็อกซ์ Purchase Order ก็ใส่คำว่า "เลขที่ใบสั่งซื้อ" เป็นต้น

ส่วนในบรรทัดแรกนั้น เป็นการเช็คว่าถ้า .Tag ไม่มีค่า , แต่จริงๆไม่มีความจำเป็นต้อง & กับ "" เพียงเขียนว่า if txtID.Tag = "" then ก็พอแล้ว
โพสต์นี้ได้รับคำขอบคุณจาก: napat2020

5
ปกติจะใช้ single quote แต่จะอ้างอิง ตัว control ไม่ใช้ Field แต่ลองดูว่าได้หรือไม่
If Not (Me.frmBaseGoodsSub.Form.Recordset.EOF And Me.frmBaseGoodsSub.Form.Recordset.BOF) Then
        If MsgBox(" Are you sure to delete?", vbYesNo) = vbYes Then
            CurrentDb.Execute "DELETE FROM tblBaseGoods " & _
            " WHERE bsCode='" & Me.frmBaseGoodsSub.Form.Recordset.Fields("bsCode") & "'"


ปกติผมจะใช้

If MsgBox(" Are you sure to delete?", vbYesNo) = vbYes Then
            CurrentDb.Execute "DELETE FROM tblBaseGoods " & _
            " WHERE bsCode='" & Forms![ชื่อฟอร์มหลัก]!frmBaseGoodsSub!txtbsCode & "'"
            Forms![ชื่อฟอร์มหลัก]!frmBaseGoodsSub.Requery 'ให้แสดงรายการใหม่หลังจากลบไป
End If


txtbsCode
คือ textbox ที่ Bound Field bsCode
โพสต์นี้ได้รับคำขอบคุณจาก: napat2020

6
ควรสร้างเท็กซ์บ็อกซ์ชื่อเดียวกันแต่มีเลขลงท้ายไล่ไปตั้งแต่ 1 ถึง 12   สมมุติชื่อ Textbox1 - 12 
ใส่ sub procedure ไว้ในฟอร์ม

Private Sub CopyText(N As Integer)
   Dim I As Integer

   For I = N+1 to 12
      Me("Textbox" & CStr(I)) = Me("Textbox" & CStr(N))
   Next
End Sub

และในทุก AfterUpdate event procedure ของ Textbox1 - 11 ก็แค่ใส่โค้ด
   Call CopyText(เลขท้ายของ Textbox)
โพสต์นี้ได้รับคำขอบคุณจาก: napat2020

7
ห้อง MS Access / : หาค่า Min จาก Query Access
« เมื่อ: 19 พ.ค. 63 , 21:46:49 »
ได้ความรู้ใหม่ครับอาจารย์สันติสุข คือการกำหนดเงื่อนไข ในวงเล็บไว้ก่อน F0 แล้วค่อยแสดงผล
ขอบคุณครับ
 :love: :love: :miao:

ผมเพิ่ม NZ() Function เพื่อให้ ฟิลล์ ที่มีค่า 0 ทุกฟิลล์ แสดง 0 ครับจะได้สมบูรณ์ยิ่งขึ้น

select ID, F1, F2, F3 , nz(min(F0),0) as FMin
from
(              select ID, F1, F2, F3, iif(F1 = 0, NULL, F1) as F0 from T
  union all select ID, F1, F2, F3, iif(F2 = 0, NULL, F2) as F0 from T
  union all select ID, F1, F2, F3, iif(F3 = 0, NULL, F3) as F0 from T)
group by ID, F1, F2, F3
order by ID
โพสต์นี้ได้รับคำขอบคุณจาก: napat2020

8
ห้อง MS Access / : หาค่า Min จาก Query Access
« เมื่อ: 19 พ.ค. 63 , 16:12:25 »
สมมุติเทเบิล T มีฟิลด์ ID, F1, F2, F3

select ID, F1, F2, F3 , min(F0) as FMin 
from 
(              select ID, F1, F2, F3, iif(F1 = 0, NULL, F1) as F0 from T
  union all select ID, F1, F2, F3, iif(F2 = 0, NULL, F2) as F0 from T
  union all select ID, F1, F2, F3, iif(F3 = 0, NULL, F3) as F0 from T)
group by ID, F1, F2, F3
order by ID
โพสต์นี้ได้รับคำขอบคุณจาก: napat2020

9
ห้อง MS Access / : หาค่า Min จาก Query Access
« เมื่อ: 18 พ.ค. 63 , 09:53:30 »
คือเงื่อนไขมันเริ่มซับซ้อนครับ เพราะถ้าไม่เอา 0 แล้วจะเป็นอย่างไร ถ้าทุกฟิลด์เป็น 0 หมด

แนะนำว่าให้ใช้ VBA ดีกว่านะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: napat2020

10
ห้อง MS Access / : หาค่า Min จาก Query Access
« เมื่อ: 17 พ.ค. 63 , 13:57:00 »
IIf([Field1]<[Field2], IIf([Field1]<[Field3], [Field1], [Field3]),IIf([Field2]<[Field3], [Field2], [Field3]))

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

หน้า: [1]