是这样我:我对我数据库中表的记录进行删除操作,每条记录的第一列(列名为步骤)是该记录的编号,从1开始,按1递增(注意,该列不是自动编号而是由我在程序中已经实现了)我用的是Access
具体如下;
列名: 步骤 力值归零 位移归零 运行速度 方向 停止于 暂停时间
数据类型: 整型 True/False True/False 整型 文本 文本 整型
*******由于一行写不下,我接在下一行写********
列名: 返回步骤 循环次数 已循环次数
数据类型: 整型 整型 整型我的要做的是每当我删除一条记录时,表中其他记录的步骤号可以自动调整,比如:
我表中有6条记录,每条记录的步骤字段分别是1,2,3,4,5,6
我删除第2条记录后,后面的4条记录的步骤字段的值应都减1,变为2,3,4,5
我的程序运行后出了这样的故障:我从最后一条记录往前一条一条删时(先删6,再删5,....1)没任何问题,但我从中间连续删除在某个位置上的记录时(比如我总删除步骤为3的记录),DataGrid上相应单元格的值第1次变了后就再也不变了,如果我不连续某个位置上的记录而是乱删除时,又会出现步骤字段的值有时变化不对的情况,说了这么多,大家有可能云里雾里,还是看具体程序吧,若你帮我解决了而决的分不够,我再加Private Sub btnDeleteStep_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeleteStep.Click '首先判断表中是否为空,若为空则不能执行删除操作
If datagridTestStep.VisibleRowCount = 0 Then
MsgBox("表中数据已空,无法进行删除操作!", MsgBoxStyle.Critical, "删除提示")
Exit Sub
End If Dim stepNo As Integer = datagridTestStep.CurrentCell.RowNumber + 1 '表中数据不空,在删除前进行删除确认提示!
If MsgBox("您确实要删除第" + stepNo.ToString + "步测试吗?", vbQuestion + vbOKCancel, "删除提示") = DialogResult.Cancel Then '不删除
Exit Sub
Else
DeleteStep(stepNo) '修改返回步骤数下拉框中的内容
Dim i As Integer
For i = stepNo + 1 To cmbStepNo.Items.Count - 1
cmbStepNo.Items(i) = (i - 1).ToString
Next '在返回步骤数下拉框中移出被删除的步骤
cmbStepNo.Items.RemoveAt(stepNo) '修改表中的步骤字段并更新DataGrid中的内容
UpdateStepNo(stepNo - 1) '提示已删除
MsgBox("已删除第" + stepNo.ToString + "步测试!", vbInformation + vbOKCancel, "删除结果提示")
End If
End Sub'删除DataGrid中CurrentCell所对应的那条记录
Private Sub DeleteStep(ByVal StepNo As Integer)
Try
Dim strSQL As String = "Delete From TestStep Where 步骤= " + StepNo.ToString()
Dim cmd As New OleDbCommand(strSQL, myCon)
If myCon.State = ConnectionState.Closed Then
myCon.Open()
End If
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Finally
myCon.Close()
End Try
End Sub '修改表中的步骤字段并更新DataGrid中的内容
Private Sub UpdateStepNo(ByVal StartNo As Integer)
Try
Dim strSQL As String = "Select * From TestStep"
Dim cmd As New OleDbCommand(strSQL, myCon)
Dim myDataSet As New DataSet
Dim myAdapter As New OleDbDataAdapter
If myCon.State = ConnectionState.Closed Then
myCon.Open()
End If
myAdapter.SelectCommand = cmd
myAdapter.Fill(myDataSet, "TestStep")
Dim EndNo As Integer = myDataSet.Tables(0).Rows.Count - 1
For i As Integer = StartNo To EndNo
myDataSet.Tables(0).Rows(i)(0) = (i + 1).ToString
myDataSet.Tables(0).Rows(i).AcceptChanges()
Next
myAdapter.Update(myDataSet.Tables(0))
myDataSet.Tables(0).AcceptChanges() '更新DataGrid中的显示
datagridTestStep.DataSource = myDataSet.Tables(0)
Catch ex As Exception
MsgBox(ex.ToString)
Finally
myCon.Close()
End Try
End Sub
具体如下;
列名: 步骤 力值归零 位移归零 运行速度 方向 停止于 暂停时间
数据类型: 整型 True/False True/False 整型 文本 文本 整型
*******由于一行写不下,我接在下一行写********
列名: 返回步骤 循环次数 已循环次数
数据类型: 整型 整型 整型我的要做的是每当我删除一条记录时,表中其他记录的步骤号可以自动调整,比如:
我表中有6条记录,每条记录的步骤字段分别是1,2,3,4,5,6
我删除第2条记录后,后面的4条记录的步骤字段的值应都减1,变为2,3,4,5
我的程序运行后出了这样的故障:我从最后一条记录往前一条一条删时(先删6,再删5,....1)没任何问题,但我从中间连续删除在某个位置上的记录时(比如我总删除步骤为3的记录),DataGrid上相应单元格的值第1次变了后就再也不变了,如果我不连续某个位置上的记录而是乱删除时,又会出现步骤字段的值有时变化不对的情况,说了这么多,大家有可能云里雾里,还是看具体程序吧,若你帮我解决了而决的分不够,我再加Private Sub btnDeleteStep_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeleteStep.Click '首先判断表中是否为空,若为空则不能执行删除操作
If datagridTestStep.VisibleRowCount = 0 Then
MsgBox("表中数据已空,无法进行删除操作!", MsgBoxStyle.Critical, "删除提示")
Exit Sub
End If Dim stepNo As Integer = datagridTestStep.CurrentCell.RowNumber + 1 '表中数据不空,在删除前进行删除确认提示!
If MsgBox("您确实要删除第" + stepNo.ToString + "步测试吗?", vbQuestion + vbOKCancel, "删除提示") = DialogResult.Cancel Then '不删除
Exit Sub
Else
DeleteStep(stepNo) '修改返回步骤数下拉框中的内容
Dim i As Integer
For i = stepNo + 1 To cmbStepNo.Items.Count - 1
cmbStepNo.Items(i) = (i - 1).ToString
Next '在返回步骤数下拉框中移出被删除的步骤
cmbStepNo.Items.RemoveAt(stepNo) '修改表中的步骤字段并更新DataGrid中的内容
UpdateStepNo(stepNo - 1) '提示已删除
MsgBox("已删除第" + stepNo.ToString + "步测试!", vbInformation + vbOKCancel, "删除结果提示")
End If
End Sub'删除DataGrid中CurrentCell所对应的那条记录
Private Sub DeleteStep(ByVal StepNo As Integer)
Try
Dim strSQL As String = "Delete From TestStep Where 步骤= " + StepNo.ToString()
Dim cmd As New OleDbCommand(strSQL, myCon)
If myCon.State = ConnectionState.Closed Then
myCon.Open()
End If
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Finally
myCon.Close()
End Try
End Sub '修改表中的步骤字段并更新DataGrid中的内容
Private Sub UpdateStepNo(ByVal StartNo As Integer)
Try
Dim strSQL As String = "Select * From TestStep"
Dim cmd As New OleDbCommand(strSQL, myCon)
Dim myDataSet As New DataSet
Dim myAdapter As New OleDbDataAdapter
If myCon.State = ConnectionState.Closed Then
myCon.Open()
End If
myAdapter.SelectCommand = cmd
myAdapter.Fill(myDataSet, "TestStep")
Dim EndNo As Integer = myDataSet.Tables(0).Rows.Count - 1
For i As Integer = StartNo To EndNo
myDataSet.Tables(0).Rows(i)(0) = (i + 1).ToString
myDataSet.Tables(0).Rows(i).AcceptChanges()
Next
myAdapter.Update(myDataSet.Tables(0))
myDataSet.Tables(0).AcceptChanges() '更新DataGrid中的显示
datagridTestStep.DataSource = myDataSet.Tables(0)
Catch ex As Exception
MsgBox(ex.ToString)
Finally
myCon.Close()
End Try
End Sub
解决方案 »
- 无效的秩说明符: 应为“,”或“]”,如何解决
- 不装驱动,如何进行小票打印?
- 一个非常棘手的问题 System.Web.HttpContext.Current==null
- 做过crm的兄弟们,,有个问题请教一下,,客户和客服的关系是怎么样建立的。
- TextBox的奇怪问题:不能判断为空?
- 如何实现查询后的值成 "11,22,33"
- 求c#下winform中datagrid使用大全.(100分求..努力学习winform)
- c# 获得剪贴板的多个图片
- 求份好看的Silverlight登录窗体样式
- Web 服务引用的问题
- 本人刚刚开发完毕一套仓库管理系统和固定设备管理系统.有需求者请和我联系
- RichTextBox控件怎么不能我鼠标拖拽选取啊
还有你要检查一下myDataSet.Tables(0)中的记录顺序是不是按步骤数来的