| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1078 人关注过本帖, 1 人收藏
标题:新手遇到点小问题,请大家帮助纠错,谢谢了
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你有100個Excel文檔,要往同一個數據表中灌入數據,讀第一個Excel時可以zap表,但此後就不能再zap了呀,費心思解決zap問題幹嘛?而隨著Excel文檔的不斷讀入,數據表越來越膨脹,此時每一次zap都要花費巨大的資源和時間,要考慮後續問題啊!100個文檔,而我看你的文檔又是銷售數據,每個文檔的數據量都少不到哪去,到底最後要怎麽做,要仔細斟酌才好。

[ 本帖最后由 TonyDeng 于 2014-2-18 23:07 编辑 ]

授人以渔,不授人以鱼。
2014-02-18 23:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
看看那個問准考證打印問題的,從去年5月份開始就一直在探討各種小問題,都說解決了,時至今日,還是沒有完成整個程序,就是因爲綜合起來的時候,才發現以前那些手段不頂用,顧得頭來顧不到尾,現在才察覺問題沒那麽簡單。早知今日,何必當初,這就叫欲速則不達,差不多一年了。

授人以渔,不授人以鱼。
2014-02-18 23:21
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
收藏
得分:0 
回复 11楼 TonyDeng
版主,我用真实数据实测后,终于知道问题出在哪里了。
还是我的代码写的有问题,在第一个循环中,nrows 是100个文件中的最大的行数。
所以只要每个文件行数不同,那就会抓取到空值,就会报错了。

我应该每打开一个文件,就计算被打开文件的行数,每个文件按照自己的nrows做循环,是不是这样?
2014-02-18 23:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用andyee在2014-2-18 23:25:33的发言:

 
我应该每打开一个文件,就计算被打开文件的行数,每个文件按照自己的nrows做循环,是不是这样?

這是必然要這樣的呀!

授人以渔,不授人以鱼。
2014-02-18 23:26
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
收藏
得分:0 
新手学点东西好辛苦啊
2014-02-18 23:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用andyee在2014-2-18 23:27:55的发言:

新手学点东西好辛苦啊

“新手”,有多個概念。有的人,是本來就懂編程,祇不過不懂某門具體語言,此時他對這門語言是新手,但他有編程的基礎,就知道怎麽考慮問題。有的人,是連編程也不懂的,這又是另一種新手。又有一些,是懂這門語言,也有編程的基礎,但不熟悉具體的業務,也一樣是新手。不同的新手,要針對性的補課,沒有誰是萬能的“高手”,都在某種程度上要學,真要解決現實問題、做出創造效益的程序,哪有不費苦功的,那種祇求現成代碼、東敲一錘西砸一榔頭的,求速成,永遠也不能解決現實問題。磨刀不誤砍柴工,永遠是真理。

授人以渔,不授人以鱼。
2014-02-18 23:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用andyee在2014-2-18 23:25:33的发言:

版主,我用真实数据实测后,终于知道问题出在哪里了。

任何時候都應該用真實數據進行測試,因爲你永遠無法模擬和猜想到真實的數據有什麽匪夷所思的問題存在。而在編寫程序的時候,要留出足够的靈活性去追踪運行時故障的根源,比如你現在這個問題,如果在讀到m1之後,replace之前,有一句檢查m1是否有效的代碼,即使nrows取錯了,也不至於彈出運行時錯誤,換句話説,就算nrows每次都是對的,也難保製作Excel的那個人在某行上輸入錯了數據,而你如果有這麽一段檢查代碼,則在調試時,隨時可以用messagebox()觀察此時位于Excel的哪一行上方便檢查原始文檔,可以主動提示用戶什麽地方哪個數據出錯了,而不是崩潰了事,還無法知道錯誤的大概位置——當用某些“一句性指令”時,就無法追踪到這個程度。對不可控的外部數據,代碼中永遠要保留這種方便調試的機制,因爲數據一個月、一年不出錯,也不保證兩三年後不出錯,一個文檔、十個文檔不出錯,也不保證一百個文檔全不出錯,出錯的時候怎麽辦,這才是最重要的。這就是所謂的編程經驗,編程難保沒錯,有錯是很正常的,但關鍵是如何能够儘快排查到錯誤。

[ 本帖最后由 TonyDeng 于 2014-2-19 00:01 编辑 ]

授人以渔,不授人以鱼。
2014-02-18 23:58
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
收藏
得分:0 
回复 17楼 TonyDeng
谢谢指导,我要好好学学
版主有没有书本推荐,我自己到当当买了两本vfp9.0,读完后发现内容很局限,而且给的实例错误实在太多。
2014-02-19 08:49
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
以下是引用andyee在2014-2-19 08:49:08的发言:

谢谢指导,我要好好学学
版主有没有书本推荐,我自己到当当买了两本vfp9.0,读完后发现内容很局限,而且给的实例错误实在太多。
http://bbs.bccn.net/thread-427048-1-1.html
2014-02-19 09:01
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
收藏
得分:0 
回复 17楼 TonyDeng
我发现nrows出错,根源是在usedrange 上面。

excel表中,如果数据被删除,但是usedrange.select 还是会选中原先老的区域。
所以,用usedrange.rows.count是不靠谱的,还需要对value值做<>''的判断。

谢谢版主。
2014-02-19 10:57
快速回复:新手遇到点小问题,请大家帮助纠错,谢谢了
数据加载中...
 
   



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

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