DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/)
-   VB.NET (http://www.daniweb.com/forums/forum58.html)
-   -   LEFT syntax (http://www.daniweb.com/forums/thread76777.html)

Albert88 Apr 28th, 2007 7:02 am
LEFT syntax
 
I have a problem with "left"syntax
when i operate it in console application, it works
but when i operate it in windows application, the left syntax is error...
this is my code, can someone check my code please

' get and validate order no
Dim strOrderNo As String = _ ValidateOrderNumber(txtOrderNumber.Text)
If strOrderNo = "" Then
MessageBox.Show("Error: Invalid Order Number")
With txtOrderNumber
.SelectAll()
.Focus()
End With
Return
End If

Private Function ValidateOrderNumber(ByRef strOrderNo As String) _ As String

strOrderNo = strOrderNo.ToUpper

If Left(strOrderNo, 2) <> "SO" Then
' returns an empty string to denote error
Return ""
End If

' return valid order no
Return strOrderNo
End Function

the description say that 'Public Property Left() As Integer' has no parameters and its return type cannot be indexed.


can someone help me please..............
thanks

waynespangler Apr 28th, 2007 9:22 am
Re: LEFT syntax
 
Left is no longer used in vb net. Instead of
If Left(strOrderNo, 2) <> "SO" Then
use
If strOrderNo.Substring(0, 2) <> "SO" Then
The first number is the starting position and the second is the number of characters to get.
This also replaces the mid and right string operations. If the second number is omitted then all the characters from the starting place are returned.

Albert88 Apr 28th, 2007 10:47 am
Re: LEFT syntax
 
i still got the error on my program. the error is in red color font, it say that "Index and length must refer to a location within the string."
what it does mean? and can you check my coding. i want to validate the order number. the order number must be started with "SO" and then followed with 3 or 5 number. is the coding correct?

Thanks


Dim strOrderNo As String = ValidateOrderNumber(txtOrderNumber.Text)
If strOrderNo = "invalid" Then
MessageBox.Show("Error: Invalid Order Number")
With txtOrderNumber
.SelectAll()
.Focus()
End With
Return
End If


Private Function ValidateOrderNumber(ByRef strOrderNo As String) As String

strOrderNo = strOrderNo.ToUpper

If Not (Len(strOrderNo) >= 5 And Len(strOrderNo) <= 7) Then
Return "invalid"
End If
If Not (strOrderNo.Substring(0, 2)) = "SO" Then
Return "invalid"
End If
If Not (IsNumeric(strOrderNo.Substring(2, 5)) Or _
IsNumeric(strOrderNo.Substring(2, 7))) Then
Return "invalid"
End If


Return strOrderNo
End Function

waynespangler Apr 28th, 2007 3:22 pm
Re: LEFT syntax
 
Your problerm is if you have a string length of 5 and you are starting at the third position(2) and then going 5 more positions then you are past the end of your line. Same thing with length of 7.
        'If Not (IsNumeric(strOrderNo.Substring(2, 5)) Or _
        'IsNumeric(strOrderNo.Substring(2, 7))) Then
Like vb6 if you did not give mid$ a second number it would take all the numbers from that starting position, substring does the same thing. So you do not need to check if it is 5 or 7 characters long.
        If Not IsNumeric(strOrderNo.Substring(2)) Then

One other thing in this code:
If Not (Len(strOrderNo) >= 5 And Len(strOrderNo) <= 7) Then
if 4 numbers are entered it will accept them. I don't know if it is a typeing error or not but you said "followed with 3 or 5 number." If so then change it to the following"
 If Len(strOrderNo) <> 5 Or Len(strOrderNo) <> 7 Then
Hope this helps.


All times are GMT -4. The time now is 9:24 am.

Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC