แสดงกระทู้

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] 5 6 7 ... 32
55
ผมมี Textbox อยู่ 2 Textbox

Textbox  1 มี JPS64052271000002002321144130D08000 ต้องการโชว์แค่ 12 หลักหลัง

Textbox  2 มี JPS64052271000002744130D0800000232110 ต้องการโชว์แค่ 12 หลักตรงกลาง

จะต้องเขียนสูตร vba ยังไงครับ

1.BoundField
textbox bound กับ Field สามารถใส่โค้ดใน ControlSource ของ textbox ได้เลย โดยสมมุติ Field1 และ Field2 คือชื่อฟิลล์
ที่text1
=Right([Field1],12)

ที่text2
=Mid([Field2],18,12)

แบบที่2
ถ้าเป็นข้อมูลที่ผ่านการแสกนมาแล้วอยากตัดข้อความให้กำหนดตัวแปลมาเก็บค่าไว้เช่น
โค๊ด: [Select]
Dim strbarcode As String
strbarcode = Me.MyInput 'สมมุติว่ารับข้อมูลมาจาก textbox MyInput
Me.Text1 = Right(strbarcode, 12)
Me.Text2 = Mid([strbarcode], 18, 12)
โพสต์นี้ได้รับคำขอบคุณจาก: Nisar Malila

56
เราสามารถใช้ & เพื่อใช้ Control ในการค้นหาตัวเดียวกันได้ครับ เช่น


Code : sql = "SELECT * FROM Q_PI WHERE [ID_Card] & [NameTH] like '*" & Nz(Me.TextSearch, "*") & "*' AND [Position] like '" & Nz(Me.CmdPosi, "*") & "' AND [Section] like '" & Nz(Me.CmdSec, "*") & "'"

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

57
เพิ่มโค้ดแบบนี้ จากเดิมมีอันเดียวคือ Dim sql As String ใส่  Dim rstRecords As Recordset เพิ่มเข้าไป
Dim sql As String
Dim rstRecords As Recordset

ทีนี้เป็นตัวนี้ครับ ลองประกาศชื่อนี้ As String แต่ไม่ได้ครับ



ตัวนี้ as long ก็ได้คับ
ถ้าน้าย้อนกลับไปดูโพสดีๆ ผมแก้ให้แล้วนะครับ

https://www.thai-access.com/index.php?topic=1722.msg7425#msg7425
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

58
ยังไม่ได้ประกาศตัวแปร

ต้องประกาศยังไงหรอครับ

เพิ่มโค้ดแบบนี้ จากเดิมมีอันเดียวคือ Dim sql As String ใส่  Dim rstRecords As Recordset เพิ่มเข้าไป
Dim sql As String
Dim rstRecords As Recordset
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

59
แก้โค้ดเป็น
โค๊ด: [Select]
Private Sub Searchcriteria()
Dim sql As String
Dim FindRecordCount  As Long
Dim rstRecords As Recordset
sql = "SELECT * FROM Ptt WHERE [Name] like '*" & Nz(Me.TextSearch, "*") & "*' and [Sex] like '" & Nz(Me.Combo1, "*") & "' and [Dep] like '" & Nz(Me.Combo2, "*") & "' and [Age]  like '" & Nz(Me.Combo3, "*") & "'"
Set rstRecords = CurrentDb.OpenRecordset(sql)
forms!.....................recordsource = sql
forms!.....................Requery

        If rstRecords.EOF Then
            FindRecordCount = 0
        Else
            rstRecords.MoveLast
            FindRecordCount = rstRecords.RecordCount
        End If
   If FindRecordCount = 0 Then
   MsgBox "Not Found !!", vbCritical, "Status"
   End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

60

แก้ใน private sub SearchCriteria ครับ



ขึ้นแบบนี้ตอนเปิดครับครับเพราะผมใช้ Form_Load รัน SearchCriteria ด้วยครับ


จากโค้ดที่ให้ไป แก้ชื่อตารางจาก mytable เป็น ptt ก้อนครับผมลืมแก้ให้ :prettiness: :prettiness:
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

61

แก้ใน private sub SearchCriteria ครับ

ส่วนที่ปุ่มแล้วแต่คุณอยากว่าให้มันต่อเนื่องกันใหม

หรือถ้าอยากค้นหาแบบเดี่ยวๆ ก็ใส่ โค้ดที่ปุ่ม
โดยแก้ sql เป็น

โค๊ด: [Select]
sql = "SELECT * FROM ptt WHERE [Name] like '*" & Nz(Me.TextSearch, "*") "'"
ก็พอ
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

62
อ่อเดียวแก้ให้ใหม่ครับ ชื่อถ้าพิมพ์ไม่เหมือนทุกตัวมันจะไม่ขึ้น ถ้าจะให้พิมพ์แค่บางตัวแล้วขึ้น ต้องใบ้ Like  เข้ามาเพิ่ม เดี่ยวแก้ให้

แก้เป็นแบบนี้ครับ
โค๊ด: [Select]
sql = "SELECT * FROM Mytable WHERE [Name] like '*" & Nz(Me.TextSearch, "*") & "*' and [Sex] like '" & Nz(Me.Combo1, "*") & "' and [Dep] like '" & Nz(Me.Combo2, "*") & "' and [Age]  like '" & Nz(Me.Combo3, "*") & "'"
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

63
Msgbox กรณีไหนครับ ?

เช่น แจ้งว่า ไม่พบข้อมูล
     แจ้งว่าเจอข้อมูล  จำนวน .... รายการ
     แจ้งว่า........

หรือการแจ้งกรณีที่ยังไม่ได้กรอกชื่อให้กรอกก่อนก็ใช้แบบนี้
Private CmdSearch_Click
if isnull(me.textsearch) then
MsgBox "กรุณาใส่ชื่อก่อน", vbInformation, "สถานะการค้นหา"
else
Cbosex = null
cboAge = null
cboDep = null
SearchCriteria
end if
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

64
seachcombo คืออะไรเอาออกได้ไหม

เหมือนมันทำงานซ้ำซ้อนกันอยู่

และตรง CmdSearch_Click เอาโค้ดออกให้หมดให้เหลือแค่
SearchCriteria พอ ถ้าอยากให้ที่ปุ่ม ค้นหาหาเฉพาะชื่อ ไม่ให้เงื่อนไขของ อายุ เพศ และ แผนกเข้ามาเกี่ยวข้องก็กำหนดให้คอมโบบ๊อกอื่นๆ มีค่า null ก่อนได้เช่น
Private CmdSearch_Click
Cbosex = null
cboAge = null
cboDep = null
SearchCriteria
End Sub

หรือถ้าต้องการกำหนดการค้นหาเฉพาะตัวมันเองเวลากดค้นหา
ที่ Private CmdSearch_Click
ก็ไม่ต้องใส่ SearchCriteria เข้าไป
ใส่เฉพาะ Combobox ที่ใช้ในการค้นหาก็พอ

ท่านสามารถุ Copy Code มาวางในนี้เพื่อง่ายต่อการช่วยแก้ไขมากกว่ารูปนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

65
สามารถใช้ ApplyFilter หรือ Filter ก็ได้ครับ

หรือใช้การค้นหาแบบ multiple Criteria ก็ได้ครับผมว่ามันสะดวกดีนะเช่น
โดยสร้าง Sub ไว้เรียกใช้เช่น
Sub SearchCriteria
Dim sql as string
sql = "SELECT * FROM ptt WHERE [Name] like '" & Nz(Me.TextSearch, "*") & "' and [Sex] like '" & Nz(Me.CboSex, "*") & "' and [Dep] like '" & Nz(Me.CboDep, "*") "' and [Age] like '" & Nz(Me.CboAge, "*") & "'"
แล้วตามด้วยโค้ดเดิม
forms......................RecordSource = sql
forms.......................Requery
end sub

แล้วหา Event เช่น Call SearchCriteria เรียกใช้ได้เลยเช่น
1.ใส่ที่ปุ่ม Search  Event Click
2.ที่คอมโบบ๊อกทั้งสอง Event Afterupdate
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

66
โจทย์ข้อ 1 กับ 2

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

67
สอบถามเพิ่ม
1.เลือก dropdown คือต้องการ เลือกชื่อคิวรี่ที่จะเอามาแสดงผลใช่ไหมครับ
2.เลือก Picking นี้เลือกด้วยทุกครั้งไหมครับ หรือ เลือกบางครั้ง

โพสต์นี้ได้รับคำขอบคุณจาก: ชวลิต เสนะสุทธิ

68
งงตรง 2 GB ครับ คือขนาดสูงสุดในการแนบเข้า/ไฟล์รูป หรือ ขนาดฐานข้อมูลทั้งหมดต่อในไฟล์ Access เราครับ

ทั้งหมดคับ ไม่ใช่เฉพาะรูปภาพ
Table size = 2 gigabyte minus the space needed for the system objects
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

69
ลองดูความเห็นนี้ครับ
https://www.thai-access.com/yeadram_view.php?topic_id=5120
โพสต์นี้ได้รับคำขอบคุณจาก: Max

70
ลองดูตัวอย่างนะครับ
ใช้การเช็คเงื่อนไขโดยใช้ Field Mcode มาแยกหมวดหมู่
โพสต์นี้ได้รับคำขอบคุณจาก: Pongsak

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

72
ที่ปุ่มปริ้นใส่แบบนี้ครับ โค้ดจะไปจับ ID ของแต่ละ Record ที่มีบนฟอร์ม มาแสดงในรายงานแบบเดียวกัน

โค๊ด: [Select]
Dim rsc As DAO.Recordset
Dim StrWhere As String
     Set rsc = Forms![Navigation_Form]![NavigationSubform]![PTT].Form.RecordsetClone
        rsc.MoveFirst
     Do While Not rsc.EOF
        StrWhere = StrWhere & " OR ID=" & rsc!ID
        rsc.MoveNext
     Loop
        If Len(StrWhere) > 0 Then
           StrWhere = Right(StrWhere, Len(StrWhere) - 4)
        End If
     DoCmd.OpenReport "ptt", acViewPreview, , StrWhere
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

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