|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
sthuang66
註冊時間: 2014-04-27 文章: 167
第 1 樓
|
發表於: 星期四 四月 25, 2019 6:47 pm 文章主題: 請較高手們!!我的迴圈那裡錯了? |
|
|
我的資料庫檔案格式如下: m10612.DBF, m10611.dbf ,,,,,,,
逐月排列! 我要算的東西是每次append三個月資料後作計算!舉例從10612開始!我先把10612到10610月append後計算成一個DBF!接下來是10611!要把10611到10609append後計算成一個DBF! 如此計算到10607!
我的程式碼如下! 不知道為什麼他只能跑10612就停了!!我的迴圈那裡錯了?
LOCAL START_YM
DATA='D:\DATA\OLD_DATA'
PATH='D:\TT\A904'
START_YM="10612"
FOR I= 1 TO 6
GET_FILE(START_YM)
M1="CTOD(TRANSFORM(FUNC_DATE ,'@R 9999/99/99'))"
P1='&PATH\P1.DBF'
P2='&PATH\P2.DBF'
SELECT *, &M1 AS F_DATE FROM RE INTO DBF RE_NEW
-----------
------------
IF RIGHT(START_YM,2)='01'
START_YM=ALLTRIM(STR(VAL(START_YM)-89))
ELSE
START_YM=ALLTRIM(STR(VAL(START_YM)-1))
ENDIF
ENDFOR
PROCEDURE GET_FILE(START_YM)
TEMP_YM=START_YM
FOR I = 1 TO 3
MFILE='&DATA\M'+TEMP_YM+'.DBF'
RESULT='&PATH\RE.DBF'
SELECT YM,ID,DATE FROM &MFILE INTO TABLE M1
CLOSE DATABASES ALL
IF NOT FILE(RESULT)
COPY FILE TEMP.DBF TO &RESULT
ELSE
USE &RESULT
APPEND FROM TEMP.DBF
ENDIF
ERASE M1.DBF
ERASE TEMP.DBF
IF RIGHT(TEMP_YM,2)='01'
TEMP_YM=ALLTRIM(STR(VAL(TEMP_YM)-89))
ELSE
TEMP_YM=ALLTRIM(STR(VAL(TEMP_YM)-1))
ENDIF
ENDFOR
ENDPROC |
|
回頂端 |
|
|
CPS0204
註冊時間: 2014-08-24 文章: 441
第 2 樓
|
發表於: 星期五 四月 26, 2019 8:01 am 文章主題: |
|
|
主程式當中有
FOR I= 1 TO 6
子程式 get_files 當中也有 for i=1 to 3
這是沖途的
建議:將子程式改為 for k=1 to 3,或是在子程式的迴圈之前加入 local i 來遮蔽上層的變數i
還有 SELECT *, &M1 AS F_DATE FROM RE INTO DBF RE_NEW
改為 SELECT *, &M1. AS F_DATE FROM RE INTO DBF RE_NEW
會好一點 |
|
回頂端 |
|
|
sthuang66
註冊時間: 2014-04-27 文章: 167
第 3 樓
|
發表於: 星期五 四月 26, 2019 9:24 am 文章主題: |
|
|
謝謝CPS0204前輩高手!! 經你提點真的就是這樣!
沒注意到迴圈用同樣變數I 就衝突了!!想破頭兩天!!
真的太感激! |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|