กระทู้เก่าบอร์ด อ.Yeadram
3,085 7
URL.หัวข้อ /
URL
เราสามารถแยกตัวอักษรออกจากตัวเลขได้ไหมคะ
หนูสร้างฟอร์มซึ่งมีฟิลด์รหัสสินค้าสมมติว่าชื่อ Text-1 กำหนดรูปแบบไว้ตายตัวคือ ตัวอักษรหนึ่งตัวและตัวเลขอีกสี่ตัว ลักษณะดังนี้ค่ะ
A0001
ความต้องการของหนูก็คือ จะสร้างฟิลด์ที่ไม่ได้ผูกกับตารางใดเลยสัก 2 ฟิลด์อยู่บนฟอร์อมเดียวกัน สมมติว่าชื่อText-2 และ Text-3 ค่ะ
หนูอยากให้เมื่อผู้ใช้คียรหัสสินค้าในช่อง Text-1 ว่า A1234 ก็ให้แยกส่งค่าเฉพาะตัวอักษร A มาที่ช่อง Text-2
และส่งค่าเฉพาะตัวเลข 1234 มาที่ช่อง Text-3
หรือเมื่อผู้ใช้คียรหัสสินค้าในช่อง Text-1 ว่า B7890 ก็ให้แยกส่งค่าเฉพาะตัวอักษร B มาที่ช่อง Text-2
และส่งค่าเฉพาะตัวเลข 7890 มาที่ช่อง Text-3
ประมาณนี้แหละค่ะ ไม่ทราบว่าเราสามารถแยกได้ไหมคะ
หากสามารถทำได้ ก็ขอความกรุณา ช่วยเขียนโค้ดให้หนู่หน่อยนะคะ
ขอขอบคุณค่ะ
A0001
ความต้องการของหนูก็คือ จะสร้างฟิลด์ที่ไม่ได้ผูกกับตารางใดเลยสัก 2 ฟิลด์อยู่บนฟอร์อมเดียวกัน สมมติว่าชื่อText-2 และ Text-3 ค่ะ
หนูอยากให้เมื่อผู้ใช้คียรหัสสินค้าในช่อง Text-1 ว่า A1234 ก็ให้แยกส่งค่าเฉพาะตัวอักษร A มาที่ช่อง Text-2
และส่งค่าเฉพาะตัวเลข 1234 มาที่ช่อง Text-3
หรือเมื่อผู้ใช้คียรหัสสินค้าในช่อง Text-1 ว่า B7890 ก็ให้แยกส่งค่าเฉพาะตัวอักษร B มาที่ช่อง Text-2
และส่งค่าเฉพาะตัวเลข 7890 มาที่ช่อง Text-3
ประมาณนี้แหละค่ะ ไม่ทราบว่าเราสามารถแยกได้ไหมคะ
หากสามารถทำได้ ก็ขอความกรุณา ช่วยเขียนโค้ดให้หนู่หน่อยนะคะ
ขอขอบคุณค่ะ
7 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R03320
ขอบคุณค่ะอาจารย์
โค้ดที่ท่านให้มาใช้ได้เรียบร้อยตามที่หนูต้องการเลยค่ะ ตอนแรกก็ติด Error อยู่เหมือนกันหนูก็เลยลองเติม Cancel As Integerg เข้าไปในวงเล็บดู จึงผ่านฉลุยใช้ได้เรียบร้อยค่ะ
Private Sub Text1_Exit(Cancel As Integer)
text2 = Left(Text1, 1)
Text3 = Right(Text1, 4)
End Sub
ขอขอบคุณอาจารย์อีกครั้งค่ะ
โค้ดที่ท่านให้มาใช้ได้เรียบร้อยตามที่หนูต้องการเลยค่ะ ตอนแรกก็ติด Error อยู่เหมือนกันหนูก็เลยลองเติม Cancel As Integerg เข้าไปในวงเล็บดู จึงผ่านฉลุยใช้ได้เรียบร้อยค่ะ
Private Sub Text1_Exit(Cancel As Integer)
text2 = Left(Text1, 1)
Text3 = Right(Text1, 4)
End Sub
ขอขอบคุณอาจารย์อีกครั้งค่ะ
3 @R07645
ขอตัวอย่างการนำใช้ isnumeric()ใด้มั่ยค่ะ
ขอบคุณค่ะอาจารย์
ขอบคุณค่ะอาจารย์
4 @R07646
ตัวอย่างครับ
Sub CheckNumeric
if IsNumeric("A") then
MsgBox "This is numeric value"
else
Msgbox "This is not numeric value"
End if
End Sub
Sub CheckNumeric
if IsNumeric("A") then
MsgBox "This is numeric value"
else
Msgbox "This is not numeric value"
End if
End Sub
5 @R07653
แล้วเราจะแยกค่าใด้ยังไงค่ะ เช่น
20TP
100TQ
25TD
50NQ
5HS
10HB
10AP
10AC
เราอยากจะแยก ออกมาเก็บเป็นค่าของแต่ละตัวแปรค่ะ ขอบคุณค่ะอาจารย์ ที่ช่วยตอบ
20TP
100TQ
25TD
50NQ
5HS
10HB
10AP
10AC
เราอยากจะแยก ออกมาเก็บเป็นค่าของแต่ละตัวแปรค่ะ ขอบคุณค่ะอาจารย์ ที่ช่วยตอบ
6 @R07663
ถ้าเป็นผมคง for เอาตาม ขนาดตัวครับ
คงประมาณ
a = "120TB"
b = 0
x= 1
for i =1 to len(a)
if NOT isnumeric(Left(a, x)) then
d(1) = Left(a,x)
d(2) = Right(a,len(a)-x)
exit for
end if
next i
ประมาณนี้ละครับ แชร์ๆกันครับ
คงประมาณ
a = "120TB"
b = 0
x= 1
for i =1 to len(a)
if NOT isnumeric(Left(a, x)) then
d(1) = Left(a,x)
d(2) = Right(a,len(a)-x)
exit for
end if
next i
ประมาณนี้ละครับ แชร์ๆกันครับ
7 @R07672
รบกวนอีกน่ะค่ะ คือแบบว่ามันมี error : 'Public Property Left() As Integer' has no parameters and its return type cannot be indexed.
code :
While SR.Peek <> -1
Str = SR.ReadLine
For c As Integer = 0 To Str.Count - 1
a = Str(c)
b = 0
x = 1
For y As Integer = 1 To Len(a)
If Not IsNumeric(Left(a, x)) Then
d(1) = Left(a, x)
d(2) = Right(a, Len(a) - x)
Exit For
'Return
End If
Next y
Next
End While
คือเราอ่านค่าจาก text file ที่ละแถวค่ะอาจารย์ แล้วจะมา Insert เข้า DB อีกที ช่วยดูตรงแยกข้อมูนให้ด้วยน่ะค่ะ
เนื้อในของไฟล ก็ประมานนี้ีคะ
20TP
100TQ
25TD
50NQ
5HS
10HB
10AP
10AC
ขอบคุณค่ะอาจารย์
code :
While SR.Peek <> -1
Str = SR.ReadLine
For c As Integer = 0 To Str.Count - 1
a = Str(c)
b = 0
x = 1
For y As Integer = 1 To Len(a)
If Not IsNumeric(Left(a, x)) Then
d(1) = Left(a, x)
d(2) = Right(a, Len(a) - x)
Exit For
'Return
End If
Next y
Next
End While
คือเราอ่านค่าจาก text file ที่ละแถวค่ะอาจารย์ แล้วจะมา Insert เข้า DB อีกที ช่วยดูตรงแยกข้อมูนให้ด้วยน่ะค่ะ
เนื้อในของไฟล ก็ประมานนี้ีคะ
20TP
100TQ
25TD
50NQ
5HS
10HB
10AP
10AC
ขอบคุณค่ะอาจารย์
Time: 0.3793s
อย่างนี้ใช้ฟังก์ชั่น left() right() หรือ mid() ได้เลยครับ
แต่ถ้า มีการเน้นว่า กลุ่มแรก (อาจจะไม่ใช่ 1 อักขระ) ต้องเป็นตัวอักษร
และเน้นว่า กลุ่มหลัง (อาจจะไม่ใช่ 4 อักขระดังตัวอย่าง) ต้องเป็นตัวเลข
แบบนี้ก็ใช้ฟังก์ชั่น isnumeric() เข้าช่วยตรวจสอบ เพิ่มเติมอีกทีครับ
จากคำถามนะครับ เห็นยกตัวอย่างข้อมูลมา สองตัวอย่าง สังเกตุเห็นว่า มีอักขระรวมแค่ 5 ตัว และโดยพฤติกรรมของผู้ใช้แล้วไม่น่าจะฝ่าฝืนมากมาย ดังนั้นก็ได้โค้ดง่ายว่า
Private sub Text-1_Exit()
text-2=left(text-1,1)
text-3=right(text-1,4) ' หรือ text-3 = mid(text-1,2)
End sub