|
use the textchanged event of the textbox and check if it is numeric with isnumeric function (returns a boolean)
|
|
|
|
|
Hello,
I think this is the solution for ur qustion. Pls reply wat ever u got, Ok
If (Asc(e.KeyChar)) = 46 Or (Asc(e.KeyChar)) = 45 Or (Asc(e.KeyChar)) = 8 Then
e.Handled = False
ElseIf e.Handled = Char.IsNumber(e.KeyChar) = True Then
e.Handled = True
End If
Senthil S
Software Engineer
|
|
|
|
|
Senthil S wrote: (Asc(e.KeyChar))
What is this ?
Senthil S wrote: ElseIf e.Handled = Char.IsNumber(e.KeyChar) = True Then
What does this do ?
The solution is to check Char.IsNumber and Char.IsControl, if both fail, then e.Handled should be true.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Hello,
I got the out put without any exception. I checked n then only i displayed this msg...
(Asc(e.KeyChar))
is return to check the "." n "-" key. If the user may not need to find the entered value to be number.
ElseIf e.Handled = Char.IsNumber(e.KeyChar) = True Then
if both condition fails then it return nothing in that textbox.
Use that code n check in vb.net 2005. N blame me....
Senthil S
Software Engineer
|
|
|
|
|
in keypress event you can write as follows
If Not Char.IsNumber(e.KeyChar) And Not Char.IsControl(e.KeyChar) And Not e.KeyChar = "." Then
e.Handled = True
ElseIf e.KeyChar = "." Then
If Me.Text.IndexOf(e.KeyChar) > 0 Then
e.Handled = True
End If
End If
Salman Sheikh
|
|
|
|
|
check out my article from the link in my signature on a self validating textbox...the numeric field doesn't handle negative but it wouldn't be hard to change that.
|
|
|
|
|
pretty sure this is the way to do it:
on key press:
if char.isdigit(e.keychar) = false then
if e.keychar = cchar("-") or e.keychar = cchar(".") then
e.handled = false
else
e.handled = true
end if
else
e.handled = false
end if
|
|
|
|
|
You need to make sure only one . or - is entered, and that a - is at the very front of the string.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Ah yes an oversight on my part. Thankyou.
|
|
|
|
|
A correction to my previous post:
if char.isdigit(e.keychar) = false then 'check if it's a number if its not do below:
if e.keychar = cchar("-") then ' if its a minus
if me.textbox1.selectionstart = 0 then 'check if the cursor is at the start
if me.textbox1.text.contains("-") = false then 'check if there is one already
e.handled = false 'allow it if its at the start and the only one
else
e.handled = true 'otherwise don't allow it
end if
else
e.handled = true 'if its not at start don't allow it
end if
elseif e.keychar = cchar(".") then ' if its a decimal place
if me.textbox1.text.contains(".") = false then 'check if there is one already
e.handled = false 'allow it if there is not one already
else
e.handled = true 'if there is one already don't allow it
end if
else
e.handled = true 'if its not a number, a minus or a decimal point, don't allow it
end if
end if
|
|
|
|
|
That is still not exact for several reasons:
- you may have different symbols for decimal point (see regional settings);
- you may want to allow a plus sign;
- you may want to allow thousands separators;
- you may want to allow floating-point notation as in -1,234,567e-23
My conclusion is it is not really worthwhile trying to predict the result of TryParse;
except for a sole minus sign, a sole plus sign, and a partially entered floating-point
number, all partially entered valid numbers are valid numbers on their own.
So I suggest you take care of those exceptions, and work with textchanged event only.
BTW: IMO there is no need to set e.handled=false, it is false to start with.
this seems a good place if any to use multiple exits.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
yes i agree, in my article and my textbox control i take much of this into consideration except for floating point and i understand the internationalisation requirements but i just gave him what he asked for, nothing more, its up to him if he want it to be more complex...i don't know what his user require.
|
|
|
|
|
An alternate approach would be to let the user enter whatever they wanted and then validate it by attempting to cast it to a decimal value:
Try
Dim i As Decimal = CDec(TextBox1.Text)
TextBox2.Text = i
MsgBox("Ok!")
Catch ex As Exception
MsgBox("Doh!")
End Try
If you are in ASP.NET then you could also use a CompareValidator (Set the operator to DataTypeCheck and the Type to Double). When the textbox loses focus the validator will fire.
=======================================
There are 10 type of people in the world....
those who understand Binary, and those who don't!
=======================================
|
|
|
|
|
hello boss,
Dim con As New SqlConnection("database=deltadatabase;user id=sa;pwd=sa;server=localhost")
con.Open()
Dim cmd As New SqlCommand("select * from tbl_adminlogin", con)
DataGridView1.DataSource = cmd.ExecuteReader,
i am using the above code.
there is no error execution
but not binding the data
is there anything that is missing?
Sonia Gupta
Soniagupta1@yahoo.co.in
Yahoo messengerId-soniagupta1
Love is Friendship and Friendship is Love....
|
|
|
|
|
try this plse
Dim con as new sqlConnection("server=local;database=me;user=sa;pwd=sa;")
dim cmd as new sqlcommand("select * from tbl",con)
dim objds as new dataset
objds=cmd.executenonquery()
datagrid.datasource=objds.table(0)
happy.....
cooollll...
|
|
|
|
|
dataset is necessary in the code
Sonia Gupta
Soniagupta1@yahoo.co.in
Yahoo messengerId-soniagupta1
Love is Friendship and Friendship is Love....
|
|
|
|
|
May be there is no data in table
Please try assigning cmd.ExecuteReafder to a DataReader and binding the DataReader to the grid. I think this may help.
|
|
|
|
|
Hello madam,
Dim con As New SqlConnection("database=deltadatabase;user id=sa;pwd=sa;server=localhost")
con.Open()
Dim cmd As New SqlCommand("select * from tbl_adminlogin", con)
DataGridView1.DataSource = cmd.ExecuteReader,
There is a problem in 4th line of ur code. Because ExecuteReader is need to open always upto the end. And the important thing is reader need to read continusly. but u did only one time ExecuteReader. To upload the value to datgrid the following code is enough...
Dim con As New SqlConnection("database=deltadatabase;user id=sa;pwd=sa;server=localhost")
Dim cmd As New sqldataadapter("select * from tbl_adminlogin", con)
dim dset as new dataset
cmd.fill(dset,"Tbl")
DataGridView1.DataSource =dset.table(0)
Pls reply wat ever u go...............
Senthil S
Software Engineer
|
|
|
|
|
data is there in the table
Sonia Gupta
Soniagupta1@yahoo.co.in
Yahoo messengerId-soniagupta1
Love is Friendship and Friendship is Love....
|
|
|
|
|
Then try assinging it to dataset and then binding
|
|
|
|
|
Is it a WinForms or a ASP.NET application?
In ASP.NET you have to call DataGridView1.DataBind(); after setting the DataSource.
-^-^-^-^-^-
no risk no funk ................... please vote ------>
|
|
|
|
|
can we do gprs connection programaticly by vb.net
@h3aR
|
|
|
|
|
Google for "vb.net gprs".
|
|
|
|
|
I am having problem with dataset update! I am using a DataAcesTier to access data and update the data and presentation tier is used to do all the manipulation!
Presentation Tier uses DataAcessTier to retrieve the data but when i try to update the database with dataset , NOTING HAPPENS! NO ERROR but NO UPDATES too..
Here is how it goes!!!
I have a class with the name AccessData in my DataAccessTier and it have somehow this sort of code
public sdaMajorDataAdapter as new SqlDataAdapter
public strAllDBTables(50) as string
'strAllDBTables Array is inialized with table names with a sub routine
Public Function CreateDataset() As DataSet
Dim dsMajorDataSet As New DataSet
OpenDbConnection()
' some code for dbcommand and dbconnection variables etc
'For loop used to loop through the table names
For iCounter = 0 to strAllDBTables.length(0) - 1
sdaMajorDataAdapter.Fill(dsMajorDataSet, strAllDBTables(iCounter))
Next
'I have populated the dataset with all the DB tables supposedly
CloseDBConnection()
'this DS is returned to the class from where its accessed
return dsMajorDataSet
End Function
======
Similary in the same class i have a Function for DB update
Public Sub UpdateDataSet(ByVal updateDS As DataSet, ByVal strTableName As String)
OpenDbConnection()
dim dsUpdate as new dataset
'dbCommand.Connection = dbConnection
'dbCommand.CommandText = "Select * from " & strTableName
'sdaUpdate.SelectCommand = dbCommand
'sdaMajorDataAdapter.Fill(dsUpdate, strTableName)
'I have tried to use dataadapter to fill a new dataset and then try to update .no gain
sdaMajorDataAdapter.Update(updateDS, strTableName)
'Which DataAdapter is to be used here ... or do i need to add update queries
'with adapter?, if YES , how to add it?
' There is no error here but NO UPDATES too?
CloseDBConnection()
End Sub
========
'i am accessing these functions in Presentation Tier Class with the name AdminControlPanel Class
'here i have a variable
dim dsControlPanel as new dataset
dim dsRead as new AccessData ' an object of AccessData Class
dsControlPanel = dsRead.CreateDataSet()
' than all the manipulation is done here and after that i return the DS to data access class for updation like this
dsRead.UpdateDataSet(dsControlPanel, "Name of the table to be updated")
'No Error but nothing happens?
i guess i am doing something wrong as to which dataAdapter is to be used?
Thanks for your time
|
|
|
|
|
You've told the DataAdapter how to retrieve the columns, well, all of them, from the table, but you never told it how to update the database with changes.
It's much better practice to change your SQL to retrieve the columns to want instead of using the * specifier. This prevent your from making a change to the table schema and breaking your code doing it. In most case, you're end up returning far more data than you actually need, thereby killing your SQL Server performance, and if the dataset is transferred over a network, transferring way too much information and bogging down the network.
How you've written your data layer in not a good idea. You're creating a generic method that returns a DataAdapter, but that DataAdapter doesn't have a clue about what columns it's supposed to
SELECT IdColumn, SomeColumn, SomeOtherColumn FROM TableName
When you create the DataAdpater, you need to tell it how to update the coumns in the tables. To do this, you either have to supply the DataAdapter with the SQL commands for UPDATE, INSERT, and DELETE, or you have to use an SqlCommandBuilder object to do it for you:
Dim conn As New SqlConnection(connectionString)
Dim comm As New SqlCommand("SELECT IdColumn, SomeColumn FROM SomeTable", conn)
Dim da As New SqlDataAdapter(comm)
Dim cb As New SqlCommandBuilder(da)
Dim ds As New DataSet()
da.Fill(ds)
Return ds
Warning: This could be a little off. I wrote it from memory, and I'm half asleep right now...
|
|
|
|