ในคิวรี่ สามารถแทนที่ตัวเลขด้วยตัวอักษรตามเงื่อนไขได้ไหมคะ


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

07 ก.พ. 66 , 22:21:57
อ่าน 342 ครั้ง

มาลี

ในคิวรี่ มีข้อมูลตัวเลขและเครื่องหมาย-อยู่รวมกันประมาณตามตัวอย่างนี้ค่ะ
8-1234
9-1567
ความต้องการของหนูก็คือ

:หากตัวเลขข้างหน้ารวมเครื่องหมาย- คือ 8-1 ให้ตัด8-1ทิ้งไป แล้วแทนที่ด้วยอักษร A- ส่วนตัวเลข สามหลักท้าย ให้ปล่อยไว้เช่นเดิม เพื่อให้เป็น A-234

:หากตัวเลขข้างหน้ารวมเครื่องหมาย- คือ 9-1 ให้ตัด9-1ทิ้งไป แล้วแทนที่ด้วยอักษร B- ส่วนตัวเลข สามหลักท้าย ให้ปล่อยไว้เช่นเดิม เพื่อให้เป็น B-567

ประมาณนี้ค่ะ ขอคำแนะนำด้วยนะคะ ขอบคุณค่ะ

หมายเหตุ รูปแบบของข้อมูลเป็นแบบเดียวกันทั้งหมดคือ 0-0000
« แก้ไขครั้งสุดท้าย: 08 ก.พ. 66 , 15:24:15 โดย มาลี »

 

08 ก.พ. 66 , 16:42:05
ตอบกลับ #1

Un

ถ้า Format มันชัดแบบนี้ ทำไมไม่ใช้ Left Right หล่ะครับ แล้วก็ใส่ IIF ไปตามเงื่อนไข
IIF(Left([ฟิลด์],3)='8-1','A-'&Right([ฟิลด์],3),'B-'&Right([ฟิลด์],3))
ไม่รู้ใช่แบบนี้ป่าว

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

08 ก.พ. 66 , 20:04:52
ตอบกลับ #2

มาลี

เกือบจะได้แล้วแต่ยังไม่ได้ค่ะอาจารย์
หนูเอาที่อาจารย์แนะนำมาดัดแปลงเป็นดังนี้ค่ะ

รหัสสินค้า: IIf(Left([เขตข้อมูล2],3)='5-0','A-' & Right([เขตข้อมูล2],4),'B-' & Right([เขตข้อมูล2],4))

ผลที่ได้ตอนนี้คือ ได้ตัวเลขสามหลักท้ายมาแสดงได้ตรงแล้ว แต่ตัวอักษรไม่ยอมเปลี่ยนค่ะ
คือ ไม่ว่าตัวเลขแรกจะเป็น 5-1 หรือ 6-1 มันก็จะแสดงอักษร B- อยู่อย่างเดียวตลอดเลยไม่ยอมเปลี่ยนเป็น A- ค่ะ
ไม่ทราบว่าหนูทำผิดตรงไหนหรือเปล่า..?

ขออนุญาติถามเผื่อไว้ล่วงหน้าเลยนะคะ
สมมติอนาคตตัวเลขข้างหน้าอจาจมีการเปลี่ยนเป็นเลขอื่น ก็จะเผื่อตัวอักษรอื่นไว้รองรับล่วงหน้า เช่น
 
5-1xxx ให้แทนที่เป็น A-xxx
6-1xxx ให้แทนที่เป็น B-xxx
7-1xxx ให้แทนที่เป็น C-xxx
8-1xxx ให้แทนที่เป็น D-xxx
9-1xxx ให้แทนที่เป็น E-xxx

แบบนี้สามารถทำดักเผื่อไว้ด้วยได้ไหมคะ

« แก้ไขครั้งสุดท้าย: 08 ก.พ. 66 , 20:20:53 โดย มาลี »

 

09 ก.พ. 66 , 09:48:44
ตอบกลับ #3

มาลี

ตอนนี้สามารถตอบโจทย์ได้แล้วค่ะ
เอาแนวคิดของอาจารย์มาประยุกต์ดัดแปลงซึ่งอาจหลายขั้นตอนหน่อย
โดยเพิ่มฟิลด์ขึ้นมาใหม่อีก4ฟิลด์
-ฟิลด์ที่1 ดึงค่าตัวเลขซ้ายหลักแรกออกมา
-ฟิลด์ที่2 เอาค่าตัวเลขที่ได้จากฟิลด์ที่1มาแทนค่าด้วยตัวอักษร
-ฟิลด์ที่3 ดึงค่าตัวเลขสามหลักขวาออกมา
-ฟิลด์ที่4 เอาค่าจากฟิลด์ที่2มารวมกับฟิลด์ที่3
สามารถตอบโจทย์ได้แล้วค่ะ
ในเบื้องต้นก็คงใช้แบบนี้ไปก่อนจนกว่าจะมีวิธีที่ดีกว่านี้ค่ะ

 

09 ก.พ. 66 , 09:49:37
ตอบกลับ #4

chai

ลองฟังก์ชั่น Replace() ดูครับ

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

09 ก.พ. 66 , 09:53:49
ตอบกลับ #5

มาลี

ลองฟังก์ชั่น Replace() ดูครับ

วิธีใช้ทำอย่างไรค่ะ

 

09 ก.พ. 66 , 11:04:11
ตอบกลับ #6

chai

Option Compare Database

Function setNewText(text As String) As String
Dim strText As String
Dim newString As String
strText = Left(text, 3)

Select Case strText
Case "5-1": newString = Replace(text, strText, "A-")
Case "6-1": newString = Replace(text, strText, "B-")
Case "7-1": newString = Replace(text, strText, "C-")
Case "8-1": newString = Replace(text, strText, "D-")
Case "9-1": newString = Replace(text, strText, "E-")
Case Else: newString = "Error"
End Select
setNewText = newString
End Function

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

09 ก.พ. 66 , 18:21:32
ตอบกลับ #7

มาลี

:shout: เย้..ได้ตรงตามที่ต้องการเลย
หนูแอบเอาโมดูลในไฟล์ demo ของอาจารย์มาใช้ แล้วปรับแต่งคิวรี่เดิมนิดหน่อยก็ใช้ได้เยี่ยมเลยค่ะ
ขอบคุณ อ.chai มากนะคะ อ.Un ด้วยค่ะ
« แก้ไขครั้งสุดท้าย: 09 ก.พ. 66 , 19:19:02 โดย มาลี »

 


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


 

Sitemap 1 2 3 4 5