#vb.net #oledb
#vb.net #oledb
Вопрос:
Даже если я сниму флажок, он сохранит текст по умолчанию, написанный на нем.
Этот код предназначен для моего самостоятельного изучения.
Private Sub btnADD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnADD.Click
Dim provider1 As String
Dim dataFile1 As String
Dim connString1 As String
Dim myConnection1 As OleDbConnection = New OleDbConnection
provider1 = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source ="
dataFile1 = "|DataDirectory|dbSentinel.accdb"
connString1 = provider1 amp; dataFile1
myConnection1.ConnectionString = connString1
myConnection1.Open()
Dim str As String
str = "Insert into tblComputerDesktopInventory([DesktopName],[Department],OperatingSystem],[MOBOmanufacturer],[MOBOproduct],[MOBOserial],[MOBOspecs],[HDDmanufacturer],[HDDcapacity],[HDDserial],[ACCmonitor],ACCmodel],[ACCserial],[ACCmouse],[ACCkeyboard],[ACCmousepad],[ACCheadset],[RAMmanufacturer],[RAMcapacity],[RAMserial]) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection1)
cmd.Parameters.Add(New OleDbParameter("DesktopName", CType(txtDesktopName.Text, String)))
cmd.Parameters.Add(New OleDbParameter("Department", CType(cboDepartment.Text, String)))
cmd.Parameters.Add(New OleDbParameter("OperatingSystem", CType(cboOperatingSystem.Text, String)))
cmd.Parameters.Add(New OleDbParameter("MOBOmanufacturer", CType(txtMOBOmanufacturer.Text, String)))
cmd.Parameters.Add(New OleDbParameter("MOBOproduct", CType(txtMOBOproduct.Text, String)))
cmd.Parameters.Add(New OleDbParameter("MOBOserial", CType(txtMOBOserial.Text, String)))
cmd.Parameters.Add(New OleDbParameter("MOBOspecs", CType(txtMOBOspecs.Text, String)))
cmd.Parameters.Add(New OleDbParameter("HDDmanufacturer", CType(txtHDDmanufacturer.Text, String)))
cmd.Parameters.Add(New OleDbParameter("HDDcapacity", CType(txtHDDcapacity.Text, String)))
cmd.Parameters.Add(New OleDbParameter("HDDserial", CType(txtHDDserial.Text, String)))
cmd.Parameters.Add(New OleDbParameter("ACCmonitor", CType(txtACCmonitor.Text, String)))
cmd.Parameters.Add(New OleDbParameter("ACCmodel", CType(txtACCmodel.Text, String)))
cmd.Parameters.Add(New OleDbParameter("ACCserial", CType(txtACCserial.Text, String)))
'the next line starts a checkbox
cmd.Parameters.Add(New OleDbParameter("ACCmouse", CType(chkmouse.Text, String)))
cmd.Parameters.Add(New OleDbParameter("ACCkeyboard", CType(chkkeyboard.Text, String)))
cmd.Parameters.Add(New OleDbParameter("ACCmousepad", CType(chkmousepad.Text, String)))
cmd.Parameters.Add(New OleDbParameter("ACCheadset", CType(chkheadset.Text, String)))
'end of checkbox
cmd.Parameters.Add(New OleDbParameter("RAMmanufacturer", CType(txtRAMmanufacturer.Text, String)))
cmd.Parameters.Add(New OleDbParameter("RAMcapacity", CType(txtRAMcapacity.Text, String)))
cmd.Parameters.Add(New OleDbParameter("RAMserial", CType(txtRAMserial.Text, String)))
End sub
Комментарии:
1. Учитывая, что
Text
свойством элемента управления является typeString
, какой смысл использоватьCType(myControl.Text, String)
, а не простоmuControl.Text
?2. Вы не должны использовать
Text
свойство aCheckBox
. Это просто текст, отображаемый рядом с полем. Свойство релевантности — этоChecked
свойство или, если вы используете три состояния,CheckState
свойство.3. cmd.Параметры. Добавить(новый OleDbParameter(«ACCheadset», CType(chkheadset. Проверка состояния, строка))) не происходит.
4. Почему вы вообще ожидаете этого? Как вы думаете, почему преобразование
CheckState
значения вString
и сохранение этого было бы хорошей идеей? Какое значение вы на самом деле ожидаете сохранить в базе данных?