Как сохранить как «n / a» в MS Access?

#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 свойством элемента управления является type String , какой смысл использовать CType(myControl.Text, String) , а не просто muControl.Text ?

2. Вы не должны использовать Text свойство a CheckBox . Это просто текст, отображаемый рядом с полем. Свойство релевантности — это Checked свойство или, если вы используете три состояния, CheckState свойство.

3. cmd.Параметры. Добавить(новый OleDbParameter(«ACCheadset», CType(chkheadset. Проверка состояния, строка))) не происходит.

4. Почему вы вообще ожидаете этого? Как вы думаете, почему преобразование CheckState значения в String и сохранение этого было бы хорошей идеей? Какое значение вы на самом деле ожидаете сохранить в базе данных?