ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

22 เม.ย. 62 , 10:43:16
อ่าน 971 ครั้ง

thaworn Panchan

  • สมาชิกไท.Access
  • กระทู้: 12

    • ดูรายละเอียด

Private Sub CmdFind_Click()
Dim strFindName As String

If IsNull(Me.TxtFind) Or (Me.TxtFind) = “” Then
MsgBox “ใส่ข้อมูลไม่ครบ โปรดตรวจสอบ”
Me.TxtFind.SetFocus
Else
strFindName = “SELECT * FROM [บุคคลากร] WHERE [ชื่อ-นามสกุล] LIKE ‘” & TxtFind & “*’;”
Me.RecordSource = strFindName
Me.Requery
Me.TxtFind.SetFocus
Me.TxtFind = Null
End If

สวัสดีครับ…
คือจากตัวอย่าง Code ที่ผมแนบมา ผมอยากให้ทำงานเพิ่ม คือ
1.เมื่อค้นแล้ว ไม่พบเรคคอร์ด จะต้อง msgbox “ไม่พบข้อมูล”
2.เมื่อค้นแล้ว พบมากกว่า 1 เรคคอร์ด ให้แสดง msgbox “พบ..เรคคอร์ด” (เพราะโปรแกรมต้องแสดงรูปด้วย)
ขอขอบคุณน่ะครับ

 

22 เม.ย. 62 , 12:35:08
ตอบกลับ #1

ปิ่นณรงค์

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #1 เมื่อ: 22 เม.ย. 62 , 12:35:08 »
Private Sub CmdFind_Click()
Dim strFindName As String
Dim intCount As Integer

If IsNull(Me.TxtFind) Or (Me.TxtFind) = "" Then
MsgBox "ใส่ข้อมูลไม่ครบ โปรดตรวจสอบ"
Me.TxtFind.SetFocus
Else
strFindName = "SELECT * FROM [บุคคลากร] WHERE [ชื่อ-นามสกุล] LIKE '" & TxtFind & "*';"
Me.RecordSource = strFindName

intCount = DCount("*", "บุคคลากร", "[ชื่อ-นามสกุล] = '" & [Forms]![ชื่อฟอร์ม]![TxtFind] & "'")

If intCount > 1 Then
MsgBox "พบ " & intCount & " เรคคอร์ด", vbInformation, "ค้นหาRecord"

ElseIf intCount = 0 Then
MsgBox "ไม่พบข้อมูล", vbCritical, "ค้นหาRecord"
End If

Me.Requery
Me.TxtFind.SetFocus
Me.TxtFind = Null
End If
End Sub

ลองดูครับ ตรงชื่อฟอร์มที่ผมใส่สีแดง ใส่ชื่อฟอร์มเข้าไปด้วยนะครับ
« แก้ไขครั้งสุดท้าย: 22 เม.ย. 62 , 13:11:12 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: thaworn Panchan

22 เม.ย. 62 , 16:09:13
ตอบกลับ #2

thaworn Panchan

  • สมาชิกไท.Access
  • กระทู้: 12

    • ดูรายละเอียด

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #2 เมื่อ: 22 เม.ย. 62 , 16:09:13 »
ขอขอบคุณ  คุณปิ่นณรงค์มากครับ...ผมจะนำไปใช้เลยครับ...ขอบคุณครับ

 

25 เม.ย. 62 , 15:03:59
ตอบกลับ #3

thaworn Panchan

  • สมาชิกไท.Access
  • กระทู้: 12

    • ดูรายละเอียด

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #3 เมื่อ: 25 เม.ย. 62 , 15:03:59 »
สวัสดีครับ ขอถามเพิ่มอีกน่ะครับ จากคำสั่ง intCount = DCount("*", "บุคคลากร", "[ชื่อ-นามสกุล] = '" & [Forms]![ชื่อฟอร์ม]![TxtFind] & "'")
ผมอยากใหค้นเจอเพียงบางส่วนที่อยู่ข้างหน้าก็ถือว่าเจอ เช่น
ข้อมูลมี[ชื่อ-นามสกุล]= "กขค","กกค" ...เป็นต้น
ทีนี้เมื่อเราพิมพ์คำค้นใน [TxtFind] ว่า "ก"  ผลที่ได้คือ intCount = 0  ซึ่ง ผมอยากให้มันค้นเจอ คือ intCount = 2
และเมื่อพิมพ์คำค้นใน [TxtFind] ว่า "กก"   ผลที่ได้คือ intCount = 0  ซึ่ง ผมอยากให้มันค้นเจอ คือ intCount = 1
อย่างนี้จะต้องแก้Code อย่างไรครับ...ขอขอบคุณครับ

 

25 เม.ย. 62 , 15:14:49
ตอบกลับ #4

ปิ่นณรงค์

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #4 เมื่อ: 25 เม.ย. 62 , 15:14:49 »
โค๊ด: [Select]
intCount = DCount("*", "[บุคคลากร]", "[ชื่อ-นามสกุล] Like """ & [Forms]![ชื่อฟอร์ม]![TxtFind] & "*""")
การทำงาน ถ้าที่ textbox ถ้าเราคีย์ กก ผลการทำงานคือนับถ้าข้อมูลมี กก* ครับ ถ้าข้อมูลมี กกข กกค กขค ผลนับจะเท่ากับ 2 แต่ถ้าพิมพ์ ค จะไม่เจอเพราะไม่ได้อยู่ด้านหน้าของข้อความครับ

คือด้านหลังของข้อความเป็นอะไรก็ได้ แต่จะนับถ้ามีด้านหน้าของข้อความไปเรื่อยๆครับ
« แก้ไขครั้งสุดท้าย: 26 เม.ย. 62 , 08:08:38 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: thaworn Panchan

25 เม.ย. 62 , 16:27:42
ตอบกลับ #5

thaworn Panchan

  • สมาชิกไท.Access
  • กระทู้: 12

    • ดูรายละเอียด

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #5 เมื่อ: 25 เม.ย. 62 , 16:27:42 »
ขอขอบคุณ  คุณปิ่นณรงค์อีกครั้งน่ะครับ..

 

29 เม.ย. 62 , 16:47:04
ตอบกลับ #6

thaworn Panchan

  • สมาชิกไท.Access
  • กระทู้: 12

    • ดูรายละเอียด

สร้างฟอร์มให้ค้นหาข้อมูลบุคคลากร โดยให้ค้นได้ 2 ทาง เพื่อให้ผู้มาติดต่อใช้งานค้นหา คือ
1.ค้นจากชื่อ เลยสร้างฟอร์มให้มี datasource เป็นตาราง "ข้อมูลส่วนตัว" ใช้ค้นข้อมูลจากชื่อ เป็นฟอร์มหลัก  และ
2.ค้นจากแผนกงาน เลยสร้างเป็น subform ที่มี datasource เป็นตาราง"แผนกงาน" ใช้ค้นข้อมูลจากแผนกงาน เป็นฟอร์มย่อยที่อยู่ในฟอร์มหลัก (ข้อ 1.)
     ทีนี่อยากจะขอให้ช่วย คือ เมื่อผู้ใช้บริการคนแรก มา ใส่ชื่อพนักงาน ค้นหา แล้ว พบ และแสดงข้อมูลมาแล้ว แต่เมื่อผู้ใช้คบริการคนถัดไปมาจะค้นหาจากแผนกงาน แต่ข้อมูลของบุคคลากรคนเก่ายังค้างอยู่ที่หน้าจอทำให้เมื่อค้นจากแผนกงานได้ข้อมูลใหม่มาแล้วแต่หน้าจอฟอร์มหลักยังแสดงข้อมูลที่เกิดจากการค้นหาของคนแรกอยู่ จะล้างข้อมูลที่เกิดจากการค้นหาของคนแรกได้อย่างไรครับ...ขอขอบคุณครับ


 

29 เม.ย. 62 , 17:00:59
ตอบกลับ #7

ปิ่นณรงค์

สร้างฟอร์มให้ค้นหาข้อมูลบุคคลากร โดยให้ค้นได้ 2 ทาง เพื่อให้ผู้มาติดต่อใช้งานค้นหา คือ
1.ค้นจากชื่อ เลยสร้างฟอร์มให้มี datasource เป็นตาราง "ข้อมูลส่วนตัว" ใช้ค้นข้อมูลจากชื่อ เป็นฟอร์มหลัก  และ
2.ค้นจากแผนกงาน เลยสร้างเป็น subform ที่มี datasource เป็นตาราง"แผนกงาน" ใช้ค้นข้อมูลจากแผนกงาน เป็นฟอร์มย่อยที่อยู่ในฟอร์มหลัก (ข้อ 1.)
     ทีนี่อยากจะขอให้ช่วย คือ เมื่อผู้ใช้บริการคนแรก มา ใส่ชื่อพนักงาน ค้นหา แล้ว พบ และแสดงข้อมูลมาแล้ว แต่เมื่อผู้ใช้คบริการคนถัดไปมาจะค้นหาจากแผนกงาน แต่ข้อมูลของบุคคลากรคนเก่ายังค้างอยู่ที่หน้าจอทำให้เมื่อค้นจากแผนกงานได้ข้อมูลใหม่มาแล้วแต่หน้าจอฟอร์มหลักยังแสดงข้อมูลที่เกิดจากการค้นหาของคนแรกอยู่ จะล้างข้อมูลที่เกิดจากการค้นหาของคนแรกได้อย่างไรครับ...ขอขอบคุณครับ
ผมสมมุติ textbox ค้นหาจากชื่อว่า txtFindName
           textbox ค้นหาจากแผนกว่า txtFindDepartment
           Form หลักชื่อ FrmMain

ถ้าต้องการให้ล้างค่าที่กรอกไว้ของ txtFindName ออกไป ก็กำหนด Event GotFocus เอาก็ได้ครับเช่น

Private Sub txtFindDepartment_GotFocus()
Forms!frmMain.txtFindName = Null
Forms!frmMain.txtFindName.Requery
Me.txtFindDepartment.Requery
End Sub

ที่ผมสั่ง Forms!frmMain.txtFindName.Requery เผื่อว่าคุณใช้การแสดง การค้นหาโดยใช้ Criteria จาก Query
พอเราสั่ง = null แล้ว Requery ข้อมูลที่แสดงก็จะหายไปครับ
« แก้ไขครั้งสุดท้าย: 29 เม.ย. 62 , 17:12:23 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: thaworn Panchan

30 เม.ย. 62 , 11:12:01
ตอบกลับ #8

thaworn Panchan

  • สมาชิกไท.Access
  • กระทู้: 12

    • ดูรายละเอียด

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #8 เมื่อ: 30 เม.ย. 62 , 11:12:01 »
ขอขอบคุณมากน่ะครับ..แต่ติดอีกนิด คือ ค่าที่กรอกใน txtFindName หายไปครับ แต่ค่าที่แสดงจากการค้นหานั้นไม่หายไปครับ ซึ่งการค้นหาไม่ได้ใช้คิวรี่ แต่ใช้คำสั่งนี้น่ะครับ
strFindName = "SELECT * FROM [Personal_ST26] WHERE [MName] LIKE '" & TxtFindName & "*';"
Me.RecordSource = strFindName
Me.ImaPic.Picture = CurrentProject.Path & Me.TxtPicturePath   'ใช้แสดงรูปน่ะครับ
จะล้างข้อมูลที่ค้นเจอนี้อย่างไรครับ...ขอขอบคุณมากครับ

 

30 เม.ย. 62 , 13:32:32
ตอบกลับ #9

ปิ่นณรงค์

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #9 เมื่อ: 30 เม.ย. 62 , 13:32:32 »
ถ้าแบบนี้ละครับ

โค๊ด: [Select]
Private Sub TxtFindDapartment_GotFocus()
Dim strFindName As String
If Not IsNull(Me.Parent.TxtFindName) Then
Me.Parent.TxtFindName = Null
Me.Parent.TxtPicturePath = ""
strFindName = "SELECT * FROM [Personal_ST26] WHERE [MName] = null ;"
Me.Parent.RecordSource = strFindName
End Sub
« แก้ไขครั้งสุดท้าย: 30 เม.ย. 62 , 17:15:55 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: thaworn Panchan

30 เม.ย. 62 , 16:10:32
ตอบกลับ #10

thaworn Panchan

  • สมาชิกไท.Access
  • กระทู้: 12

    • ดูรายละเอียด

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #10 เมื่อ: 30 เม.ย. 62 , 16:10:32 »
สวัสดีครับ....เมื่อแก้โค้ดแล้ว รันดู..ติดปัญหาคือ
run-time error 2467
นิพจน์ที่คุณใส่นั้นอ้างไปถึงวัตถุที่ปิดอยู่หรือไม่มีอยู่
และเมื่อกด debug  จะมีไฮไลท์ขึ้นที่ 
Me.Parent.ImaPic.Picture = ""
ไม่ทราบจะแก้อย่างไรดีครับ...ขอรบกวนน่ะครับ

 

30 เม.ย. 62 , 17:16:19
ตอบกลับ #11

ปิ่นณรงค์

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #11 เมื่อ: 30 เม.ย. 62 , 17:16:19 »
ถ้าแบบนี้ละครับ ถ้าไม่ได้ก็ teamviewer ไปดูให้ก็ได้นะครับ  :cool: :cool:

โค๊ด: [Select]
Private Sub TxtFindDapartment_GotFocus()
Dim strFindName As String
If Not IsNull(Me.Parent.TxtFindName) Then
Me.Parent.TxtFindName = Null
Me.Parent.TxtPicturePath = ""
strFindName = "SELECT * FROM [Personal_ST26] WHERE [MName] = null ;"
Me.Parent.RecordSource = strFindName
End Sub
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: thaworn Panchan

01 พ.ค. 62 , 08:54:35
ตอบกลับ #12

thaworn Panchan

  • สมาชิกไท.Access
  • กระทู้: 12

    • ดูรายละเอียด

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #12 เมื่อ: 01 พ.ค. 62 , 08:54:35 »
สวัสดีครับ...คือผมเพิ่งเป็นสมาชิก ไม่รู้จัก teamviewer และยินดีให้ดูให้น่ะครับ  ผมจะต้องทำอย่างไรบ้างครับ...ขอขอบคุณครับ

 

01 พ.ค. 62 , 09:06:59
ตอบกลับ #13

OddyWriter

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #13 เมื่อ: 01 พ.ค. 62 , 09:06:59 »
เข้าไปที่นี่ เลือกตัวฟรีครับ

https://www.teamviewer.com/th/ link
กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 
โพสต์นี้ได้รับคำขอบคุณจาก: thaworn Panchan

01 พ.ค. 62 , 10:27:43
ตอบกลับ #14

thaworn Panchan

  • สมาชิกไท.Access
  • กระทู้: 12

    • ดูรายละเอียด

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #14 เมื่อ: 01 พ.ค. 62 , 10:27:43 »
เข้าไม่ได้ครับ..
ไม่สามารถเข้าถึงเว็บไซต์นี้ download.teamviewer.com ใช้เวลาตอบกลับนานเกินไป
ลอง:

ตรวจสอบการเชื่อมต่อ
ตรวจสอบพร็อกซีและไฟร์วอลล์
เรียกใช้การวินิจฉัยเครือข่ายของ Windows
ERR_TIMED_OUT


..มีวิธีอื่นไหมครับ  ขอบคุณครับ

 

01 พ.ค. 62 , 10:34:09
ตอบกลับ #15

ปิ่นณรงค์

: ค้นหาแล้วไม่เจอให้แสดง msgbox เตือน
« ตอบกลับ #15 เมื่อ: 01 พ.ค. 62 , 10:34:09 »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: thaworn Panchan


บอร์ดเรียนรู้ Access สำหรับคนไทย