แสดงกระทู้

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 - 001Jetnipit

หน้า: 1 2 3 [4] 5
49
เปลี่ยนจาก Count เป็น Sum ธรรมดาได้เลยเช่น
ถ้าคุณมีข้อมูลใน Field แยกประเภท ข้อมูล จะมี สัญญาจ้าง และ พนักงานประจำ

เช่น
[แยกประเภท]
สัญญาจ้าง
สัญญาจ้าง
พนักงานประจำ
สัญญาจ้าง
พนักงานประจำ
สัญญาจ้าง

SQL คือ

SELECT Sum(IIf([แยกประเภท]="สัญญาจ้าง",1,0)) AS สัญญาจ้าง, Sum(IIf([แยกประเภท]="พนักงานประจำ",1,0)) AS พนักงานประจำ
FROM [ชื่อตารางหรือคิวรี่];


ข้อมูลจะได้
สัญญาจ้าง lพนักงานประจำ
      4     l       2


กรณีที่ Field แยกประเภท จะระบุเฉพาะคนที่มีสัญญาจ้างเท่านั้น พนักงานประจำไม่ได้ระบุหรือเว้นว่างๆ ไว้แต่อยากให้คำนวนด้วย
เราก็แก้เงื่อนไข True False ให้ False = 1 ก็ได้แล้วครับเช่น

SELECT Sum(IIf([แยกประเภท]="สัญญาจ้าง",1,0)) AS สัญญาจ้าง, Sum(IIf([แยกประเภท]="สัญญาจ้าง",0,1)) AS พนักงานประจำ
FROM [ชื่อตารางหรือคิวรี่];
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

50
เสริมเพิ่มเติม
บางครั้งแปลงไฟล์ เป็น ACCDE หรือ MDE
เพื่อป้องกันการแก้ไขหรือลบโค้ด Module  สามารถใช้งานรันได้ แต่ไม่สามารถเปลี่ยนแปลงได้
เพื่อที่ป้องกันผู้ใช้จากการเข้าถึงฐานข้อมูลแบบเต็มครับ

แต่เมื่อแปลงเป็น เป็น ACCDE หรือ MDE แล้ว ถ้า Admin ผู้พัฒนาจะแก้ไขโค้ดต่างๆ ต้องทำจากตัว ACCDB หรือ MDB เท่านั้นแล้วแปลงใหม่
จะไม่สามารถแก้ไขโค้ดจาก ACCDE ได้เช่นกัน
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

51
สามารถดึงตารางที่มี Field เพศ หรือ Field กรุ๊ปเลือด มานับจำนวนโดยสร้างคิวรี่ใหม่ขึ้นมาแล้ว ใส่ sql แบบนี้

SELECT [เพศ], Count([เพศ]) AS จำนวน FROM [ชื่อตารางหรือคิวรี่]  GROUP BY [เพศ];

และถ้าจะนับจำนวน กรุ๊ปเลือด ทำแบบเดียวกัน

SELECT [กรุ๊ปเลือด], Count([กรุ๊ปเลือด]) AS จำนวน FROM [ชื่อตารางหรือคิวรี่]  GROUP BY [กรุ๊ปเลือด];
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

52
เปิดใช้งานได้เลย ถ้ามี microsoft office access
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

53
ส่ง รหัส anydesk มาทางข้อความหน่อยครับ
ผมรีโมทไปแก้ให้
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

54
โค้ดผิดครับ
แก้เป็น

Set rsc = Forms!......................Form.RecordsetClone
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

55
เนื่องจากภาษาไทยมักมีปัญหากับระบบ VBA และฐานข้อมูล
ดังนั้นแนะนำให้เปลี่ยนชื่อไฟล์เป็นภาษาอังกฤษครับ
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

56
ใช้ตัวลูกน้ำ , แล้วก็เพิ่มตัวปิดท้ายไปด้วย ,"-")
โค๊ด: [Select]
=IIf([ptts1_Exp]-Date()<90,IIf([ptts1_Exp]-Date()>30,"หมดอายุภายใน 3 เดือน","-"),"-")
ที่มา https://www.thai-access.com/index.php?topic=567.msg2498#msg2498
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

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
ยังไม่ได้ประกาศตัวแปร
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

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

61

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



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


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

62

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

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

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

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

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

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

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

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

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