#vb.net
#vb.net
Вопрос:
Мой вопрос: «Пользователь должен иметь возможность обновлять (редактировать) ранее введенный журнал, но дата и номер недели не должны редактироваться»
Как мне запретить пользователю не обновлять текстовое поле даты и недели?
Вот мой текущий код обновления:
Private Sub Btnupdatelog_Click(sender As Object, e As EventArgs) Handles Btnupdatelog.Click
Dim conn As New SqlConnection
Dim cmd As New SqlCommand
cmd = New SqlCommand("update Logbook Objectives='" amp; Txtobjectives.Text amp; "',Contents='" amp; Txtcontent.Text amp; "',Company_Signature_Stamp='" amp; Txtsignature.Text amp; "',Company_Date='" amp; DateTimePicker2.Text amp; "' where LogId=" amp; TxtLogId.Text amp; "", conn)
conn.ConnectionString = "Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=C:UsersAlexsourcereposCurriculumVitae(CV)binDebugCurriculumVitae(CV).mdf;Integrated Security=True;Connect Timeout=30"
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
MsgBox("Update Successfully")
End Sub
End Class
Комментарии:
1. Выберите опцию для редактирования данных, прочь? Это все равно, что спросить: «Как мне помешать этому ребенку ударить этого ребенка этой битой?» -> «не давайте ребенку 1 биту!»
2. Нет, нет. Данные пользователя, такие как дата и неделя, и другие текстовые поля, сохраняются со значением. Однако пользователь может обновлять / редактировать текстовое поле, но не учебник «дата» и «неделя». Итак, как мне запретить пользователю редактировать значение текстового поля «дата» и «неделя»?
3. Итак, вы хотите вставить только в первый раз, а затем никогда не обновлять его? Затем вы должны иметь возможность указывать «я нахожусь в режиме вставки» против «я в режиме обновления», и если вы находитесь в режиме вставки, затем установите
datePicker.Enabled=true
и, если вы находитесь в режиме обновления, установите значение false. Также вообще не указывайте значение даты в запросе обновления. Таким образом, даже если пользователь использует инструмент для принудительного включения элемента управления (это возможно), ваше обновление все равно его проигнорирует
Ответ №1:
Чтобы предотвратить обновление определенных полей, просто не включайте эти поля в текст команды. Я удалил поле даты из текста.
Объекты базы данных должны быть закрыты и удалены. Using...End Using
блоки обрабатывают это за вас, даже если есть ошибка. В этом коде и соединение, и команда включены в блок Using . Обратите внимание на запятую в конце первой строки использования.
Никогда не объединяйте строки для построения текста sql. Всегда используйте параметры, чтобы избежать внедрения sql. Я должен был угадать тип данных и размер ваших полей. Проверьте правильность значений в вашей базе данных.
Private Sub Btnupdatelog_Click(sender As Object, e As EventArgs) Handles Btnupdatelog.Click
Using conn As New SqlConnection("Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=C:UsersAlexsourcereposCurriculumVitae(CV)binDebugCurriculumVitae(CV).mdf;Integrated Security=True;Connect Timeout=30"),
cmd As New SqlCommand("update Logbook Set Objectives= @Objectives, Contents= @Contents, Company_Signature_Stamp= @Signature where LogId= @ID;", conn)
With cmd.Parameters
.Add("@Objectives", SqlDbType.VarChar, 300).Value = Txtobjectives.Text
.Add("@Contents", SqlDbType.VarChar, 300).Value = Txtcontent.Text
.Add("@Signature", SqlDbType.VarChar, 100).Value = Txtsignature.Text
.Add("@ID", SqlDbType.Int).Value = CInt(TxtLogId.Text)
End With
conn.Open()
cmd.ExecuteNonQuery()
End Using
MsgBox("Update Successfully")
End Sub
Комментарии:
1. @alexChong пожалуйста, попробуйте исправить это самостоятельно; Я уверен, что вы сможете — в SQL Мэри есть очень незначительная опечатка ( один символ). Даже если вы задаете вопрос на SO, это не означает, что кто-то другой становится ответственным за выполнение вашей работы за вас бесплатно, и вам определенно не следует просто слепо вставлять что-то из Интернета в свою программу и запускать ее. Мэри приложила значительные усилия и предоставила решение на 99,99%; не будь тем, кто выбирает ошибку и говорит: «О, предоставленное решение не скомпилировалось, я просто буду сидеть и ждать, пока кто-то другой выполнит мою работу». Отлаживать, понимать, исправлять
2. (После того, как вы это исправили, не стесняйтесь предлагать редактирование ответа, которое исправляет опечатку .. или, если вам пришлось внести значительные изменения, вы можете опубликовать ответ на свой собственный вопрос :))
3. @AlexChong01 Прошу прощения. Эта чертова запятая перед where не принадлежит. Я отредактировал свой ответ.
4. Извините, я все еще новичок в Visual Basic и в настоящее время все еще изучаю его. Я прошу прощения за то, что не несу ответственности за копирование и вставку работы Мэри. Я понял свою ошибку. А также спасибо вам обоим за то, что вы мне тоже помогли