2011-10-24 30 views
0

我有一些DataGridViewComboBoxColumns插入語句。當我嘗試將這些DataGridViewComboBoxColumns的值插入到我的數據庫中時,文本「False」正被插入到字段中。將「false」文本插入到我的數據庫中

這是怎麼發生的?

Dim para As New SqlClient.SqlParameter 
Dim dateValue As String = CStr(DateTimePicker1.Value) 
Dim calendar = Microsoft.VisualBasic.Left(dateValue, 10) 
para.ParameterName = "@company" 
para.Value = company.Selected.ToString 
para.ParameterName = "@division" 
para.Value = division.Selected.ToString 
para.ParameterName = "@date" 
para.Value = DateTimePicker1.Value 
para.ParameterName = "@supplier" 
para.Value = supplier.Selected.ToString 
para.ParameterName = "@material_group" 
para.Value = materialGroup.Selected.ToString 
para.ParameterName = "@cost" 
para.Value = netprice.Selected.ToString 
para.ParameterName = "@dsc" 
para.Value = description.Selected.ToString 
para.ParameterName = "@email" 
para.Value = cmbEmail.SelectedValue 
para.ParameterName = "@userID" 
para.Value = id 
para.ParameterName = "@Name" 
para.Value = txtEmployee.Text 
para.ParameterName = "@val" 
para.Value = newName 
para.ParameterName = "@quantity" 
para.Value = quantity.Selected.ToString 
para.ParameterName = "@wbs" 
para.Value = wba.Selected.ToString 
para.ParameterName = "@marketingCode" 
para.Value = markCodes.Selected.ToString 
para.ParameterName = "@hccNumber" 
para.Value = hccNumber.Selected.ToString 
para.ParameterName = "@currency" 
para.Value = currency.Selected.ToString 

插入細節:

Dim con As New SqlClient.SqlConnection 
Dim myCommand As New SqlClient.SqlCommand 
myCommand.Parameters.Add("@company", SqlDbType.NVarChar, 30).Value = company.Selected.ToString 
myCommand.Parameters.Add("@division", SqlDbType.NVarChar, 30).Value = division.Selected.ToString 
myCommand.Parameters.Add("@date", SqlDbType.NVarChar, 30).Value = DateTimePicker1.Value 
myCommand.Parameters.Add("@supplier", SqlDbType.NVarChar, 30).Value = supplier.Selected.ToString 
myCommand.Parameters.Add("@material_group", SqlDbType.NVarChar, 30).Value = materialGroup.Selected.ToString 
myCommand.Parameters.Add("@cost", SqlDbType.NVarChar, 30).Value = netprice.Selected.ToString 
myCommand.Parameters.Add("@dsc", SqlDbType.NVarChar, 30).Value = description.Selected.ToString 
myCommand.Parameters.Add("@email", SqlDbType.NVarChar, 30).Value = cmbEmail.SelectedValue 
myCommand.Parameters.Add("@userID", SqlDbType.NVarChar, 30).Value = id 
myCommand.Parameters.Add("@Name", SqlDbType.NVarChar, 30).Value = newName 
myCommand.Parameters.Add("@quantity", SqlDbType.NVarChar, 40).Value = quantity.Selected.ToString 
myCommand.Parameters.Add("@wbs", SqlDbType.NVarChar, 40).Value = wba.Selected.ToString 
myCommand.Parameters.Add("@marketingCode", SqlDbType.NVarChar, 40).Value = markCodes.Selected.ToString 
myCommand.Parameters.Add("@hccNumer", SqlDbType.NVarChar, 40).Value = hccNumber.ToString 
myCommand.Parameters.Add("@currency", SqlDbType.NVarChar, 40).Value = currency.Selected.ToString 

Dim myAdapter As New SqlClient.SqlDataAdapter 
Dim sql As String = "Insert into details (company, division, date, supplier, material_group, cost, dsc, email, userID, fullName, marketingCode, wbs, qty, currency) VALUES (@company, @division, @date, @supplier, @material_group, @cost, @dsc, @email, @userID, @Name, @marketingCode, @wbs, @quantity, @currency)" 
myCommand.Connection = con 
myCommand.CommandText = sql 
myAdapter.InsertCommand = myCommand 
myCommand.Connection.Open() 
myCommand.ExecuteNonQuery() 
myCommand.Connection.Close() 

回答

4

如果選擇一些你存儲。

para.Value = company.Selected.ToString 

選擇是布爾!如果該項目被選中

+0

所以我應該把它當作'company.tostring'? – user765942

+0

是的,您必須使用存儲該值的控件的變量。 – Fischermaen

+0

當我取出.ToString時,我在表格中留下了'DataGridViewComboBoxColumn {N'值。你有沒有機會知道這是爲什麼? – user765942

0

company.selected返回true,如果不是假的... ...

你可能想使用company.ToString

+0

當我拿出.ToString我剩下值'DataGridViewComboBoxColumn {N'在我的表中。你有沒有機會知道這是爲什麼? – user765942

+0

-1:不,它不。它表示gridview的列當前被選中,並且company.ToString將序列化類型名稱DataGridViewColumn或類似的東西。 – Fischermaen

2

我不是你想達到什麼樣的某些在這裏,但我不認爲這個腳本會如何工作。您不是構建帶有值的參數列表,而是一遍又一遍地替換一個參數對象。

para.ParameterName = "@company" 
para.Value = company.Selected.ToString 
para.ParameterName = "@division" 
para.Value = division.Selected.ToString 

這將只是第一設置對對象進行@company,和值:company.Selected.ToString,然後再次將其設置爲@division和值:division.Selected.ToString

您的數據類型都是NVarChar,並且您明確將boolean值設置爲字符串(.ToString())。

如果您希望存儲布爾值,請將您的數據類型更改爲bit。然後改變你的價值觀,所以你是路過的boolean值,而不是顯式轉換booleanstring

myCommand.Parameters.Add("@currency", SqlDbType.bit).Value = currency.Selected 
+0

謝謝,我不希望存儲布爾值,我希望存儲字符串,基本上是DataGridViewComboBoxColumn的selectedValue。 – user765942

相關問題