ต้องการตัดคำด้านซ้าย ภายใต้2เงื่อนไขค่ะ


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

28 พ.ย. 64 , 21:09:57
อ่าน 353 ครั้ง

มาลี

หนูมีข้อมูลในคิวรี่ อยู่ชุดหนึ่ง สมมติดังนี้นะคะ

1 สวัสดี ตอนเช้า มีเว้นวรรค
2 สวัสดี(ตอนเช้า) ไม่เว้นวรรคแต่มีวงเล็บ

ความต้องการของหนูก็คือ ไม่ว่าจะมีเว้นวรรคหรือไม่เว้นวรรคแต่มีวงเล็บก็ตาม ให้ตัดเอาคำว่า สวัสดี มาเพียงอย่างเดียวค่ะ
หนูพยายามทำแล้วแต่ไม่สำเร็จ มันจะได้เพียงอย่างใดอย่างหนึ่ง คือ
ถ้าตัดโดยเงื่อนไข เว้นวรรค ข้อมูลที่เป็นวงเล็บแต่ไม่เว้นวรรค ก็จะติดออกมา
ครั้นตัดโดยเงื่อนไขเมื่อเจอวงเว็บ ข้อมูลที่เว้นวรรค ก็จะขึ้น Error

หนูลองใช้ประมาณนี้ คำทักทาย: Left([ทักทาย],InStr([ทักทาย]," ")-1) ลองสลับดัดแปลงดูแล้วแต่ไม่สำเร็จค่ะ

ขอรบกวนอาจารย์ทุกท่านด้วยนะคะ
« แก้ไขครั้งสุดท้าย: 28 พ.ย. 64 , 21:26:05 โดย มาลี »

 

28 พ.ย. 64 , 22:20:07
ตอบกลับ #1

OddyWriter

ข้างหน้าเหมือนกัน ใช้ Left อย่างเดียวก็พอครับ
=LEFT([ทักทาย],6)
วิกฤติโควิดทำให้ร้อนเงิน
ใครอยากจ้างทำฐานข้อมูล สอนวางระบบฐานข้อมูล Excel/ Access/ VBA Excel/ VBA Access/ SQL Server/ Database Design
แม้กระทั่งดูดวง ก็ติดต่อได้นะครับ
 
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

29 พ.ย. 64 , 05:04:13
ตอบกลับ #2

มาลี

ยังไม่สำเร็จเลยค่ะอาจารย์
หนูผิดเองที่อธิบายคำถามไม่เคลียร์ โดยตัวอย่าง สวัสดี เป็นเพียงข้อความสมมติเพื่อให้เห็นภาพเท่านั้นค่ะ
จริงๆแล้วประโยคข้อความและจำนวนอักขระข้างหน้านั้นมันไม่แน่นอนเสมอไปค่ะอาจารย์ แต่รูปแบบจะเหมือนกันคือ

มี ข้อความแรก และ ข้อความที่สอง ปัญหาคือผู้ใช้มักจะกรอกกันไม่แน่นอน
บ้างก็เว้นวรรค1-2เคาะ บ้างก็ไม่ได้เว้นวรรค แต่ใส่วงเล็บเปิดวงเล็บปิดให้กับ ข้อความที่สอง

เช่น คลองรังสิต ฝั่งเหนือ เป็น คลองรังสิต(ฝั่งเหนือ)
หรือ ภาคใต้ ฝั่งอ่าวไทย เป็น ภาคใต้(ฝั่งอ่าวไทย) ดังนี้เป็นต้นค่ะ

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

 

29 พ.ย. 64 , 10:49:31
ตอบกลับ #3

OddyWriter

ใช้ Update Query เปลี่ยน ( เป็น Space แล้วใช้คำสั่งครับ
วิกฤติโควิดทำให้ร้อนเงิน
ใครอยากจ้างทำฐานข้อมูล สอนวางระบบฐานข้อมูล Excel/ Access/ VBA Excel/ VBA Access/ SQL Server/ Database Design
แม้กระทั่งดูดวง ก็ติดต่อได้นะครับ
 
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

29 พ.ย. 64 , 12:41:16
ตอบกลับ #4

PNR

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

ใช้การสร้างฟังชั่นในการแสดงผลในคิวรี่นะครับ
วิธีการ
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([ทักทาย])
« แก้ไขครั้งสุดท้าย: 29 พ.ย. 64 , 14:57:47 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, OddyWriter, มาลี

29 พ.ย. 64 , 12:49:17
ตอบกลับ #5

OddyWriter

หายไปตั้งนาน
วิกฤติโควิดทำให้ร้อนเงิน
ใครอยากจ้างทำฐานข้อมูล สอนวางระบบฐานข้อมูล Excel/ Access/ VBA Excel/ VBA Access/ SQL Server/ Database Design
แม้กระทั่งดูดวง ก็ติดต่อได้นะครับ
 
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี, PNR

29 พ.ย. 64 , 17:44:18
ตอบกลับ #6

มาลี

เย้.. :shout: สำเร็จแล้ว
ใช้ฟังชั่นตามที่อาจารย์  PNR แนะนำ
สามารถตอบโจทย์ได้ครบถ้วนตามต้องการเลยค่ะ

ขอบคุณอาจารย์ทั้งสองท่านนะคะ

 


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