Не входит в windows.forms.datagrid при переходе на vb.net 2003 с 2008 года
Dim sqlsyntax As String
Dim result As String
sqlsyntax = "INSERT INTO tblOfficeEquipmentProfile(OE_ID, OE_Category,OE_SubCategory, OE_Name, OE_User, OE_Brand, OE_Model, OE_Specs, OE_SerialNo, OE_PropertyNo, OE_Static_IP, OE_Vendor, OE_PurchaseDate, OE_WarrantyInclusiveYear, OE_WarrantyStatus, OE_Status, OE_Dept_Code,OE_Location_Code,OE_Remarks)" _
& "VALUES(@OE_ID,@OE_Category,@OE_SubCategory,@OE_Name,@OE_User,@OE_Brand,@OE_Model,@OE_Specs,@OE_SerialNo,@OE_PropertyNo,@OE_Static_IP,@OE_Vendor,@OE_PurchaseDate,@OE_WarrantyInclusiveYear,@OE_WarrantyStatus,@OE_Status,@OE_Dept_Code,@OE_Location_Code,@OE_Remarks)"
Dim adapter As SqlDataAdapter
adapter.InsertCommand = New SqlCommand(sqlsyntax, sqlconn)
adapter.InsertCommand.Parameters.Add("@OE_ID", SqlDbType.VarChar)
adapter.InsertCommand.Parameters.Add("@OE_Category", SqlDbType.Char)
adapter.InsertCommand.Parameters.Add("@OE_SubCategory", SqlDbType.Char)
adapter.InsertCommand.Parameters.Add("@OE_Name", SqlDbType.VarChar)
adapter.InsertCommand.Parameters.Add("@OE_User", SqlDbType.VarChar)
adapter.InsertCommand.Parameters.Add("@OE_Brand", SqlDbType.VarChar)
adapter.InsertCommand.Parameters.Add("@OE_Model", SqlDbType.VarChar)
adapter.InsertCommand.Parameters.Add("@OE_Specs", SqlDbType.VarChar)
adapter.InsertCommand.Parameters.Add("@OE_SerialNo", SqlDbType.VarChar)
adapter.InsertCommand.Parameters.Add("@OE_PropertyNo", SqlDbType.VarChar)
adapter.InsertCommand.Parameters.Add("@OE_Static_IP", SqlDbType.VarChar)
adapter.InsertCommand.Parameters.Add("@OE_Vendor", SqlDbType.VarChar)
adapter.InsertCommand.Parameters.Add("@OE_PurchaseDate", SqlDbType.SmallDateTime)
adapter.InsertCommand.Parameters.Add("@OE_WarrantyInclusiveYear", SqlDbType.Int)
adapter.InsertCommand.Parameters.Add("@OE_WarrantyStatus", SqlDbType.Char)
adapter.InsertCommand.Parameters.Add("@OE_Status", SqlDbType.VarChar)
adapter.InsertCommand.Parameters.Add("@OE_Dept_Code", SqlDbType.Char)
adapter.InsertCommand.Parameters.Add("@OE_Location_Code", SqlDbType.Char)
adapter.InsertCommand.Parameters.Add("@OE_Remarks", SqlDbType.VarChar)
For i As Integer = 0 To DataGrid1.VisibleRowCount - 1
'adapter.InsertCommand.Parameters(0).Value = Convert.ToInt32(txtEmpID.Text.Trim)
adapter.InsertCommand.Parameters(0).Value = DataGrid1(i, 0).GetType
adapter.InsertCommand.Parameters(1).Value = DataGrid1(i, 1).GetType
adapter.InsertCommand.Parameters(2).Value = DataGrid1(i, 2).GetType
adapter.InsertCommand.Parameters(3).Value = DataGrid1(i, 3).GetType
adapter.InsertCommand.Parameters(4).Value = DataGrid1(i, 4).GetType
adapter.InsertCommand.Parameters(5).Value = DataGrid1(i, 5).GetType
adapter.InsertCommand.Parameters(6).Value = DataGrid1(i, 6).GetType
adapter.InsertCommand.Parameters(7).Value = DataGrid1(i, 7).GetType
adapter.InsertCommand.Parameters(8).Value = DataGrid1(i, 8).GetType
adapter.InsertCommand.Parameters(9).Value = DataGrid1(i, 9).GetType
adapter.InsertCommand.Parameters(10).Value = DataGrid1(i, 10).GetType
adapter.InsertCommand.Parameters(11).Value = DataGrid1(i, 11).GetType
adapter.InsertCommand.Parameters(12).Value = DataGrid1(i, 12).GetType
adapter.InsertCommand.Parameters(13).Value = DataGrid1(i, 13).GetType
adapter.InsertCommand.Parameters(14).Value = DataGrid1(i, 14).GetType
adapter.InsertCommand.Parameters(15).Value = DataGrid1(i, 15).GetType
adapter.InsertCommand.Parameters(16).Value = DataGrid1(i, 16).GetType
adapter.InsertCommand.Parameters(17).Value = DataGrid1(i, 17).GetType
adapter.InsertCommand.Parameters(18).Value = DataGrid1(i, 18).GetType
result = adapter.InsertCommand.ExecuteNonQuery()
MsgBox("success fully added")
adapter.InsertCommand.Parameters.Clear()
Next
сэр, я изменил код для моих следующих данных SQL,
но вернул ошибку здесь
----> adapter.InsertCommand = Новый SqlCommand (sqlsyntax, sqlconn)
ОШИБКА: в EOEHR.exe произошло необработанное исключение типа "System.NullReferenceException".
Дополнительная информация: Ссылка на объект не установлена для экземпляра объекта.
1 ответ
Насколько я знаю DataGrid
доступ к клеткам с помощью индексации MyDataGrid(RowIndex, ColumnIndex)
так же, как массив. Это позволяет вам получить или установить значение указанной ячейки в качестве объекта, который вам, возможно, придется или не нужно приводить к соответствующему типу.
.Row(Index)
не работает для этого элемента управления, также не работает .Column(Index)
потому что, кажется, нет коллекции, выставленной для любого из этих объектов.
Вы можете попробовать изменить свой код на это:
For i As Integer = 0 To 'Get the table from the data source here and loop through that instead of just looping through the datagrid.
adapter.InsertCommand.Parameters(0).Value = Convert.ToInt32(txtEmpID.Text.Trim)
adapter.InsertCommand.Parameters(1).Value = grdFamily(i, 0).ToString()
adapter.InsertCommand.Parameters(2).Value = grdFamily(i, 1).ToString()
adapter.InsertCommand.Parameters(3).Value = grdFamily(i, 2).ToString()
adapter.InsertCommand.Parameters(4).Value = grdFamily(i, 3).ToString()
result = adapter.InsertCommand.ExecuteNonQuery()
adapter.InsertCommand.Parameters.Clear()
Примечание. Я не знаю, какие у вас типы данных, поэтому я не могу привести их к соответствующему типу в этом примере.
ОБНОВИТЬ:
Просто понял, что ваш код на C#, а мой ответ был на VB.Net, и я обновил его до правильного синтаксиса C#.
UPDATE2:
Не уверен, используете ли вы C# или VB.NET, у вас, кажется, есть смесь обоих, поэтому снова обновите ответ на VB.Net, чтобы отразить ваш вопросительный тег.
ОБНОВЛЕНИЕ 3:
Хорошо, после некоторого исследования то, что вы пытаетесь сделать, кажется очень сложным сделать через сетку данных. Вы действительно должны получить VS2012 Express, как @Dai предложил в комментариях к вашему вопросу.
В любом случае, если вы настроены на использование ti в.NET 1.1, вам действительно нужно DataTable
вы используете для заполнения сетки данных и проходите через нее, поскольку она НАМНОГО проще. Вы можете найти много источников в Интернете, которые расскажут вам, как это сделать.
Я не могу оказать вам больше помощи, чем эта. И, честно говоря, я думаю, что это такой же хороший ответ, как вы получите, если кто-то здесь не имеет какого-то унаследованного кода или не помнит.Net 1.1 и не хочет переписать ваш код для вас.