แสดงกระทู้

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 - มาลี

หน้า: 1 [2] 3 4 5 6
19
อ้างถึง
สิ่งที่หนูต้องการคือจะแยกเอาเฉพาะ ข้อความแรก มาใช้เท่านั้น
โดยหนูคิดวางแผนว่าจะดักจับเอาช่วงที่เขาเริ่มเว้นวรรคหรือช่วงที่เขาเริ่มใส่วงเล็บ ประมาณนี้ค่ะอาจารย์

ใช้การสร้างฟังชั่นในการแสดงผลในคิวรี่นะครับ
วิธีการ
1 สร้าง Module ใส่ Code
โค๊ด: [Select]
Public Function GetString(FieldTarget As String) As String
Dim CuttingString As String

If Not (InStr(FieldTarget, "(") = 0) Then
CuttingString = Left(FieldTarget, InStrRev(FieldTarget, "(") - 1)
ElseIf Not (InStr(FieldTarget, " ") = 0) Then
CuttingString = Left(FieldTarget, InStrRev(FieldTarget, " ") - 1)
ElseIf Not (InStr(FieldTarget, "") = 0) Then
CuttingString = FieldTarget
End If

GetString = Trim(CuttingString)
End Function

2.ที่คิวรี่ใส่แบบนี้
โค๊ด: [Select]
คำทักทาย: GetString([ทักทาย])
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

20
ใช้ Update Query เปลี่ยน ( เป็น Space แล้วใช้คำสั่งครับ
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

21
ข้างหน้าเหมือนกัน ใช้ Left อย่างเดียวก็พอครับ
=LEFT([ทักทาย],6)
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

23
ช่วยหน่อยนะค่ะ
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

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

26
น่าสนใจมากเลยค่ะอาจารย์
ขออนุญาตคุณ001jetnipitด้วยนะคะ

รบกวนอาจารย์ OddyWriter ขอไฟล์ตัวอย่างแบบ 32 bit ด้วยได้ไหมคะ
หนูจะเอาไปปลุกผีงานเก่าที่เคยถอดใจล้มเลิกไปแล้วค่ะ

แต่หนูลองเอาไฟล์ตัวอย่าง64bit ของอาจารย์ไปรันกับ 32bit มันก็ทำงานได้ปกตินะคะ
ไม่ทราบว่าจริงๆแล้วจะมีผลแตกต่างอื่นๆหรือเปล่าคะ

จริงดิ ผมส่งผิดไฟล์เหรอเนี่ย ดันส่ง 32 Bit ไปซะงั้น ถ้าจะ Run บน 64 Bit ให้แก้โค้ด Function เป็น PtrSafe Function ครับ

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

27
ดูที่ On Open/On Close ของฟอร์ม และ Module1 ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

28
ขออนุญาตตอบคุณ 001jetnipit นะคะ
เห็นว่าคุณได้ทำฟอร์มป็อปอัพไว้แล้ว ลองทำอย่างนี้ดูนะคะ

ที่อีเวนต์ เมื่อเปิด ของฟอร์มป็อปอัพ ใส่คำสั่งนี้ลงไป (ต้องเป็นฟอร์มป็อปอัพนะคะ)
 DoCmd.RunCommand acCmdAppMinimize

และที่อีเวนต์ เมื่อปิด ของฟอร์มป็อปอัพ ใส่คำสังนี้ลงไปเพื่อคืนค่าเดิมค่ะ
 DoCmd.RunCommand acCmdAppRestore
หรือ
 DoCmd.RunCommand acCmdAppMaximize

ลองประยุกต์ใช้ดูนะคะ

วิธีการง่ายกว่าผมมาก (จะคิดเยอะทำไมเนี่ย)
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

29
ขอบคุณค่ะอาจารย์
ก่อนหน้านี้หนูได้ทดลองใช้วิธีลักไก่หลอกโปรแกรมโดยสร้างฟิลด์ใหม่ [Notจังหวัด] ที่คิวรี่ขึ้นมาอีกหนึ่งฟิลด์ค่ะ
แล้วแยกใส่คำสั่งทั้งสองลงไป สามารถตอบโจทย์ที่ต้องการได้แล้วค่ะอาจารย์



สุดยอด สาย DIY อีกคนเปล่าครับนี้  :shout:
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

30
ถ้าเป็น [Forms]![frmค้นหา]![text1] or Not [Forms]![frmค้นหา]![text2]
จะสามารถทำได้ แต่ถ้ามี Like ด้วยผมไม่เคยทำครับ
โดยปกติจะสร้างเงื่อนไข โดยใช้ IF check เช่น

IF ISnull(text1) and Not isnull(Text2) then
            กำหนด sql ของ Like "*" & [Forms]![frmค้นหา]![text1] & "*"

elseIF  ISnull(text2) and Not isnull(Text1) then
            กำหนด sql ของ Not [Forms]![frmค้นหา]![text2]
end if
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

31
สมมติว่าเรามีรายชื่อลูกค้ากระจายอยู่ในหลายจังหวัด ทีนี้หนูอยากจะให้ค้นหาโดยละเว้นเฉพาะจังหวัดที่เราระบุใน textbox บนหน้าฟอร์มแล้วสั่งไปที่คิวรี่ให้แสดงข้อมูลทุกจังหวัด ยกเว้นจังหวัดที่เราระบุค่ะ
เช่นระบุว่า กรุงเทพฯ ก็ให้ละเว้นเฉพาะกรุงเทพฯอย่างเดียว นอกนั้นแสดงจังหวัดอื่นขึ้นมาทั้งหมดเลยค่ะ

ในคิวรี่ ที่ฟิลล์ของจังหวัด เราสามารถใส่ Criteria
Not Forms![ชื่อฟอร์ม]![ชื่อtextboxบนฟอร์ม]
เท่านี้ ข้อมูลที่จะนำมาแสดง ก็จะไม่มีจังหวัดนั้นแล้วครับ
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

32
https://www.thai-access.com/index.php?topic=1778.msg7613#new

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

33
ห้อง MS Access / : ขอเพิ่มโค๊ตค้นหา
« เมื่อ: 24 ส.ค. 64 , 20:19:10 »
ไฟล์ตัวอย่างครับ
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

34
ห้อง MS Access / ขอเพิ่มโค๊ตค้นหา
« เมื่อ: 24 ส.ค. 64 , 06:38:15 »
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] & "*'เลขประจำตัวประชาชน  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

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

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

36
ขอบคุณครับ ใช้โมลดูลนี้ครับ

Public Function RowNum(frm As Form) As Variant
On Error GoTo Err_RowNum
   
    With frm.RecordsetClone
        .Bookmark = frm.Bookmark
        RowNum = .AbsolutePosition + 1
    End With
   
Exit_RowNum:
    Exit Function
   
Err_RowNum:
    If Err.Number <> 3021& Then
        Debug.Print "RowNum() error " & Err.Number & " - " & Err.Description
    End If
    RowNum = Null
    Resume Exit_RowNum
End Function
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

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