only number validation code in vb.net - sql-server-2008

only number validation code in vb.net i have used this code but when i want to update it the code doesn't allow me to change or delete the number it doesn't even allows backspace button to work what changes can i make ??? to update the mobile no i m using sql server database
Private Sub txtcustcontact_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtcustcontact.KeyPress
If Not IsNumeric(e.KeyChar) Then
Tip.Show("Enter Numeric Value Only ", sender)
e.KeyChar = Nothing
End If
End Sub

You can try as below:
Private Sub txtcustcontact_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtcustcontact.KeyPress
If Asc(e.KeyChar) <> 13 AndAlso Asc(e.KeyChar) <> 8 AndAlso Not IsNumeric(e.KeyChar) Then
MessageBox.Show("Please enter Numeric values only")
e.Handled = True
End If
End Sub

Related

I am being asked to add functions to my code and need help doing so

I designed code for a GUI grade Calculator but now I am being asked to add 1. create a function that will contain all of your data validation code. The function should return true if all data checks have passed or a false if any of the data is invalid. If the data is valid (true returned), add the number to the list box, if it is not valid (false returned), show an error message.2)Add a Sub procedure that will reset the form fields back to their initial state. Call this sub procedure when the clear button is clicked.
2.add a Sub procedure that will reset the form fields back to their initial state. Call this sub procedure when the clear button is clicked.
create a function that will count the 90s in the listbox. Pass the listbox in a a parameter and loop the contents to count each of the 90s in the listbox. Return the count of the 90s in the list box to the caller. Use it as input in the re-write eligibility check.
This is my Code.
Public Class Form1
Private Sub BuGrade_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BuGrade.Click
gradeList.Items.Add(txtgrade.Text)
txtgrade.Clear()
End Sub
Private Sub BuAverage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BuAverage.Click
Dim total As Double
Dim avg As Double
Dim grade As Double
Dim gradecount As Integer
For gradecount = 0 To gradeList.Items.Count - 1
grade = gradeList.Items(gradecount)
total += grade
Next
avg = total / gradeList.Items.Count
lblR.Text = "The final total score is " & total & vbCrLf & "The Average score is " & avg
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
lblR.Text = String.Empty
End Sub
End Class

pass data to multiple textbox with 1 form vb.net

I have issue with passing data in VB.NET and I'm new in vb.net + mysql. I don't know is it possible or not. I have some TextBoxes and I want fill those with userID or something. I want to make this like a modal on php.
When I clik TextBox, 1 form shows up with ComboBox and submit button to pass data to TextBox on previous Form. I've done it with 1 TextBox, but I can't pass it to other TextBox. Here is my code:
Form1.vb
Private Sub TextBox4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox4.Click
'This is method **in my logic** can throw back data to TextBox4 from Form2.vb'
Form2.Label1.Text = TextBox4.Name
Form2.Show()
End Sub
Form2.vb
Private Sub AddTeam_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call getUSers()
End Sub
Sub getUSers()
Call connection()
Dim str As String
str = "SELECT id FROM users WHERE status='Active'"
cmd = New MySqlCommand(str, conn)
rd = cmd.ExecuteReader
If rd.HasRows Then
Do While rd.Read
ComboBox1.Items.Add(rd("id"))
Loop
Else
End If
ComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim nik = ComboBox1.SelectedItem
'Here is the issue, if i pass to 1 TextBox (like TextBox4 as sample) it`s easy, but if pass to another TextBox i have no idea to do that'
Form1.TextBox4.Text = nik
Me.Refresh()
Me.Close()
End Sub
note: I know there are many ways to do so, like change TextBox to ComboBox and fill with data, but I want this method
I'm sorry for my poor logic in vb.net. I was better with PHP before.

how insert data to server on client with database mysql with background worker vb.net?

Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
koneksiserver()
Try
Dim sqlinsert As String = "INSERT INTO sentitems (TextDecoded, " & _
"DestinationNumber,SenderID,ID)" & _
"VALUES(#isi,#nohp,#modem,#ID)"
Dim cmd = New MySqlCommand(sqlinsert, MyCon)
cmd.Parameters.Add("#isi", MySqlDbType.Text)
cmd.Parameters.Add("#nohp", MySqlDbType.VarChar)
cmd.Parameters.Add("#modem", MySqlDbType.VarChar)
cmd.Parameters.Add("#ID", MySqlDbType.Int16)
For i As Integer = 0 To DataGridView3.Rows.Count - 0
cmd.Parameters("#isi").Value = DataGridView3.Rows(i).Cells(1).Value
cmd.Parameters("#nohp").Value = DataGridView3.Rows(i).Cells(3).Value
cmd.Parameters("#modem").Value = DataGridView3.Rows(i).Cells(4).Value
cmd.Parameters("#ID").Value = DataGridView3.Rows(i).Cells(6).Value
cmd.ExecuteNonQuery()
Next
DisplayStatus("Conected...")
isExecuting = True
Dim callback As New AsyncCallback(AddressOf HandleCallback)
cmd.BeginExecuteNonQuery(callback, cmd)
MyCon.Close()
Catch ex As Exception
'MyCon.Close()
' MsgBox("Export Berhasil", MsgBoxStyle.Exclamation, "DHAPU SMS")
End Try
End Sub
Private Sub set_db_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles set_db.Click
BackgroundWorker1.RunWorkerAsync()
End Sub
Azmy;
Assuming that you are using a BackgroundWorker to prevent UI lockup:
You can not reference any objects tied to the UI thread, referring to DataGridView3, DisplayStatus and MsgBox are guaranteed exceptions.
Also your loop
For i As Integer = 0 To DataGridView3.Rows.Count - 0
will fail because you are not adjusting the count properly use a -1 not a minus 0
To accomplish what you want you must pass a table object or an array of data objects or what ever data you want updated through the System.ComponentModel.DoWorkEventArgs argument.

BackgroundWorker not Running when it's needed

I am writing a program which lets users upload a large file, compare it to another large file uploaded before and return a list of new entries and discontinued entries.
This requires the program to run a few queries, so it takes a while for the program to complete the task.
Of course, this means that until the program is done with the task, the user cannot do anything else. To prevent that from happening I have included a BackgroundWorker to the project.
The problem is, the BackgroundWorker doesn't start, giving me the same problem.
Can you please help me with this problem? Thanks!
Code:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim opendialog As New OpenFileDialog
Dim filepath As String = ""
Dim cellvalue(20) As String
opendialog.Title = "Elija el archivo que quiere importar"
opendialog.Filter = "CSV (*.csv)|*.csv"
If opendialog.ShowDialog() = DialogResult.Cancel Then
Exit Sub
End If
filepath = Replace(opendialog.FileName, "\", "\\")
Label1.Visible = True 'This is supposed to appear first, but it doesn't appear until the end of the method.
'Reading CSV file content
Cmd.CommandText = "SELECT COUNT(*) AS cuenta FROM libros WHERE 1"
rs = Cmd.Execute
If rs("cuenta").Value = 0 Then
BackgroundWorker1.RunWorkerAsync()
'MySQL queries, some of which takes a long time due to the large file being processed
Beep()
MsgBox("Archivo exportado con éxito",, "Exito")
BackgroundWorker1.CancelAsync()
Else
BackgroundWorker1.RunWorkerAsync()
'MySQL queries, some of which takes a long time due to the large file being processed
Beep()
MsgBox("Archivo exportado con éxito",, "Exito")
BackgroundWorker1.CancelAsync()
End If
End Sub
Private Sub BackgroundWoker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
' Update the progress bar
Me.ProgressBar1.Value = e.ProgressPercentage
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
If e.Cancelled Then
Label1.Text = "Cancelled"
Else
Label2.Text = "Completed"
End If
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object,
ByVal e As System.ComponentModel.DoWorkEventArgs) _
Handles BackgroundWorker1.DoWork
' Do some time-consuming work on this thread.
System.Threading.Thread.Sleep(5)
End Sub
RunWorkerAsync is, as the name implies, an async method call. This means that the only work done here is to start the DoWork event handler and return immediately. Thus your code now has two paths of execution, the one in the DoWork event handler (that has just started its work and it has probably done nothing) and the code that follows the call to RunWorkerAsync (the code in the ButtonClick).
This last code shows a messagebox and then call CancelAsync, and you could imagine what this call do to your DoWork thread of execution.
So you just need to wait before displaying anything and the Completed event is exactly what you need to use to wait the completition of your DoWork event handler
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
.....
BackgroundWorker1.RunWorkerAsync()
' Remove these lines....
' Beep()
' MsgBox("Archivo exportado con éxito",, "Exito")
' BackgroundWorker1.CancelAsync()
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
If e.Cancelled Then
Label1.Text = "Cancelled"
Else
Label2.Text = "Completed"
' Add the message here....'
Beep()
MsgBox("Archivo exportado con éxito",, "Exito")
' Of course at this point you don't need to cancel anything....'
End If
End Sub
Private Sub BackgroundWoker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
Me.ProgressBar1.Value = e.ProgressPercentage
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object,
ByVal e As System.ComponentModel.DoWorkEventArgs) _
Handles BackgroundWorker1.DoWork
' Now suppose that your work here could be divided in 5 methods'
ExecuteMethod1()
backgroundWorker1.ReportProgress(20)
ExecuteMethod2)
backgroundWorker1.ReportProgress(40
ExecuteMethod3
backgroundWorker1.ReportProgress(60)
ExecuteMethod4
backgroundWorker1.ReportProgress(80)
ExecuteMethod5
backgroundWorker1.ReportProgress(100)
End Sub

Linq to SQL - SubmitChanges not working

So - I have a MySQL db with one employee table, using Devart Linq to SQL (for MySQL)
It has a primary key in the DataContext,
I can load the gridview,
select a row,
set an instance of Staff = to the ID and Name or the row selected in the gridview
set a Textbox = to Name of Staff
change the textbox and set the object Staff.Name to the textbox.....
but I cant submit the change back to the db!!!! Probably a stupid thing I'm doing as a newbie.
Public Class Form1
Dim db As New MydbContext.MydbDataContext
Dim bs = New BindingSource
Dim Staff As New MydbContext.Employee
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' load employee data from MySQL db in datagrid
Dim StaffQuery = From s In db.Employees Select s
bs.DataSource = StaffQuery
DataGridView1.DataSource = bs
' this works fine
End Sub
Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
'create an instance of the object Staff with the ID and Name from the datagrid
'is there a better way to do this?
Staff.EmployeeID = DataGridView1.Rows(e.RowIndex).Cells("EmployeeID").Value
Staff.Name = DataGridView1.Rows(e.RowIndex).Cells("Name").Value
MsgBox(Staff.EmployeeID & " " & Staff.Name)
TextBox1.Text = Staff.Name
'this works fine
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Staff.Name = TextBox1.Text 'edit the Name
MsgBox(Staff.EmployeeID & " " & Staff.Name) ' this works - shows new Staff.Name from textbox
db.SubmitChanges() ' this fails to make db changes
End Sub
End Class
I believe you need to add db.Staffs.InsertOnSubmit(Staff)
Where Staffs is the name of the collection of Staff objects.
However, rather than keep the context and object around all the time, why not just create the new Staff object when the user presses the save button?
Finally, you can call GetChangeSet() on your db context to see what changes are pending. This can help you understand when something strange happens.