vsflexgrid控件如何删除选中的多条记录?

Baby 2010-03-24 05:27:55
使用vsflexgrid控件和Adodc1控件关联显示了一张数据表,当用鼠标选中表格的多条记录后按下delete键则删除所选中的所有记录,如何实现?注意,最好通过记录号来删除,而不是通过某个字段值,我的表里面无关键字。
Private Sub vsgrid1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim i&, sql$
Select Case KeyCode
'删除
Case 46:
For i = vsgrid1.SelectedRows - 1 To 0 Step -1
??????
??????

Next
End Select
End Sub
...全文
532 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
action163 2010-03-31
  • 打赏
  • 举报
回复
这么久了还不结贴
Baby 2010-03-29
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100329/10/26446a80-5927-4a0e-9da1-fedadf288a3e.html?seed=1734791173&r=64262026#r_64262026
action163 2010-03-27
  • 打赏
  • 举报
回复
删除指定行
OBJ.RemoveItem Row
试一试


无关键字,比较麻烦
要比对数据了.大家一般都会设个ID的.
guyehanxinlei 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 king06 的回复:]
VB code
Dim i As Long,a as string
With VSFlexGrid1
For i = 1 To .SelectedRows
a= .Cell(flexcpText, .SelectedRow(i - 1), 2) '设第3列是记录号
Cn.Execute ("delete fr……
[/Quote]
支持
神马都能聊 2010-03-26
  • 打赏
  • 举报
回复
如果你显示的数据没有过滤,以下操作可以完成你的要求.
    With Me.VSFlexGrid1

For i = .Rows - .FixedRows To .FixedRows Step -1
'第一步移除全部的选中行
If .IsSelected(i) Then
.RemoveItem i
End If
Next
'第二步清空原有表格中的数据
'Delete from your_table
'第三步将现有数据批量插入数据
For i = .Rows - .FixedRows To .FixedRows Step -1
For ii = .FixedCols + 1 To .Cols - .FixedCols
strsql = strsql & "Select .textmatrix(rowindex,colindex),.textmatrix(...)…… into your_table"
Next
Next
g_cn.execute strsql
End With

xrongzhen 2010-03-26
  • 打赏
  • 举报
回复
只通过记录号 你怎么知道删除哪一条记录 表格中和数据库中如何对应
king06 2010-03-25
  • 打赏
  • 举报
回复
并非我没懂你的意思,关键是"vsflexgrid控件和Adodc1控件关联",不是通过记录集顺序添加的,这样absoluteposition无法确定.如果知道次序,可以考虑用记录集的 delete方法来删除
只能说你的数据库表设计不合理了,加个关键字何妨?比如id. 如果不想显示此列,隐藏该列就是了,vsflexgrid是有隐藏列的方法的.(colhiden)
Baby 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 king06 的回复:]
VB code
Dim i As Long,a as string
With VSFlexGrid1
For i = 1 To .SelectedRows
a= .Cell(flexcpText, .SelectedRow(i - 1), 2) '设第3列是记录号
Cn.Execute ("delete fr……
[/Quote]

对不起,你没明白我的意思,我的表里面没有记录号这一列,我所说的记录号指的是absoluteposition.
Baby 2010-03-24
  • 打赏
  • 举报
回复
使用vsflexgrid控件和Adodc1控件关联显示了一张数据表,当用鼠标选中表格的多条记录后按下delete键则删除所选中的所有记录,如何实现?注意,最好通过记录号来删除,而不是通过某个字段值,我的表里面无关键字。
Private Sub vsgrid1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim i&, sql$
Select Case KeyCode
'删除
Case 46:
For i = vsgrid1.SelectedRows - 1 To 0 Step -1
??????
??????

Next
End Select
End Sub
king06 2010-03-24
  • 打赏
  • 举报
回复
    Dim i As Long,a as string
With VSFlexGrid1
For i = 1 To .SelectedRows
a= .Cell(flexcpText, .SelectedRow(i - 1), 2) '设第3列是记录号
Cn.Execute ("delete from table1 where 记录号='" & a & "'")
.RemoveItem (.SelectedRow(i - 1))
Next
End With

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧