แสดงกระทู้

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] 2 3 4 ... 18
1
เพิ่มโค้ดอีกนิดใช้การเช็คปีของการลงข้อมูลด้วยครับ

พอมันไปเจอปีใหม่ข้อมูลก็จะรันกลับมา 1 ใหม่ครับ
โค๊ด: [Select]
Sub AutoRunnumber()
Dim MaxNum As Integer
MaxNum = Nz(DMax("ID", "tb_คำสั่ง", "[ปีงบ] = '" & CStr(Format(วันที่ลง, "YYYY")) & "'"))
If MaxNum = 0 Then
MaxNum = 1
Else
MaxNum = MaxNum + 1
End If
Me.ID = MaxNum
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

2
ได้แล้วครับ..ขอบคุณมากน่ะครับ
ขอถามเป็นความรู้หน่อยน่ะครับ...
If Me.Dirty = True Then
   Me.Dirty = False
End If
หมายความว่าอย่างไร..ใช้ประโยชน์อะไรครับ..ขอขอบคุณมากน่ะครับ

If Me.Dirty = True Then   ค่า true คือ เปรียบเสมือนผู้ใช้ทำการเปลี่ยนแปลงระเบียนหรือดำเนินการเกี่ยวกับระเบียนอยู่
การที่เราสั่ง Dirty = false คือบอกให้โปรแกรมทราบว่าเราได้หยุดการดำเนินการกับระเบียนแล้ว
และโปรแกรมจะบันทึกข้อมูลลงตารางและพร้อมสำหรับการใช้เงื่อนไข การตรวจสอบขั้นต่อๆไป

ถ้าสังเกตุผมไม่ได้ใส่โค้ดสำหรับบันทึกไว้เพราะ Dirty = false มันก็บันทึกได้เหมือนกัน
โพสต์นี้ได้รับคำขอบคุณจาก: kn208598

3
สร้างคิวรี่ ขึ้นมาครับเพื่อรวบรวมว่า ในแต่ละวันได้ระบุ Result ว่าอะไร....   และระบุไปจำนวนกี่ครั้งแล้ว

แล้วสร้าง Dlookup มาเช็คจำนวนครั้งการระบุ Result ได้เลยครับ ถ้าเจอว่า ในวันนั้นเจอการระบุ Result แล้ว หรือ >1 ก็ให้ทำตามเงื่อนไขเช่นแจ้งเตือนเป็นต้น
ส่วนตัวอย่างไว้พรุ่งนี้เน้อ
โพสต์นี้ได้รับคำขอบคุณจาก: naekkhung

4
ใช้ Append Query ครับ
โดยกำหนด JobNo = Forms![ชื่อฟอร์ม]![JobNo]
และกำหนดฟิลล์ให้มันก็ได้แล้วครับ
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

5
ผม DIY เอานะครับโดยเพิ่มฟิลล์ GetReport ไว้ในตาราง TaxRegis นะครับ
แนวทางคือ ถ้าเราติกเลือกแล้ว จะทำอย่างไรให้ข้อมูลที่เลือกนี้ สามารถไปแสดงบนรายงานได้ ผมเลยใช้การใส่ค่า Picking ไว้เพื่อใช้ในการ Criteria ไปแสดงบนรายงานนะครับ (ดูโค้ดที่  AddPickingReport นะครับ)
โดยผมจะใช้การลบ Picking ออกทุกครั้งที่กด บันทึกระเบียน เพราะเราต้องการค่าจากการติ๊กใหม่แล้วนั้นเอง
โดยเราใช้ Me.RecordsetClone เข้ามาใช้ในการจัดการกับ Recordset บน form ครับ

โค้ดที่ปุ่มบันทึก

โค๊ด: [Select]
Private Sub Command24_Click()
Call ClearPickingReport
DoEvents
Call AddPickingReport
End Sub
Sub ClearPickingReport()
Dim RS As DAO.Recordset
    Set RS = CurrentDb.OpenRecordset("TaxRegis", dbOpenDynaset)
    If Me.Dirty = True Then
    Me.Dirty = False
    End If
        RS.MoveFirst
        Do While Not RS.EOF
            If RS("GetReport") = "Picking" Then
                RS.Edit
                RS("GetReport") = Null
                RS.Update
            End If
            RS.MoveNext
        Loop
    RS.Close
    Set RS = Nothing
End Sub
Sub AddPickingReport()

Dim RSt As DAO.Recordset
    Set RSt = Me.RecordsetClone
        RSt.MoveFirst
        Do While Not RSt.EOF
            If RSt("ฎีกา/ส่งตรวจ") = True Then
                RSt.Edit
                RSt("GetReport") = "Picking"
                RSt.Update
            End If
            RSt.MoveNext
        Loop
        RSt.Close
       Set RSt = Nothing
       Me.Dirty = False
       DoCmd.OpenReport "TaxRegis_Check_Yes", acViewPreview
End Sub

Recordsource ของ Report

โค๊ด: [Select]
SELECT TaxRegis.* FROM TaxRegis WHERE ((Not (TaxRegis.GetReport) Is Null));
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown, kn208598

6
ผมใช้ฟอร์มชื่อ FrmTaxRegis_Check_Nobook เพื่อติ๊กเลือกรายที่ต้องการขอคืน..เมื่อติ๊กเลือกแล้วกดปุ่มบันทึกระเบียน(ปุ่มนี้จะ Save+OpenReport) ซึ่งรายงานจะดึงรายจากคิวรี่ TaxRegis_Check_Yes แต่ตัวรายงานจะออกมาแค่รายเดียว(ผมติ๊กเลือกเกิน 1 ราย) และเมื่อไปเปิดในคิวรี่ดู ก็จะขึ้นแค่รายเดียวเช่นกัน ผมแนบไฟล์มาแล้วรบกวนช่วยดูให้หน่อยน่ะครับ..ขอขอบคุณมากครับ
ที่แก้นะครับ

แก้คิวรี่ให้ ฎีกา/ส่งตรวจ จาก yes เป็น True แทน
ลบเงื่อนไข เลขทะเบียนงาน ออกไปเพราะเรคคอร์ดที่จะแสดงจะต้องมาจาก ฎีกา/ส่งตรวจ ครับ
แก้โค้ด เป็น
โค๊ด: [Select]
Private Sub Command24_Click()
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenReport "TaxRegis_Check_Yes", acViewPreview
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: kn208598

7
ปัญหาคือ เวลาผมเลือก รายการใน combobox1 แล้วไฟของปุ่ม Numlock  ชอบดับเองตลอดเวลา  แล้วเวลาเลือกรายการอีกตรั้งก็จะติด เลือกรายการครั้งที่ 3 ก็จะดับ
ช่วยด้วยครับคืออยากให้ไฟติดตลอดเวลาไม่ว่ากี่ครั้งที่เลือกรายการครับ เป็น Windows 10 , Access 2007 ครับ

ขั้นตอนนะครับ
1.สร้าง Module ใส่โค้ดในลงไปแล้วเซฟ

โค๊ด: [Select]
Option Compare Database
 Private Type OSVERSIONINFO
        dwOSVersionInfoSize As Long
        dwMajorVersion As Long
        dwMinorVersion As Long
        dwBuildNumber As Long
        dwPlatformId As Long
        szCSDVersion As String * 128   '  Maintenance string for PSS usage
      End Type
      ' API declarations:
      Private Declare Function GetVersionEx Lib "Kernel32" _
         Alias "GetVersionExA" _
         (lpVersionInformation As OSVERSIONINFO) As Long
      Private Declare Sub keybd_event Lib "user32" _
         (ByVal bVk As Byte, _
          ByVal bScan As Byte, _
          ByVal dwflags As Long, ByVal dwExtraInfo As Long)

      Private Declare Function GetKeyboardState Lib "user32" _
         (pbKeyState As Byte) As Long

      Private Declare Function SetKeyboardState Lib "user32" _
         (lppbKeyState As Byte) As Long
      ' Constant declarations:
      Const VK_NUMLOCK = &H90
      Const VK_SCROLL = &H91
      Const VK_CAPITAL = &H14
      Const KEYEVENTF_EXTENDEDKEY = &H1
      Const KEYEVENTF_KEYUP = &H2
      Const VER_PLATFORM_WIN32_NT = 2
      Const VER_PLATFORM_WIN32_WINDOWS = 1
Function IsNumLockOn() As Boolean
        Dim o As OSVERSIONINFO
        o.dwOSVersionInfoSize = Len(o)
        GetVersionEx o
        Dim keys(0 To 255) As Byte
        GetKeyboardState keys(0)
        IsNumLockOn = keys(VK_NUMLOCK)
End Function

Sub ToggleNumLock()
        Dim o As OSVERSIONINFO
        o.dwOSVersionInfoSize = Len(o)
        GetVersionEx o
        Dim keys(0 To 255) As Byte
        GetKeyboardState keys(0)
          If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then  '=====Win95
                keys(VK_NUMLOCK) = Abs(Not keys(VK_NUMLOCK))
                SetKeyboardState keys(0)
          ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then   '=====WinNT
          'Simulate Key Press
            keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
          'Simulate Key Release
            keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY _
               Or KEYEVENTF_KEYUP, 0
          End If
End Sub

Sub mySendKeys(sKeys As String, Optional bWait As Boolean = False)
Dim bNumLockState As Boolean
    bNumLockState = IsNumLockOn()
    SendKeys sKeys, bWait
    If IsNumLockOn() <> bNumLockState Then
        ToggleNumLock
    End If
End Sub

ขั้นตอนที่ 2 ไปที่ฟอร์ม เราจะทำกับ Control ตัวไหนให้กำหนด Event GoFocus ได้เลยเช่น

โค๊ด: [Select]
Private Sub Combo1_GotFocus()
Call ToggleNumLock
End Sub


Credit http://access.mvps.org/ link
โพสต์นี้ได้รับคำขอบคุณจาก: WISSANU

8
Work order คือชื่อฟิลล์ คับจากโค้ดน่าจะเป็น string ครับ
ส่วน  Like '*'" คือแสดงทั้งหมด

ถ้าอยากสร้างการค้นหาแบบหลายเงื่อนไขลองแบบนี้

Dim sql As String
    sql = "SELECT * FROM [ชื่อตาราง] WHERE [รหัสงาน] Like '" & Nz(Me.cbWorkID, "*") & "' AND [กลุ่มที่ทำ] Like '" & Nz(Me.cbGroupWork, "*") & "' AND [วันส่งงาน] Like '" & Nz(Me.txtWorkSendDate, "*") & "'"
    Forms![ชื่อฟอร์ม].RecordSource = sql

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

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

9
แนะนำฟ้อนต่างประเทศที่เป็นสากล ดีกว่าครับเช่น Arial , Tahoma , Calibri , Verdana , Lucida , sans serif เป็นต้น
ผมก็เคยใช้ฟ้อนไทย เจอปัญหาพวกนี้ตลอด ปัจจุบันเลยใช้ฟ้อนตามข้างบนแทนครับ มันเป็นฟ้อนที่ติดมากับวินโดร์ไม่ต้องลงเพิ่ม
เพราะบางเครื่องก็ไม่ได้กำหนด Location Thai ไว้ปัญหาก็จะเกิดได้เหมือนกัน
โพสต์นี้ได้รับคำขอบคุณจาก: ชุติพนธ์ มหาทรัพย์

10
ลองดูตัวอย่างนี้นะครับน่าจะได้ข้อมูลแบบที่คุณต้องการนะ

ผมใช้การตรวจสอบโดยการนับจำนวนครั้งของการ Append ข้อมูลลงไปในตาราง customer
โดยเช็คว่าถ้า Employee ไหน asign = 0 แล้วก็ให้ลบออกไป ไม่นำไป Append ต่อครับ

โค้ดของคิวรี่ในการเช็คจำนวนการAppend ข้อมูล
โค๊ด: [Select]
SELECT tbl_Job.Employee_Name, Count(tbl_Customer.Employee_Name) AS CountCTM, tbl_Job.assign, Nz([assign],0)-Nz([CountCTM],0) AS Remaining
FROM tbl_Job LEFT JOIN tbl_Customer ON tbl_Job.Employee_Name = tbl_Customer.Employee_Name
GROUP BY tbl_Job.Employee_Name, tbl_Job.assign;

โดยจะต้องมีฟอร์มที่มีปุ่มกดให้โค้ดทำงานโดยมีโค้ดประมาณนี้ครับ
โค๊ด: [Select]
Private Sub Command0_Click()
Dim rst As DAO.Recordset
Dim IntAssign As Integer
Dim sql As String
Dim I As Long
    Set rst = CurrentDb.OpenRecordset("tbl_Job", dbOpenDynaset)
 
 
rst.MoveFirst
Do Until rst.EOF
IntAssign = rst!Assign
For I = 1 To IntAssign
If IntAssign = rst!Assign Then
sql = "INSERT INTO tbl_Customer ( Employee_Name, Cust_Name ) SELECT QryCheckRemaining.Employee_Name, 'XXXX' AS Expr1 FROM QryCheckRemaining WHERE (((QryCheckRemaining.Remaining)>0));"
DoCmd.SetWarnings False
           DoCmd.RunSQL sql
End If
    Next
  rst.MoveNext
  Loop
  DoCmd.SetWarnings True
    rst.Close
    Set rst = Nothing
End Sub

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

11
ผมเขียนแล้วcopyไปเปิดที่อีกเครื่องหนึ่งครับ โดยเครื่องที่ใช้ประจำกับเครื่องที่อาไปลง ใช้ เวอเดียวกัน

แต่ในเครื่องที่เอาไปลง พอกดใช้งานป่มคำสั่ง มันขึ้น ไม่สามารถทำงานeventได้ครับ

แก้ไขยังไงดีครับ :cry:

ไปเปิด Trust Center ครับดูจากกระทู้นี้
https://www.thai-access.com/index.php?topic=375.msg1562#msg1562
โพสต์นี้ได้รับคำขอบคุณจาก: ชุติพนธ์ มหาทรัพย์

12
อ้างถึง
ตรง MainFrm แสดงทุกระเบียนจากตาราง  ซึ่ง ถ้าผมต้องการให้ MainFrm แสดงเฉพาะรายที่ยังไม่ได้ติ๊ก

ตรงกำหนด Criteria ในคิวรี่ให้กำหนดตรง Field CheckBox เป็น Not True ครับคือให้แสดงเฉพาะค่าที่เป็น False คือยังไม่ได้ติ๊กนั้นเอง

อ้างถึง
ก็ให้ออกรายงานเฉพาะรายที่ติ๊กเลือกจาก MainFrm ไม่ทราบว่าต้องทำอย่างไร

ที่คิวรี่บนตัวรายงานนั้นให้กำหนด เลือกข้อมูลในตาราง datasub จาก ID เดียวกับที่แสดงบนฟอร์ม
และกำหนดให้แสดง Field Check เฉพาะข้อมูลที่ต๊ิกอยู่หรือ True นั้นเอง
โพสต์นี้ได้รับคำขอบคุณจาก: kn208598

13
ลองดูตัวอย่างจากกระทู้นี้ครับ
https://www.thai-access.com/index.php?topic=307.msg1223#msg1223
โพสต์นี้ได้รับคำขอบคุณจาก: kn208598

14
ออกแบบสวยงามน่าใช้มากครับ
 :love: :love:
โพสต์นี้ได้รับคำขอบคุณจาก: ittiphol

15
ใช้สองจอได้ครับผม แต่ต้องลากไปทางขวาเอาครับผม  :cry:
โค้ดนี้ผมได้นำไปใช้กับโปรแกรมของเพื่อน ก็ใช้ได้ปกตินะครับ
สะดวก รีโมทไปเช็คไหมครับเรื่องการตั้งค่าฟอร์ม และการตั้งค่าแสดงผลการ์ดจอ
ใช้ Anydesk ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: ittiphol

16
น่าจะแบบนี้นะครับงั้น
จากตาราง



ในคิวรี่

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

หน้า: [1] 2 3 4 ... 18