标题:grid部分字段实时显示新录入记录,当录入第二条时卡死,重新连接数据源方式 ...
只看楼主
wabc327
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2021-2-4
结帖率:28.57%
已结贴  问题点数:20 回复次数:21 
grid部分字段实时显示新录入记录,当录入第二条时卡死,重新连接数据源方式返回所有字段,数据全串了……
表单中带有grid,选了必要的几个字段实时更新grid显示,grid在添加新记录之前通过几层set filter to 筛选小范围的记录共浏览,添加一条新的记录后根据序号通过索引排序到正确的位置,以筛选条件及新增记录一同显示,添加第一条记录速度还可以,【确认】后当添加第二条记录时慢的几乎卡死,代码如下:请大师指点……
第一个文本框的两个事件主要是过滤筛选
第一个文本框text1(事件1:gotfocus)
sele b_dagl
set filter to
set order to dahpxmlh  
go top
第一个文本框text1(事件2:losFocus)
public wm_xm,wm_dah
wm_dah=this.value
mll="dah='"+wm_dah+"'"
sele b_dagl
set order to ptdah  &&普通索引档案号
seek wm_dah
    if found()
       store dah to thisform.c1.txtdah.value
       store sfzh to thisform.c1.txtsfzh.value
       store xm to thisform.c1.txtxm.value
       wm_xm=xm
       store xb to thisform.c1.txtxb.value
       store csrq to thisform.c1.txtcsrq.value
       store jg to thisform.c1.Txtjg.value
       store mz to thisform.c1.Txtmz.value
       store zb to thisform.c1.Txtzb.value
       store zt to thisform.c1.Txtzt.value
       store dwmc to thisform.c1.Txtdwmc.value
       store zxbz to thisform.c1.Txtzxbz.value
       set filter to &mll
       set order to dahpxmlh   
       count  to clfs
       sum ys to clys
       store "姓名:"+wm_xm+"      "+ "材料份数:"+allt(str(clfs))+"              " +"材料页数:"+allt(str(clys)) to thisform.caption                                       
       go top
       thisform.
    else
       messagebox('该档案信息未录入,不能补充材料',0+16,"错误信息")
      
      
      
       ("enabled",.f.)
        retu
    endif
THISFORM.REFRESH
【确认】(事件:click)
thisform.grid1.recordsource =null
SELE b_dagl
do case
    case wbsw=1                                 &&添加按钮赋值wbsw=1
            count to jls                        &&统计筛选类别后记录数
            go bott                             &&指向记录尾
            jsq=len(rtrim(pxmlh))               &&删除了字符表达式后续空格后,返回结果字符串长度
            mlh_zdfs=val(subs(pxmlh,jsq-2,3))   &&取出最大份
            set order to dahpxmlh
            seek alltrim(thisform.c1.txtdah.value)+thisform.c1.txtpxmlh.value     
     if found()  
         if jls = mlh_zdfs                                                    &&判断最大份数是否与该类别记录数相等
            blpxmlh1=subs(pxmlh,1,jsq-3)                                      &&取出需要补录的大类别,带空格排序目录号pxmlh
            blyjmlh = alltrim(subs(blpxmlh1,1,3))+alltrim(subs(blpxmlh1,4,7)) &&取出移交大类别,不带空格正常目录号zcmlh
            mlh_fs=val(subs(pxmlh,jsq-2,3))                                   &&取出当前记录取出第几份  取表单第几份也可以
            go bott
            do while .not. bof() .and. thisform.c1.txtdah.value = dah .and. blpxmlh1=subs(pxmlh,1,jsq-3) .and. val(subs(pxmlh,jsq-2,3))>=mlh_fs   
               blpxmlh2=str(val(subs(pxmlh,jsq-2,3))+1,3)                          &&目录末位 第几份资料顺序加1
               repl next 1 yjmlh with blyjmlh+alltrim(blpxmlh2),pxmlh with blpxmlh1+blpxmlh2,gjsy with alltrim(dah)+"-"+blyjmlh+alltrim(blpxmlh2)+'-'+alltrim(str(ys))
                    skip -1
             enddo
               insert into   b_dagl (dah,xm,xb,mz,csrq,sfzh,zb,jg,dwmc,zt,pxmlh,yjmlh,clmc,clrq,ys,bz,gjsy,lry,lrrq);
                values (thisform.c1.txtdah.value,THISFORM.C1.txtxm.VALUE,THISFORM.C1.txtxb.VALUE,THISFORM.C1.Txtmz.VALUE,THISFORM.C1.txtcsrq.VALUE,;
                 THISFORM.C1.txtsfzh.VALUE,thisform.c1.Txtzb.value,thisform.c1.Txtjg.value,thisform.c1.Txtdwmc.value,thisform.c1.Txtzt.value,;
                 THISFORM.C1.txtpxmlh.VALUE,THISFORM.C1.txtyjmlh.VALUE,THISFORM.C1.txtclmc.value,THISFORM.C1.txtclrq.VALUE,val(THISFORM.C1.txtys.VALUE),;
                 THISFORM.C1.txtbz.VALUE,THISFORM.C1.txtgjsy.VALUE,THISFORM.C1.txtlry.VALUE,;THISFORM.C1.txtlrrq.VALUE)         
           else
                        =messagebox('该档案目录未录入完整,不能补充目录,请到档案目录管理中[添加]补充完整!',0+64,'提示信息')
                        
                        
                        
                        ("enabled",.f.)
                        retu               
           endif            
      else
          if  jls+1=val(thisform.c1.txtdnf.value)                        
             insert into   b_dagl (dah,xm,xb,mz,csrq,sfzh,zb,jg,dwmc,zt,pxmlh,yjmlh,clmc,clrq,ys,bz,gjsy,lry,lrrq);
             values (thisform.c1.txtdah.value,THISFORM.C1.txtxm.VALUE,THISFORM.C1.txtxb.VALUE,THISFORM.C1.Txtmz.VALUE,THISFORM.C1.txtcsrq.VALUE,;
              THISFORM.C1.txtsfzh.VALUE,thisform.c1.Txtzb.value,thisform.c1.Txtjg.value,thisform.c1.Txtdwmc.value,thisform.c1.Txtzt.value,;
              THISFORM.C1.txtpxmlh.VALUE,THISFORM.C1.txtyjmlh.VALUE,THISFORM.C1.txtclmc.value,;THISFORM.C1.txtclrq.VALUE,;
              val(THISFORM.C1.txtys.VALUE),THISFORM.C1.txtbz.VALUE,THISFORM.C1.txtgjsy.VALUE,THISFORM.C1.txtlry.VALUE,THISFORM.C1.txtlrrq.VALUE)
          else
              =messagebox('该档案目录无需补充,请确认“整理”后到档案目录管理中[添加]!',0+64,'提示信息')
              
              
              
              ("enabled",.f.)
               retu
          endif
   endif
count to clfs
sum ys to clys
store "姓名:"+wm_xm+"      "+"材料份数:"+allt(str(clfs))+"              "+"材料页数:"+allt(str(clys)) to thisform.caption
go top        
thisform.grid1.recordsource = "b_dagl"  &&返回所有的字段,与标题不对应,原本grid只是选了几个字段供浏览,无法返回与标题对应的字段值。
THISFORM.GRID1.Refresh()
=messagebox("档案信息补充成功",0+64,"系统提示")

endcase        
            

[此贴子已经被作者于2022-5-24 14:36编辑过]

搜索更多相关主题的帖子: 录入 value 字段 记录 thisform 
2022-05-24 13:45
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:4 
【确认】(事件:click)中,do case 里只有一个分支case wbsw=1,如果此分支条件不满足时,grid1.recordsource就是null了,这样grid1就空白了
另外:“【确认】后当添加第二条记录时慢的几乎卡死”,只是慢吗?有多慢(需要多少秒)?
2022-05-24 15:04
wabc327
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2021-2-4
得分:0 
分支CASE肯定会满足的,因为只有这一个变量,大约5秒,就是确定插入了数据后,再一次添加时,在文本框输入筛选条件后就开始慢了,‘确认’当中我原本没有重新连接数据源,现在发表的我加了grid连接数据源,但返回所有字段了,与我规划的grid标题不一致,顺便问一下,grid怎样连接数据源返回与标题一样的字段值,【确认】当中究竟需不需要grid加入断开与连接数据源啊!!!

[此贴子已经被作者于2022-5-24 15:30编辑过]

2022-05-24 15:19
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:273
专家分:594
注 册:2012-9-21
得分:4 
mll="dah='"+wm_dah+"'"
这一句条件,你在表单上用一个文本框来表达,将文本框=变量,
再set filter to 文本框
试一下
2022-05-24 15:41
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:565
专家分:1668
注 册:2017-7-16
得分:4 
数据库的记录条数多吗?记录数太多,达到万条以上,慢也属于正常。
2022-05-24 15:47
wabc327
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2021-2-4
得分:0 
回复 5楼 gs2536785678
不多 5万条左右 第一次添加,没有问题,加入了新数据,再输入第二条就开卡了
2022-05-24 15:52
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
如果只是插入新记录,可以不重新指定grid数据源,插入后grid1.SetFocus即可见新记录(当然要符合过滤条件的)
2022-05-24 15:57
wabc327
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2021-2-4
得分:0 
回复 7楼 laowan001
是的 源程序我就是没有指定数据源,没有thisform.grid1.recordsource =null …thisform.grid1.recordsource = "b_dagl" 这两句,插入数据是grid是可以看到的,但再插入一条就卡了,vfp数据库,网络程序,单机测试速度还可以,一到实际用户就没法接受了,太卡了
2022-05-24 16:08
wabc327
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2021-2-4
得分:0 
回复 4楼 zhken
大师:没看懂啊 这样有什么不同么 我是把文本框内容赋给了变量,按照您说的是不是就直接用条件set filter to dah=this.value 就可以了呢
2022-05-24 16:14
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用wabc327在2022-5-24 16:08:08的发言:

是的 源程序我就是没有指定数据源,没有thisform.grid1.recordsource =null …thisform.grid1.recordsource = "b_dagl" 这两句,插入数据是grid是可以看到的,但再插入一条就卡了,vfp数据库,网络程序,单机测试速度还可以,一到实际用户就没法接受了,太卡了

数据源是用户本地的还是网络共享打开的?
如果共享打开的,更新时会等待记录或文件加锁
2022-05-24 16:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509162-1-1.html




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

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