| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2050 人关注过本帖
标题:请教删除代码
只看楼主 加入收藏
lck
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-25
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:18 
请教删除代码
我想请教一下,为什么我写的代码如果是查询到多条记录,我只想删除光标选中的那条记录,该怎么改,我写这个是把所有关于一个学号的所有违纪记录都删除了,求各位高手帮助,谢谢了。
查找按钮代码:
no=alltrim(thisform.ym.page3.pageframe3.page4.Text1.value)

   if empty(no)      
      messagebox("对不起,学号不能为空。",16,"错误")      
        return      
   endif  
   select xswjxx      
   locate for alltrim(xswjxx.学号)=alltrim(no)
   if not found()      
      messagebox("没有找到你输入的学号。",16,"错误")   
        return      
         else
 sele * from xswjxx where 学号=no into cursor xswjtemp
 thisform.ym.page3.pageframe3.page4.grid1.recordsource="xswjtemp"

      endif   
删除按钮代码:
a=trim(thisform.ym.page3.pageframe3.page4.text1.value)
if a==""   
messagebox("学号不能为空!")
else
messagebox("确认要删除吗?",1+64+0,"系统提示!")
select xswjxx
use
use xswjxx.dbf exclusive
dele from xswjxx where 学号=a
pack
thisform.activate
messagebox("删除成功!")
use xswjxx.dbf
select * from xswjxx into cursor xswjtemp
  thisform.ym.page3.pageframe3.page4.grid1.recordsource="xswjtemp"
thisform.refresh
endif
搜索更多相关主题的帖子: return 找到你 记录 
2014-05-14 08:26
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9853
专家分:27248
注 册:2012-2-5
收藏
得分:2 
以下是引用lck在2014-5-14 08:26:02的发言:

我想请教一下,为什么我写的代码如果是查询到多条记录,我只想删除光标选中的那条记录,该怎么改,我写这个是把所有关于一个学号的所有违纪记录都删除了,求各位高手帮助,谢谢了。
查找按钮代码:
no=alltrim(thisform.ym.page3.pageframe3.page4.Text1.value)

   if empty(no)      
      messagebox("对不起,学号不能为空。",16,"错误")      
        return      
   endif  
   select xswjxx      
   locate for alltrim(xswjxx.学号)=alltrim(no)
   if not found()      
      messagebox("没有找到你输入的学号。",16,"错误")   
        return      
         else
 sele * from xswjxx where 学号=no into cursor xswjtemp
 thisform.ym.page3.pageframe3.page4.grid1.recordsource="xswjtemp"

      endif   
删除按钮代码:
a=trim(thisform.ym.page3.pageframe3.page4.text1.value)
if a==""   
messagebox("学号不能为空!")
else
messagebox("确认要删除吗?",1+64+0,"系统提示!")
select xswjxx
use
use xswjxx.dbf exclusive
*dele from xswjxx where 学号=a
Delete Record Recno()
pack
thisform.activate
messagebox("删除成功!")
use xswjxx.dbf
select * from xswjxx into cursor xswjtemp
  thisform.ym.page3.pageframe3.page4.grid1.recordsource="xswjtemp"
thisform.refresh
endif

坚守VFP最后的阵地
2014-05-14 08:40
lck
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-25
收藏
得分:0 
谢谢,我试试
2014-05-14 08:47
lck
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-25
收藏
得分:0 
还是不能只删除指定的一条,只能把所有的都删除了、
2014-05-14 08:51
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:2 
dele from xswjxx where 学号=a
----dele from xswjxx where 学号==a
2014-05-14 09:08
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:2 
表格的数据源直接用当前表会简单得多:
用SET FILTER TO 条件
然后 COUNT TO 变量
如果变量大于0,在表格中显示筛选出来记录。在表格中光标定位某记录后,直接执行:dele 就可以删除当前记录。

相互学习,互相交流,共同提高。
2014-05-14 09:55
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:2 
首先,与表格关联的临时表需要添加记录号字段
查询按钮的代码修改如下(对于修改的部分,我已经加了标记):
程序代码:
no=alltrim(thisform.ym.page3.pageframe3.page4.Text1.value)
if empty(no)    
   messagebox("对不起,学号不能为空。",16,"错误")    
   return    
endif
select xswjxx    
locate for alltrim(xswjxx.学号)=alltrim(no)
if not found()    
     messagebox("没有找到你输入的学号。",16,"错误") 
     return    
else
    *-----------------------------------------------------------------------
    sele *,recn() as 记录号 from xswjxx where 学号=no into cursor xswjtemp
    *-----------------------------------------------------------------------
    thisform.ym.page3.pageframe3.page4.grid1.recordsource="xswjtemp"、
endif
删除按钮的代码修改如下:
程序代码:
a=trim(thisform.ym.page3.pageframe3.page4.text1.value)
if a=="" 
    messagebox("学号不能为空!")
else
   * ---------------------------------------------------------
   if messagebox("确认要删除吗?",1+64+0,"系统提示!") = 2
        return
    endif
   *---------------------------------------------------------
    select xswjxx
    use
    use xswjxx.dbf exclusive
    * ====================================
    delete record xswjtemp.记录号
    * ====================================
    pack
    messagebox("删除成功!")
    use xswjxx.dbf
    select * from xswjxx into cursor xswjtemp
    thisform.ym.page3.pageframe3.page4.grid1.recordsource="xswjtemp"
    thisform.refresh
endif

泉城飞狐
2014-05-14 10:52
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11858
专家分:43421
注 册:2006-5-13
收藏
得分:2 
有必要那么复杂吗?只要在删除按钮写入下列代码就行:
a=trim(thisform.ym.page3.pageframe3.page4.text1.value)
if a==""   
    messagebox("学号不能为空!")
else
    if messagebox("确认要删除吗?",36,"系统提示!")=1
        dele
        messagebox("删除成功!")
    endif
endif

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2014-05-14 10:55
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11858
专家分:43421
注 册:2006-5-13
收藏
得分:0 
pack的命令可以放在退出表单时执行,否则会引起表单中表格失去数据源而显示空白。
楼主代码中关闭表又重新打开表再删除的操作纯属多余的。
如果page4.text1.value是手工录入的(不是绑定记录自动定位的),则上述代码修改如下:
a=trim(thisform.ym.page3.pageframe3.page4.text1.value)
locate for alltrim(xswjxx.学号)=alltrim(a)
if eof()   
    messagebox("没有找到指定的学号!")
else
    if messagebox("确认要删除吗?",36,"系统提示!")=1
        dele
        messagebox("删除成功!")
    endif
endif

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2014-05-14 11:01
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
回复 8 楼 hu9jj
楼主的表格来源于临时表,而不是实体表。楼主的意思是在表格中选择一条记录后,单击删除按钮时删除实体表中的记录。因此,在删除记录时必须对实体表中的记录进行定位。

[ 本帖最后由 liuxingang28 于 2014-5-14 11:07 编辑 ]

泉城飞狐
2014-05-14 11:06
快速回复:请教删除代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018367 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved