Foxtable(狐表)用户栏目专家坐堂 → [求助]自动输入问题


  共有10283人关注过本帖树形打印复制链接

主题:[求助]自动输入问题

帅哥哟,离线,有人找我吗?
jackchen
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:54 积分:514 威望:0 精华:0 注册:2011/8/7 9:56:00
[求助]自动输入问题  发帖心情 Post By:2011/9/4 12:58:00 [只看该作者]

  我才发觉一个问题,

表属性中的datacolchanged 这个事件

   似乎是每次只要有一个数据变化,就会造成程序重复运行,效率很差,

我实验了系统自己带的“自动输入”案例

   在其中插入一些对话框,按照正常的思维,应该是从1->2->3->4 or 1->2->5->6 , 但实际上每次从1->2后,就会再次到1再到2,如果找到数据,就到3,这时候数据发生变化,又从1->2->4, 等于重复运行程序很多遍,这里面只有2行数据需要自动输入,如果是几十行数据要自动输入,那速度慢的好像蜗牛一样,

   做一个按钮来运行,可以解决这个重复运行问题,但是我希望是简单化,不想再用一个按钮,是否有其他方法? 我修改后的附件请看

 

 

  MessageBox.Show(1)
'如果刚刚输入的是省市或县市列
If e.DataCol.Name = "省市" OrElse e.DataCol.Name = "县市" Then
    Dim dr As DataRow
    '在行政区域表查找所输入省市和县市的行
    dr = DataTables("行政区域").Find("[省市] = '" & e.DataRow("省市") & "' And [县市] = '" & e.DataRow("县市") & "'")
    MessageBox.Show(2)
       If dr IsNot Nothing Then '如果找到
        '将找到行的区号?邮编内容填入到正在输入的行中.
        e.DataRow("区号") = dr("区号")
          MessageBox.Show(3)
        e.DataRow("邮编") = dr("邮编")
           MessageBox.Show(4)
    Else
        '否则清除区号和邮编两列的内容
        e.DataRow("区号") = Nothing
             MessageBox.Show(5)
        e.DataRow("邮编") = Nothing
             MessageBox.Show(6)

    End If


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/9/4 13:16:00 [只看该作者]

修改任何一列,1都会执行的,这是必须的。

以你的代码为例,修改县市列,会显示1、2,1、3、1、4,这是一个合理的过程。

只要DataColChanged事件中合理判断了列名,并不要担心存在效率问题:

 

http://www.foxtable.com/help/topics/1522.htm

 

[此贴子已经被作者于2011-9-4 13:19:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
jackchen
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:54 积分:514 威望:0 精华:0 注册:2011/8/7 9:56:00
  发帖心情 Post By:2011/9/4 20:31:00 [只看该作者]

哦,谢谢,但是总觉得每次都重复运行,效率会低啊,因为很明显的对比就是用一个按键触发 运行程序,就运行了一遍,用事件,就是重复,时间还是延长了,希望新版本可以改进


 回到顶部