แสดงกระทู้

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 - Eik Q Sang

หน้า: 1 2 [3] 4
37
การกำหนด Property ให้แก่คอนโทรลในบรรทัดของ Continuous Form จะมีผลกับคอนโทรลนั้นในทุกบรรทัดครับ แต่สำหรับการกำหนดคุณสมบัติในการแสดงบางอย่างเช่น สีพื้น, สีตัวอักษร. อักษรตัวหนา/ขีดเส้นใต้/ตัวเอียง, Enabled/Disabled สามารถใช้ Conditional Formatting ในการกำหนดเฉพาะคอนโทรลในบรรทัดนั้นๆตามเงื่อนไขให้เป็นไปอย่างอัตโนมัติได้ ดังนั้นอย่างแรกที่ต้องทำก็คือต้องหาก่อนว่าเงื่อนไขอะไรที่จะให้ Disabled   จากที่กำหนดมา ถ้าสมมุติว่าเมื่อเงื่อนไข cb_Status = "¨จบงาน" ก็ให้ Disabled ได้ ก็ให้ป้อน Conditional Formatting สำหรับคอนโทรลอื่นที่ต้องการเป็น (เช่น cb_DocEnvelope, txt_OrderID) [cb_Status] = "¨จบงาน" แล้วเลือกลักษณะคอนโทรลเป็น Disabled ครับ 



ส่วนโค้ดที่ให้มา ก็มีแค่นี้เท่านั้น

Private Sub Command27_Click()
    Me.txt_DateClose = Now()
    Me.cb_Status = "¨จบงาน"
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

38
อันนี้ไฟล์เก่า ทำเป็นตัวอย่างไว้

https://www.dropbox.com/s/7nia01cvr0kzge3/ComboBox.accdb?dl=0
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

39
ลองดูที่นี่ครับ ไม่รู้ช่วยได้หรือป่าวนะ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

40
Private Sub TextFind_AfterUpdate()
On Error GoTo Err_Find
     Dim CutFName As String
     Dim CutLName As String
     Dim len_name As Byte
      If IsNumeric(TextFind) Then     'MsgBox "เป็นตัวเลข"
        DoCmd.ApplyFilter , "รหัสประจำตัว  like '" & [TextFind] & "*'OR เลขประจำตัวประชาชน  like '" & [TextFind] & "*'"
        len_name = 0
        End If
     If Not IsNumeric(TextFind) Then   'MsgBox "เป็นตัวหนังสือ"
         len_name = InStr([TextFind], " ")
            If len_name > 0 Then
                CutFName = Left([TextFind], [len_name] - 1)
                CutLName = Right([TextFind], Len(TextFind) - [len_name])
                DoCmd.ApplyFilter , "ชื่อ like '" & [CutFName] & "*' and นามสกุล Like '" & [CutLName] & "*'"
            Else
                DoCmd.ApplyFilter , "ชื่อ like '" & [TextFind] & "*' Or นามสกุล Like '" & [TextFind] & "*'"
            End If
    End If
    TextFind = Null
    TextFind.SetFocus
    Exit Sub
Err_Find:
   TextFind = Null
   TextFind.SetFocus
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

41
SELECT Table1.Field1, Table1.Field2, *
FROM Table1
WHERE ((([Field1] & [Field2]) Not In (select [Field1] &[Field2]   from [Table2])));

ถ้า Field 1 และ Field 2 Table 2 มีข้อมูลที่เหมือนกับ Field 1 และ Field 2 ของ Table 1 จะไม่นำมาแสดงครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

42
การที่นำตาราง2ตารางมาคิวรี่ โดยที่เอาแถวที่ซ้ำกันออก ระหว่าง2ตารางออกไปเลย แล้วแสดงข้อมูลที่ไม่ซ้ำ โดยยึดTable1 เช่น!!

Table1               Table2            ผลลัพธ์Query
--------              --------           ------------
    1                       1                      3
    2                       2
    3                         

กำหนดให้ไม่เอาข้อมูลของ table1 ที่มีเหมือนกับ Table2 โดย Check จากตัวอย่างชื่อ Field1  ของ table1 และ table2

SELECT Table1.Field1, *
FROM Table1
WHERE (((Table1.Field1) Not In (select [Field1] from [Table2])));
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

43
คำถามกว้างจัง
1. ใช้คิวรี โดยกำหนดให้คิวรีเป็น Record Source ของฟอร์ม แล้วตั้งเงื่อนไขให้ตรงกับคอนโทรลในฟอร์ม สุดท้ายกำหนด AfterUpdate เป็น Requery
2. ใช้ Dlookup โดยกำหนดเงื่อนไขตามที่ต้องการ จะเชื่อมด้วย AND หรือ OR ขึ้นกับความต้องการ
3. ใช้มาโครหรือ Module ด้วยคำสั่ง FindRecord

เท่าที่นึกออกตอนนี้
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

44
Event Docmd.Close form ต้องลบออก เพราะ Event ฟอร์มลงรายการมีการอ้างอิง ฟอร์มที่ระบุ ปีและเดือน ครับ
ผมได้แก้ไขและเพิ่มบางส่วนให้ส่งไปทางไลน์แล้วนะคับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

45
ลองดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

46
ผมต้องการจะสร้างฟอร์มคีย์ข้อมูลเอกสาร โดยเมื่อเปิดตามปี และเดือน ที่ต้องการ ทุกครั้งที่มีการคีย์เข้าตามปีและเดือนนั้นๆ อยากให้ระบบรันลำดับออโต้ครับ รายละเอียดดังนี้นะครับ

Table1 มีฟิลด์ดังนี้
Years (ชนิดข้อมูล Text)
Months (ชนิดข้อมูล Text)
Sequence (ชนิดข้อมูล Text)
DocNo  (ชนิดข้อมูล Text)

ต้องการสร้างฟอร์ม โดยในฟอร์มมีรายละเอียดดังนี้
Years (เป็น ComboBox)
Months (เป็น ComboBox)
ปุ่ม (เป็น Button) เมื่อกดปุ่มจะเปิดฟอร์ม frmDocDetail
ซึ่งฟอร์ม frmDocDetail จะมีรายละเอียดฟิลด์ต่างๆใน Table 1 โดยฟอร์มนี้เมื่อเปิดมาจะเรียง Sequence ให้ด้วยครับ และทุกครั้งที่มีการคีย์ข้อมูลเข้าฟอร์มนี้ Sequence จะรันลำดับให้ออโต้ครับ

ไม่ทราบว่าต้องทำอย่างไรบ้างครับ ขอบคุณมากครับผม
frmDocDetail  เป็นแบบContinues Form ใช่ไหมคับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

47
Error อะไรไม่ได้บอก งั้นก็เดาเอาตามนี้แล้วกัน อีกอย่าง ชื่อฟิลด์ที่บอกมาในโพสแรกบอกชื่อ Year กับ Month ไม่มี s แต่ในโค้ดที่คุณเขียนกลับมี s ก็ไปแก้ตำแหน่งสีแดงให้ถูกต้องเองแล้วกันนะครับว่ามี s หรือไม่มี s

Me.Sequence = Nz(DMax("Sequence", "ชื่อเทเบิล", "Years = '" & Me.Years & "' and Months = '" & Me.Months & "' "), 0) + 1

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

48
ใส่โค้ดนี้ไว้ใน Before Update event procedure ของฟอร์มครับ

โค๊ด: [Select]
Private Sub Form_BeforeUpdate(Cancel As Integer)
    If Nz(Me.Sequence, "") <> "" Then Exit Sub
   
    Me.Sequence = Nz(DMax("Sequence", "ชื่อเทเบิล", "Year = " & CStr(Me.Year) & " and Month = " & CStr(Me.Month)), 0) + 1
End Sub

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

ยังไงก็ตาม ต้องระวังเกี่ยวกับการลบเรคอร์ดแล้วทำให้ค่า Sequence นั้นแหว่งไปด้วยนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

49
ลองดูตัวอย่างนี้ครับ ผมเปลี่ยนจากการ GotFocus แล้ว โค้ดทำงานเป็นใส่บน CommandBonton เล็กๆ นะครับลองดู
เวลาจะเพิ่ม Record ใหม่ให้กด เครื่องหมาย + ในช่องที่มีข้อมูลอยู่นะครับ อย่ากดช่องที่ไม่มีข้อมูล หรือช่องล่างสุด

โค๊ด: [Select]
Private Sub Command16_Click()
Dim GetSerialNo As String
Dim RunNum_Sequence As Integer
GetSerialNo = Me.SerialNo
DoCmd.GoToRecord , , acNewRec
If IsNull(Sequence) Then
Me.Sequence.Requery
RunNum_Sequence = DLookup("Sequence", "GetMaxSequence", "SerialNo='" & GetSerialNo & "'")
Me.Sequence = RunNum_Sequence + 1
Me.SerialNo = DLookup("SerialNo", "tblWareHouseAll", "SerialNo='" & GetSerialNo & "'")
Me.BoxNo = DLookup("BoxNo", "tblWareHouseAll", "SerialNo='" & GetSerialNo & "'")
Me.CIFNo.SetFocus
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

50
ไฟล์ตัวอย่างครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

51
เพิ่มเติมนิดนึงนะครับ
Me.txt_BranchName = DLookup("BranchName", "tblBranch", "BranchCode='" & Forms!ชื่อฟอร์ม!txt_BranchCode & "'")

ดูเครื่องหมาย ' ให้ดีนะครับ ถ้าในตารางข้อมูลเป็น text  ต้องมี ' ด้วย
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

52
ใส่คำสั่ง Dlookup ไว้ที่ Control Source ของ  txt_BranchName, txt_Branch, txt_Area
ตัวอย่างสำหรับ txt_BranchName
Dlookup("[BranchName]","[tblBranch]","[BranchCode]=[txt_BranchCode]")

ปล. ไม่แน่ใจว่าต้องใส่เครื่องหมาย = หรือเปล่านะ ลองดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

53
ห้อง MS Access / : สร้าง runing number บนฟอร์ม
« เมื่อ: 22 พ.ค. 61 , 11:59:23 »
ลองดูตัวอย่างนี้นะครับ
ผมลองกรองแล้วก็ยังรันปกติ
ผมใส่ Code ดังนี้

Private Sub Form_Current()
Me.No.ControlSource = "=RunNumber([Sale_Index])"
End Sub

Sale_Index คือชื่อ Control ครับ
No คือชื่อ Unbound textbox
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

54
ห้อง MS Access / : สร้าง runing number บนฟอร์ม
« เมื่อ: 22 พ.ค. 61 , 10:39:14 »
ลองดูอีกตัวอย่างนะครับ

บน Module

โค๊ด: [Select]
Global sNumber As Long
Global lastcall As Date
Function RunNumber(i) As Long
 If Now - lastcall > 1 / 60 / 60 / 24 Then
        lastcall = Now
        sNumber = -1
        End If
    sNumber = sNumber + 1
    RunNumber = sNumber
    End Function
ที่ฟอร์ม สร้าง Unbound Textbox ขึ้นมา 1 ตัว ใส่
=RunNumber([ชื่อของ Control ที่เราจะนับอันไหนก็ได้ในฟอร์มเลือกมา 1 ตัว])
แค่นี้ก็จะสามารถรันได้เหมือนกันครับ

หมายเหตุ
ถ้ารันฟอร์มแล้ว ตัวเลขที่รันตัวแรกไม่ใช้ 1 อาจจะเป็น 0 หรือ 2 ก็ให้เพิ่มลดที่ตรงนี้ได้เลยนะครับ
Global sNumber As Long
Global lastcall As Date
Function RunNumber(i) As Long
 If Now - lastcall > 1 / 60 / 60 / 24 Then
        lastcall = Now
        sNumber = -1 '-1 หรือ 0 หรือ 1 เลือกกำหนดได้
        End If
    sNumber = sNumber + 1
    RunNumber = sNumber
    End Function
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

หน้า: 1 2 [3] 4