易表在线答疑技术与交流用户社区 → 请教各位老师:这个按钮公式有什么问题?


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

主题:请教各位老师:这个按钮公式有什么问题?

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


加好友 发短信
等级:论坛游民 帖子:89 积分:298 威望:0 精华:0 注册:2008/7/4 20:12:00
请教各位老师:这个按钮公式有什么问题?  发帖心情 Post By:2010/9/7 21:39:00 [显示全部帖子]

设计思路:
我的数据库中数据有2万多条了,并且经常不断追加,增加新数据的方法是使用EXCEL数据表导入(因为是从网络数据中导出来的)的,有些记录是录入过的,因此,导入时先在一个临时表(表名“追加”)中先导入,再与现有数据库表(表名“已发证”)中的数据进行比较(比较公式设在“追加”表的“对比”字段中),如果已经导入过,就标记不追加并删除该重复记录,如果没有导入过,则把“追加”表中的新数据导入到“已发证”表中,并进行相关列的刷新计算,同时标记“追加批次、追加文件名”等内容便于查对。为此设计一导入功能按键,公式为:
Do(112) And if(msgbox("导入前请确认已对EXCEL文件进行了必要处理!",2)= True , if(msgbox("本功能只导入数据库中没有的记录,确定吗?",2)= True ,OpenGrid("追加") And delfor(GridName) And SetVariable("%文件名%",GetFileName("Excel文件|*.xls","从EXCEL文件中导入发证数据" ,0)) And ImportDBFile([%文件名%],6, Substitute(Split([%文件名%],"\",[%\号数%]),".xls","")) And DelFor(GridName,"林权申请号", "=","") And RecalcCol("追加","对比") And DelFor("追加","对比", "=" , -1) And Copyrows("已发证") And OpenGrid("已发证") And SetVariable("%文件名%",Substitute(Split([%文件名%],"\",[%\号数%]),".xls","")) And RecalcColfor("已发证","座落","追加批次", "=" ,"") And RecalcColfor("已发证",34,"追加批次", "=" ,"") And RecalcColfor("已发证",35,"追加批次", "=" ,"") And RecalcColfor("已发证",36,"追加批次", "=" ,"") And RecalcColfor("已发证",37,"追加批次", "=" ,"") And RecalcColfor("已发证",38,"追加批次", "=" ,""),""),"") And Setvariable("%批次%",maxfor("已发证","追加批次")+1) And ReplaceFor("已发证","追加文件名",[%文件名%],"追加批次", "=" ,"") And ReplaceFor("已发证","追加批次",[%批次%],"追加批次", "=" ,"") And MsgBox("本次追加"+Text([追加!Rows])+"条记录!",1,4)

问题:
   1、点击按钮功能时:有时程序直接退出;有时运行其他程序功能后,再点击运行这一按钮功能,又能正常运行,完成预期功能。请教:为什么有时会不运行而关闭程序退出?(注:系统为正式注册版)
   2、随着数据不断追加,发现运行速度越来越慢。请教:可以怎样优化公式提高运行速度?同时,怎样增加一个提示性的功能,提示进行到了哪一步?

请各位老师指教!学生谢谢了!


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


加好友 发短信
等级:论坛游民 帖子:89 积分:298 威望:0 精华:0 注册:2008/7/4 20:12:00
  发帖心情 Post By:2010/9/7 22:20:00 [显示全部帖子]

谢谢hbfnmxb 老师的回复,因数据保密问题,不方便上传文件!请谅解!期待指教。。。。。。。。

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


加好友 发短信
等级:论坛游民 帖子:89 积分:298 威望:0 精华:0 注册:2008/7/4 20:12:00
  发帖心情 Post By:2010/9/7 22:56:00 [显示全部帖子]

谢谢总版主!找到问题了,那就用变量来中转吧!非常感谢!!

比较两个表中的数据,表的字段结构一样,其中一个字段(“林权申请号”)的数据是唯一的,我用这个列数据与“已发证”数据表的同列数据作个数统计逐一比较(如在临时表中增加一个“对比”字段,对这个字段设计一个刷新公式:if(CountFor("已发证","林权申请号", "=" ,[林权申请号])>0,-1,0)),大于0则认为已经有记录,否则认为没有导入过。请问有什么方法比这个运算快!谢谢!


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


加好友 发短信
等级:论坛游民 帖子:89 积分:298 威望:0 精华:0 注册:2008/7/4 20:12:00
  发帖心情 Post By:2010/9/7 23:38:00 [显示全部帖子]

谢谢总版主!改用这个函数试试!大大的收获!!!!

上面那个导入数据功能的公式,我把您划删除线的那行命令提前到if函数前面,运行就没有关闭退出了!再次感谢指教。


 回到顶部