แสดงกระทู้

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 ... 3 4 5 [6] 7 8 9 ... 46
91
ผมมี 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)

92
เราสามารถใช้ & เพื่อใช้ 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, "*") & "'"


93
เพิ่มโค้ดแบบนี้ จากเดิมมีอันเดียวคือ 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

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

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

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

95
แก้โค้ดเป็น
โค๊ด: [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

96
ห้อง MS Access / : การออกแบบตาราง
« เมื่อ: 21 ก.ค. 64 , 12:34:03 »
ตารางข้อ 1 กับ 4 เป็น Description
โดยตารางข้อ 1 ชื่อว่า tblBookType ตารางควรมี BookTypeID  , BookTypeName
     ตารางข้อ 2 ชื่อว่า tblBookDATA ตารางผมถือว่าเป็นตารางหลักในการรวบรวมข้อมูล ควรมี Pk หรือ คีย์หลักไว้
                   ตารางควรมี   BookNumber ,BooktypeID , onDate  , DepartmentID , BookStatus , StaffID
     ตารางข้อ 3 ชื่อว่า tblStaff  เก็บรายละเอียดเจ้าหน้าที่ผู้รับผิดชอบ
                   ตารางควรมีฟิลล์  StaffID , StaffName , Department , Tel
     ตารางข้อ 4 ชื่อว่า tblDepartment ข้อมูลกลุ่มงาน
                    ควรมี DepartmentID  , DepartmentName

ส่วนที่เป็นสีแดง คือส่วนที่เป็นคีย์หลักหรือ(PK)
ลองสร้างตารางตามนี้ก่อนนะครับ

ถ้าให้ชัวรออาจารย์ ODDY มาเสริมให้แก้เก่งออกแบบฐานครับ

97

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



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


จากโค้ดที่ให้ไป แก้ชื่อตารางจาก mytable เป็น ptt ก้อนครับผมลืมแก้ให้ :prettiness: :prettiness:

98

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

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

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

โค๊ด: [Select]
sql = "SELECT * FROM ptt WHERE [Name] like '*" & Nz(Me.TextSearch, "*") "'"
ก็พอ

99
อ่อเดียวแก้ให้ใหม่ครับ ชื่อถ้าพิมพ์ไม่เหมือนทุกตัวมันจะไม่ขึ้น ถ้าจะให้พิมพ์แค่บางตัวแล้วขึ้น ต้องใบ้ 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, "*") & "'"

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

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

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

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

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

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

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

ท่านสามารถุ Copy Code มาวางในนี้เพื่อง่ายต่อการช่วยแก้ไขมากกว่ารูปนะครับ

102
ห้อง MS Access / : การออกแบบตาราง
« เมื่อ: 21 ก.ค. 64 , 10:28:59 »
เพิ่งเริ่มศึกษา access   
อยากให้ช่วยแนะนำการออกแบบตารางควบคุมหนังสือราชการ ประมาณว่ารับเมื่อไหร่ จากไหน ใครรับผิดชอบ เป็น 4 ตารางแบบนี้ถูกไหมครับ

ตารางควบคุมงาน (รับเรื่อง)
1.ข้อมูลประเภทของหนังสือ (1.ร้องเรียน 2.ร้องทุกข์ 3.อุทธรณ์ 4.ละเมิด 5.ศาล)
2.ข้อมูลรายละเอียดของงาน (วันที่รับ เลขที่หนังสือ รับเรื่องจาก การดำเนินการ ผู้รับผิดชอบ )
3.ข้อมูลเจ้าหน้าที่ผู้รับผิดชอบ (ชื่อ สังกัดกลุ่มงาน  เบอร์โทร)
4.ข้อมูลกลุ่มงาน (กลุ่มงานสืบสวน กลุ่มงานตรวจสำนวน กลุ่มงานอุทธรณ์ กลุ่มงานเสริมสร้าง)

ยังขาด Primary Key ของทุกตารางครับ ลองดูคลิบการสร้าง ER DIAGRAM ของคุณ TTT  มีการแนะนำการสร้าง
ความสัมพันธ์ และอื่นๆ ครบครัน

https://www.youtube.com/watch?v=HuztS7t9hZc

103
สามารถใช้ 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

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

ปล.ลองแก้ระบบตามที่อาจารย์ OddyWriter แนะนำด้วยนะครับ

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


106
ยังไม่เข้าใจโจทย์ของคุณนะครับ

แต่พอมีตัวอย่างแนวๆ นี้จากกระทู้เก่าๆ มาให้ดู

https://www.thai-access.com/yeadram_view.php?topic_id=4660

https://www.thai-access.com/index.php?topic=1027.msg4533#msg4533


107
ไม่เอาค่าติด - ถ้ามีติดลบให้แสดงหมดอายุ ใช่ไหม ?
ถ้าใช่ลองแบบนี้

DateExp: IIf((CInt(CDate([ptts1_Exp])-CDate(Date()))/28)<0,"หมดอายุ",CInt(CDate([ptts1_Exp])-CDate(Date()))/28)

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

ทั้งหมดคับ ไม่ใช่เฉพาะรูปภาพ
Table size = 2 gigabyte minus the space needed for the system objects

หน้า: 1 ... 3 4 5 [6] 7 8 9 ... 46