how to accept data into textbox that accepts only culture codes like en-US in vb 6 - vb6

Plz tell me some suggestions how to restrict input data to accept only culture codes like en-US in Textbox.
I have tried this code but its accepting all 5 letter characters...i want it to accept only culture codes which are in the format of en-US
if Length(textbox1.text) > 5 then
enter only five chars
else if Length(textbox1.text) < 5 then
enter up to five chars

Using the KeyPress event you can check the ASCII value ot the symbol imputted. Should it be not of a correct value then set it to 0.
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii > 190 Then KeyAscii = 0
End Sub
You may include more checks - for numeric symbols and so on.
You may find this useful: http://www.asciitable.com/

Related

Only allow letters in textbox for MS Access

I have a text box in a form in MS Access. I just want users to enter Letters and spaces. No special characters.
I have implemented the following on KeyPress Event. I am wondering is there any better way to implement the same.
Private Sub txtName_KeyPress(KeyAscii As Integer)
If KeyAscii <> 8 And KeyAscii <> 32 Then 'Not Backspace (important for error correction) and not a Space
If (KeyAscii < 65 Or KeyAscii > 90) And (KeyAscii < 97 Or KeyAscii > 122) Then 'Allowing lower and upper case
Beep 'Let the user know they hit an illegal key
KeyAscii = 0 'Don't let the keystroke through
End If
End If
End Sub
Consider using the BeforeUpdate event of the textbox which is the trigger usually used to validate entry as you have the facility to cancel the update:
Private Sub txtWordsOnly_BeforeUpdate(Cancel As Integer)
If Me.txtWordsOnly Like "*[0-9]*" Or Me.txtWordsOnly Like "*[##$%*^&?()<>/\'""!]*" Then
MsgBox "Invalid entry. Please select only words," _
& " NOT numbers or special characters.", vbInformation
Cancel = -1 ' OR Cancel = True
Me.txtWordsOnly.Undo
End If
End Sub
Use a validation rule.
Allen Browne has a highly useful list of Validation rules here:
http://allenbrowne.com/ValidationRule.html
Letters and spaces only
Is Null Or Not Like "*[!a-z OR "" ""]*"
Punctuation and digits rejected.

VB 6.0 - Formating Textbox "dd/MM/yy"

I've made a question previously about this but I didn't express really what I wanted. I have a textbox that requires the user to write a Date in it. Then he can press a button and generate a report based on the entries on some other textboxes. It is really important that the date in the generated report is in this format "dd/MM/yy".
I use this code :
Dim a as String
a = Format(Textbox1.text, "dd/MM/yy")
Everything is working fine except when the user types a date in this format "dd.MM.yy" e.g 15.05.15 . When this happens, the date in the generated report is always "30/12/99". Can some1 help me understand why this is happening ?
EDIT: Regarding the Duplicate Question. In the previous question I asked how I can extract characters from a textbox and form a date in the format I want. This question is about a specific problem that happens when a specific type of format is used in the textbox (dd.MM.yy) that prints a specific date always (30/12/99).
30/12/1899 is the Date equivalent of 0, this is what you get when you try to convert a String which is not in a correct date format to a Date.
To verify this, type any old rubbish into your text box and you will get 30/12/99 as output.
Regarding using a DateTimePicker control, see my answer to your other question here
you can chose which keys you allow in the textbox.
for example as follows:
'1 form with:
' 1 textbox : name=Text1
Option Explicit
Private Sub Text1_KeyPress(KeyAscii As Integer)
' Caption = CStr(KeyAscii)
KeyAscii = DateOnly(KeyAscii)
End Sub
Private Function DateOnly(intKey As Integer) As Integer
Dim intResult As Integer
intResult = intKey
Select Case intKey
Case vbKeyBack 'allow backspace
Case vbKey0 To vbKey9 'allow numbers
Case 45 'allow -
' Case 46 'change . into /
' intResult = 47
Case 47 'allow /
Case Else 'dont allow anything else
intResult = 0
End Select
DateOnly = intResult
End Function
this just limits which keys the user can enter, you will still have to pay attention to other invalid inputs
[EDIT]
I added Case 45 to the code above.
In the select case you specify what happens to each key input:
you allow the key unaltered by specifying nothing, as i did with the / (ascii value 47)
you can change the key to another key, as i did with the . (ascii value 46)
you can reject the key input by setting it to 0, as i did with all other keys (case else)
You can find out which ascii value a specific key has by uncommenting the first line in Text1_KeyPress so the ascii value will show in the form caption
The IsDate Function is also useful. This will check if the date entered is valid, and return True if it is.
IsDate ("21/05/2015") 'returns 'True'
IsDate ("21.05.2015") 'returns 'False'
You could use the Replace function to change "." to "/"
mydate = Replace("21.05.2015", ".", "/") ' gives "21/05/2015"

creating a personalized masked textbox on vb6 mixing some letters and numbers

I need to create a text box when the user press the key will fill the pattern:
[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}
A valid example is:
63CDB75C-D58A-4100-8C24-9E6433E263B0
The user can only press A..F and 0..9 on the groups 8-4-4-4-12 total digits.
But I don't know how to format it on the vb6 text box. can you help me?
The easy way is to check the KeyPress event and decide if the key is valid or not. It appears you have a well defined format so I added a textbox to a form and set it's maximum length to 36. I added code in the KeyPress event to check for valid keys. I also added code in the Changed event to append the hyphen to the current text instead of making the user enter it. Of course this is very simple so you may need to add to it to work specifically for you. For instance as it is now you can't paste into the textbox with Ctrl + V. Further, the hyphen key isn't currently allowed so if they delete a hyphen they will have to start over to get it back. Also there is no Error handler.
Private Sub Text1_Change()
If Len(Text1.Text) = 8 _
Or Len(Text1.Text) = 13 _
Or Len(Text1.Text) = 18 _
Or Len(Text1.Text) = 23 Then
Text1.Text = Text1.Text & "-"
Text1.SelStart = Len(Text1.Text)
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase$(Chr$(KeyAscii))) 'force all characters to upper case
Select Case KeyAscii
Case 8, 48 To 57, 65 To 70 '8 is the backspace, 48 to 57 is 0 to 9, 65 to 70 is A to F
Case Else
KeyAscii = 0 'Cancel the key
End Select
End Sub

Vb6 .text property for textbox required

I am trying to convert letters to numbers.
I have a sub which ensures only numbers are put into the textbox.
My questions is will the following code work. I have a textbox(for numbers) and combobbox(for letters)
Dim sha As String
Dim stringposition As Long
Dim EngNumber As Long
sha = "abcdefghifjklmnopqrstuvwxyz"
stringposition = InStr(1, sha, Mid(1, cmbEngletter.Text, 1))
MsgBox "stringposition"
EngNumber = (txtManuNo.Text * 10) + stringposition
My only question above would be will the multiplication work with a .text. I believe it won't because it is a string. Please advise then on how to deal with a situation.
You can use CLng() to convert a string to a Long variable
CLng() will throw an error though if it doesn't like the contents of the string (for example if it contains a non-numeric character), so only use it when you are certain your string will only contain numbers
More forgiving is it to use Val() to convert a string into a numeric variable (a Double by default)
I also suggest you look into the following functions:
Asc() : returns the ASCII value of a character
Chr$() : coverts an ASCII value into a character
Left$() : returns the first characters of a string
CStr() : convert a number into a string
I think in your code you mean to show the contents of your variable stringposition instead of the word "stringposition", so you should remove the ""
I do wonder though what you are trying to accomplish with your code, but applying the above to your code gives:
Dim sha As String
Dim stringposition As Long
Dim EngNumber As Long
sha = "abcdefghifjklmnopqrstuvwxyz"
stringposition = InStr(1, sha, Left$(cmbEngletter.Text, 1))
MsgBox CStr(stringposition)
EngNumber = (Val(txtManuNo.Text) * 10) + stringposition
I used Val() because I am not certain your txtManuNo will contain only numbers
To ensure an user can only enter numbers you can use the following code:
Private Sub txtManuNo_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyBack
'allowe backspace
Case vbKey0 To vbKey9
'allow numbers
Case Else
'refuse any other input
KeyAscii = 0
End Select
End Sub
An user can still input non-numeric charcters with other methods though, like copy-paste via mouse actions, but it is a quick and easy first filter

How to limit the value of the textbox in vb 6.0

I am doing a marks updating database system. I need to limit each of my textbox to be in the value of less than 100, when its over than 100 or when its not number, a message box will pop up and the data won't be save until the user change the mistake. How can I do it?
I agree with Hiren Pandya, but I thought I would add my own take as well.
Be aware that converting a string to a numerical value is not trivial, but the Val, CInt, CDBl etc. functions in VB6 can all give you behavior that close to what you want. (some of those links are for VB.Net, but can still be valuable). You want to make sure you are thinking about digit grouping, positive/negative, decimal separators, etc. when you are validating user input on your own. Most of the time, the built-in functions are good enough.
Private Sub Text1_Change()
On Error GoTo Err_Handler
Dim text As String
text = Text1.text
If IsNumeric(text) = True Then
'If you only want integers...
Dim value As Integer
value = Val(text)
If value <= 100 And value > 0 Then
'The value is good so whatever stuff you need to do
'And then leave the procedure
Exit Sub
End If
End If
'Let everything else fall through here...
Err_Handler:
MsgBox "Invalid input."
'Other stuff to prevent saving
End Sub
In the properties of the text box, set MaxLength to 2.
If you want a message, in the text box Change event, you could do...
If Len(txtBox.Text)>2 then msgbox...
then add your message in the messagebox.
I could go into more detail if you need it. Some thing like below...
Private Sub Text1_Change()
If Len(Text1) > 6 Then
Text1 = " "
MsgBox "Not more than six"
Text1.SetFocus
End If
End Sub

Resources