วันศุกร์ที่ 13 มกราคม พ.ศ. 2555

MS Access VBA Function ฺ: ตัดแต่งค่าที่ได้จากเครื่องชั่ง

ผมจะไม่ตั้งตัวแปรขึ้นมาเพิ่มเติม เพราะจะใช้ Text Box ชื่อ txtW แทนตัวแปร ไหนๆ ก็เสียหัว (Overhead) ให้กับ Text Box ไปแล้วในฟอร์ม ก็ไม่ยอมเสียหัวให้กับตัวแปรเพิ่มอีกใน VBA (ผมก็ว่าไปตามภาษาของโผ้ม)  จำได้กันไหมว่า Data Format จากเครื่องชั่งมีรูปแบบอย่างไร



ต้นฉบับภาษาอังกฤษที่ผมพออ่านได้ มีดังนี้
Left$(string, length)
Returns a substring containing a specified number of characters from the beginning (left side) of a string.
The Left$ function syntax has these parts:
string Required. String expression from which the leftmost characters are returned.
length Required; Long. Numeric expression indicating how many characters to return. If 0, a zero-length string ("") is returned. If greater than or equal to the number of characters in string, the entire string is returned.


Mid$(string, start[, length])
Returns a substring containing a specified number of characters from a string.
The Mid$ function syntax has these parts:
string Required. String expression from which characters are returned.
start Required; Long. Character position in string at which the part to be taken begins. If start is greater than the number of characters in string, Mid returns a zero-length string ("").
length Optional; Long. Number of characters to return. If omitted or if there are fewer than length characters in the text (including the character at start), all characters from the start position to the end of the string are returned.
CR/LF means Carriage Return/Linefeed. ตอนนี้เราไม่สนใจตัวนี้ ถ้าใครเรียนพิมพ์ดีดมาก็จะค้นเคยดีว่าคืออะไร เอาเป็นว่าเหมือนกด Enter ประมาณนั้น เป็นอันเข้าใจว่าจบการส่งข้อมูลหนึ่งชุดที่เครื่องชั่งส่งมาให้ก็แล้วกัน
สมมุติใน txtW ค่าคือ  ST,+00012.40  g

Header = Left$(Me.txtW.Value, 2) = "ST"
Separator = Mid$(Me.txtW.value, 3, 1) = ","
Data = Mid$( Me.txtW.Value , 4, 9) = "+00012.40"
Unit = Mid$( Me.txtW.Value , 13, 3) = "  g"

Val(Data) = 12.4 อันนี้เอาไปบันทึกลงฐานข้อมูลได้เลย อ่านคำเตือนก่อนเน้อ

คำเตือน สำหรับ Val() Function :


Many programmers use VB's Val() function to convert user inputted
strings into numbers. This useful function returns zero (0) for
strings that are meaningless as numeric input. Unfortunately, Val()
has a bug in its routines. Notably, Val("6%") returns 6, Val("6.%")
returns 6, Val("6.0%") returns 6, but Val("6.1%") generates a
Type Mismatch error! Hence, for a solid program, no cautious VB
programmer can use Val() as-is for generic inputs.

To avoid this error, try a routine that replaces the offending
percentage sign with some other character, as in this:

TheString = "15.7%"
Mid(TheString, Instr(TheString, "%"),1) = "$"
Debug.Print Val(TheString)


ใครที่เอาไปประยุกต์ใช้ได้ผลอย่างไร มาแบ่งปันประสบการณ์กันบ้างนะครับ วันนี้พอก่อนล่ะ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น