#sql-server #vb.net #combobox #datetimepicker
#sql-сервер #vb.net #выпадающий список #datetimepicker
Вопрос:
что я делаю не так??? У меня есть 7 текстовых полей, 1 указатель даты и времени и 1 поле со списком в моей форме. Когда я нажимаю кнопку сохранения, она ничего не делает, точно так же, как новая кнопка без кода, даже не сохраненное сообщение клиента или сообщение об ошибке.
Private Sub btnSaveCust_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveCust.Click
Try
Dim sex As String
sex = ""
If cbSex.SelectedIndex >= 0 Then
sex = cbSex.Items(cbSex.SelectedValue).ToString
End If
Dim conex As New SqlConnection("Data Source=localhost;Initial Catalog=BD_;Integrated Security=True")
Dim query As String = "SELECT * FROM tableCustomer WHERE ID=@ID"
Dim cmd1 As SqlCommand = New SqlCommand(query, conex)
cmd1.Parameters.AddWithValue("@ID", txtID.Text)
cmd1.Parameters.AddWithValue("@[Today date]", txtToday.Text)
cmd1.Parameters.AddWithValue("@Name", txtName.Text)
cmd1.Parameters.AddWithValue("@Middlename", txtMiddle.Text)
cmd1.Parameters.AddWithValue("@[Last name]", txtLastName.Text)
cmd1.Parameters.AddWithValue("@Birth", DateTimePickerBirth.Value)
cmd1.Parameters.AddWithValue("@Age", txtAge.Text)
cmd1.Parameters.AddWithValue("@Sex", cbSex.SelectedValue)
cmd1.Parameters.AddWithValue("@Phone", txtPhone.Text)
cmd1.Parameters.AddWithValue("@E-mail", txtEmail.Text)
conex.Open()
Using read As SqlDataReader = cmd1.ExecuteReader()
If read.HasRows Then
MsgBox("ID '" amp; txtID.Text amp; "' already in DB. Enter another ID", MessageBoxIcon.Error)
txtID.Focus()
Else
read.Close()
Dim cmd As SqlCommand = New SqlCommand _
("Insert into [BD_].[dbo].[tableCustomer] ([ID],[Today date],[Name],[Middlename],[Last name],[Birth],[Age],[Sex],[Phone],[E-mail]) values ('" txtID.Text "','" txtToday.Text "','" txtName.Text "','" txtMiddle.Text "','" txtLastName.Text "','" DateTimePickerBirth.ToString("dd MM yyyy") "','" txtAge.Text "','" sex "','" txtPhone.Text "','" txtEmail.Text "')", conex)
conex.Open()
cmd.ExecuteNonQuery()
MsgBox("Customer '" amp; txtName.Text amp; "' saved.", MessageBoxIcon.Information)
conex.Close()
End If
End Using
Catch ex As Exception
End Try
End Sub
Ответ №1:
Если у вас есть доступ к профилировщику SQL (в SQL Server), вы можете перехватить SQL, отправляемый из вашего приложения, скопировать, вставить и запустить его непосредственно в окне запроса SQL Server, и вы должны увидеть любые ошибки… Кроме того, добавьте свои данные с помощью хранимой процедуры, вы обнаружите, что работать с ней намного проще…
Комментарии:
1. Спасибо за ответ, Монти, я пробовал использовать хранимую процедуру, как ты сказал, но это то же самое, при нажатии кнопки ответа нет, это похоже на новую кнопку без кода. Уже удалите кнопку и добавьте новую… и все еще не работает, он не запускает действие
2. «Это не запускает действие», значит, с вашими файлами проекта что-то еще не так… проще всего было бы создать новый VB.net проект, добавьте кнопку, дважды щелкните по ней, чтобы создать заглушку события, затем поставьте точку останова в коде и запустите приложение….
3. Кроме того, в приведенном выше коде убедитесь, что кнопка в вашей форме называется «btnSaveCust»