您的位置:程序门 -> vb -> 基础类



批量删除mshflexgrid里所选定的数据,数据库里是删除了但mshflexgrid里没有即时刷新


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


批量删除mshflexgrid里所选定的数据,数据库里是删除了但mshflexgrid里没有即时刷新[已结贴,结贴人:scteam1]
发表于:2007-02-03 00:13:32 楼主
批量删除mshflexgrid里所选定的数据,数据库里是删除了但mshflexgrid里没有即时刷新

private   sub   mshflexgrid1_click() '选中删除的行
with   mshflexgrid1
.textmatrix(.rowsel,   0)   =   "√ "
end   with
end   sub

private   sub   command9_click()
dim   i   as   long
with   mshflexgrid1
for   i   =   1   to   .rows   -   1                                   '循环删除选种的行
if   .textmatrix(i,   0)   =   "√ "   then                       '删除选中的行
.textmatrix(i,   0)   =   "× "  
adodc1.recordset.activeconnection.EXECute   "delete   from   data   where   "   &   adodc1.recordset.fields(0).name   &   "= ' "   &   trim(mshflexgrid1.textmatrix(i,   1))   &   " ' "
end   if
next   i
end   with
end   sub
发表于:2007-02-03 00:53:451楼 得分:0
if   msgbox( "真的要删除这“这里怎么写?”条数据吗? ",   vbquestion   +   vbyesno   +   vbdefaultbutton2,   "提示 ")   =   vbno   then
exit   sub
end   if
发表于:2007-02-03 08:45:142楼 得分:0
adodc1.recordset.activeconnection.EXECute   "delete   from   data   where   "   &   adodc1.recordset.fields(0).name   &   "= ' "   &   trim(mshflexgrid1.textmatrix(i,   1))   &   " ' "

这句话只是对数据库进行了操作,把数据库中的数据记录删掉了,所以mshflexgrid1并没有刷新
你应该在数据库操作之后重新查询数据库,重新给   mshflexgrid1.datasource   赋值,如果你想刷新显示的话。
发表于:2007-02-03 08:59:213楼 得分:0
顶,学习
发表于:2007-02-03 09:02:084楼 得分:0
先到db里删除,然后从显示控件是remove不就行了吗?或是删除之后重新载入一样,解决方法不单单是一种啊!
发表于:2007-02-03 09:03:055楼 得分:0
mshflexgrid1.removeitem   i
发表于:2007-02-03 14:50:556楼 得分:0
那具体代码怎么写啊.mshflexgrid1.removeitem   i无效果,怎么重新给   mshflexgrid1.datasource   赋值?mshflexgrid1.datasource=adodc1   没效果啊。

还有根据上面的代码下面=====这“这里怎么写?”条====怎么写呢
if   msgbox( "真的要删除这“这里怎么写?”条数据吗? ",   vbquestion   +   vbyesno   +   vbdefaultbutton2,   "提示 ")   =   vbno   then
exit   sub
end   if
发表于:2007-02-03 14:59:507楼 得分:0
mshflexgrid1.datasource=adodc1  
问题很简单,给窗体重新刷新肯定有效果.
发表于:2007-02-03 14:59:598楼 得分:0
private   sub   command9_click()
dim   i   as   long
with   mshflexgrid1
for   i   =   1   to   .rows   -   1                                   '循环删除选种的行
        if   .textmatrix(i,   0)   =   "√ "   then                       '删除选中的行
                adodc1.recordset.activeconnection.EXECute   "delete   from   data   where   "   &         adodc1.recordset.fields(0).name   &   "= ' "   &   trim(mshflexgrid1.textmatrix(i,   1))   &   " ' "
                .removeitem   i
        end   if

next   i
end   with
end   sub
发表于:2007-02-04 17:37:439楼 得分:0
还是没解决.
发表于:2007-02-04 17:53:3810楼 得分:0
adodc1.recordsource   =   "select   *   from   data "
adodc1.refresh
.....
用mshflexgrid1.datasource   =   adodc1~~~这句话提示未找到方法或数据成员
用mshflexgrid1.removeitem   i~~~~这句话提示实时错误381下标越界,调试是这句话出错:if   .textmatrix(i,   0)   =   "√ "   then                       '删除选中的行
发表于:2007-02-04 18:38:1111楼 得分:20
执行删除后,即执行
adodc1.recordset.activeconnection.EXECute   "delete   from   data   where   "   &         adodc1.recordset.fields(0).name   &   "= ' "   &   trim(mshflexgrid1.textmatrix(i,   1))   &   " ' "
后再执行下列语句:
adodc1.recordset.requery
set   mshflexgrid1.datasource   =   adodc1
mshflexgrid1.refresh

即可完成自动刷新功能


测试过了,能运行的

不要忘了给分!


快速检索

最新资讯
热门点击