VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

請教在欄位中加數字的問題(要依照位置來加)
前往頁面 上一頁  1, 2, 3  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
sthuang66



註冊時間: 2014-04-27
文章: 178


第 16 樓

發表發表於: 星期一 四月 11, 2016 7:29 pm    文章主題: 引言回覆

謝謝兩位指導!我再試試!好精簡的代碼!
回頂端
檢視會員個人資料 發送私人訊息
perry



註冊時間: 2014-07-20
文章: 203


第 17 樓

發表發表於: 星期一 四月 11, 2016 8:06 pm    文章主題: 引言回覆

syntech大大的指令再多+IIF條件即可
UPDATE TBL1 SET PATH = SUBSTR(PATH,1,2*(I-1)) ; && <= 藍色那段
+ IIF(SUBSTR(PATH,2*(I-1)+1,1)=' ',' '+SUBSTR(PATH,2*(I-1)+1,1),IIF(SUBSTR(PATH,2*(I-1)+1,1)>='A',LTRIM(STR(CEILING(I/3)+4))+CHR(ASC(SUBSTR(PATH,2*(I-1)+1,1))-16),LTRIM(STR(CEILING(I/3)))+SUBSTR(PATH,2*(I-1)+1,1))) ; && <= 紅色那段
+ SUBSTR(PATH,2*I) ; && <= 綠色那段
WHERE ALLTRIM(PATH) !='FM' AND ALLTRIM(PATH) !='UL'
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 18 樓

發表發表於: 星期一 四月 11, 2016 11:14 pm    文章主題: 引言回覆

代碼:

ALLTRIM(PATH) !='UL'


應該是

代碼:

ALLTRIM(PATH) NOT LIKE '[UL]_'


或是

代碼:

PATH NOT LIKE '%[UL]_'


"FM"的條件也可以合併啦.


關於iif 那段,
perry 兄和我的直覺一樣,小修改直接用iif 疊一疊就過了,
但這真是超不具美感的,像有字天書一般 XD

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙


syntech 在 星期二 四月 12, 2016 9:16 am 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
perry



註冊時間: 2014-07-20
文章: 203


第 19 樓

發表發表於: 星期二 四月 12, 2016 12:13 am    文章主題: 引言回覆

syntech 寫到:

但這真是超不具美感的,像有字天書一般 XD


沒考慮多想就直接加上去^^'''
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 20 樓

發表發表於: 星期二 四月 12, 2016 8:25 am    文章主題: 引言回覆

大家想法都一樣.

沒幾個CASE 不要多花腦筋. XD

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
bx1166



註冊時間: 2011-12-06
文章: 273


第 21 樓

發表發表於: 星期二 四月 12, 2016 9:31 am    文章主題: 引言回覆

我認為程式簡潔易懂是一件需要重視的事情
不曉得各位有沒有這樣的經驗
多年以後 以前的客戶 希望你增加一些新的功能
而你當年 一時的靈感 寫出一些你現在都忘記是怎麼一回事
而你當年又為了趕時間 沒有寫附註說明
然後你看著這幾段程式 心裡想著 這是甚麼碗糕?
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 22 樓

發表發表於: 星期二 四月 12, 2016 10:33 am    文章主題: 引言回覆

雖然我認為這是兩回事啦.

經過歸納演繹的做法不是什麼奇怪的技巧.
就跟你寫一個梯形面積求解的程式,
最基礎的就是積分的作法 ----- 用加的,
但是正常人會用 (上底+下底)*高/2

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
ckp6250



註冊時間: 2004-07-30
文章: 1645


第 23 樓

發表發表於: 星期二 四月 12, 2016 6:27 pm    文章主題: 引言回覆

bx1166 寫到:

多年以後 以前的客戶 希望你增加一些新的功能
而你當年 一時的靈感 寫出一些你現在都忘記是怎麼一回事
而你當年又為了趕時間 沒有寫附註說明
然後你看著這幾段程式 心裡想著 這是甚麼碗糕?


我的經驗和您稍有不同,
若客戶肯花錢,不論過了多少年,一定想得起來。

若客戶不想花錢只想用嚕的。
三個月前的也想不起來。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
perry



註冊時間: 2014-07-20
文章: 203


第 24 樓

發表發表於: 星期二 四月 12, 2016 6:35 pm    文章主題: 引言回覆

個人比較懶,不會去回憶= ='''
直接針對問題寫 1 只 prg 解決@@安全又保險!!

能一天絕不迤一星期...TIM ->Time Is Money,
不管對客戶或自己而言都是.
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 178


第 25 樓

發表發表於: 星期二 四月 12, 2016 7:08 pm    文章主題: 引言回覆

我依照perry代碼改寫好了
PRIVATE P_STR,I,N_STR,J
P_STR='111222333444'
D_STR='555666777888'
SET EXCLUSIVE OFF
SELECT 0
USE D1 AGAIN
SELECT 0
SELECT *,SPACE(12) AS NEWPATH FROM D1 INTO DBF TESTD1
GO TOP
SCAN
N_STR=''
x=path
For I=1 to 12
J=UPPE(subs(x,i,1))
Do Case
*資料內容組合大概分成下列4種
Case J=' '
Case J$'FUL' and I<12
*如果有連續2英文的不會摻雜其他資料
*N_STR=CHRT(x,' ','')
*EXIT &&結束迴圈
N_STR=N_STR+J+subs(x,i+1,1)
I=I+1
Case J>='A'
N_STR=N_STR+subs(d_str,i,1)+chr(asc(J)-16) &&asc 49 ='1'
Othe
N_STR=N_STR+subs(p_str,i,1)+J
EndCase
Next
REPLACE NEWPATH WITH N_STR
ENDSCAN
GO TOP
COPY TO NEW
USE IN D1
USE IN TESTD1
ERASE TESTD1.DBF
--------------------------------------------------------------------------
只是請教您
x=path+' ' &&為何要加' '
我按照你的代碼跑與我上面我把空格去掉跑 結果是相同的

N_STR=N_STR+subs(d_str,i,1)+chr(asc(J)-16) &&這個好厲害又精簡
回頂端
檢視會員個人資料 發送私人訊息
perry



註冊時間: 2014-07-20
文章: 203


第 26 樓

發表發表於: 星期二 四月 12, 2016 7:18 pm    文章主題: 引言回覆

原先是想先I=12時出處理第2個字串不會出問題,
後來改好就沒理它了= ='''
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 178


第 27 樓

發表發表於: 星期二 四月 12, 2016 7:23 pm    文章主題: 引言回覆

謝謝您的回覆
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 28 樓

發表發表於: 星期二 四月 12, 2016 8:43 pm    文章主題: 引言回覆

ckp6250 寫到:

我的經驗和您稍有不同,
若客戶肯花錢,不論過了多少年,一定想得起來。

若客戶不想花錢只想用嚕的。
三個月前的也想不起來。


這個是一定要的. Twisted Evil


不過我的習慣是,
現在的工作是下一個工作的資糧,
沒有那種以後用不到的問題及解答.
這是我當兵時候,連長教我的.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
sthuang66



註冊時間: 2014-04-27
文章: 178


第 29 樓

發表發表於: 星期三 四月 13, 2016 11:27 am    文章主題: 引言回覆

syntech 寫到:
代碼:

ALLTRIM(PATH) !='UL'


應該是

代碼:

ALLTRIM(PATH) NOT LIKE '[UL]_'


或是

代碼:

PATH NOT LIKE '%[UL]_'


"FM"的條件也可以合併啦. XD

---------------------------------------------------------------------------------
我試用這個 WHERE PATH NOT LIKE '%[UL]_' 好像VFP9不理會
我按照你和Perry兄給的代碼寫成下面是可以用了
USE D1 IN 0 EXCLUSIVE
ALTER TABLE D1 ALTER PATH C(24)
FOR I=1 TO 12
UPDATE D1 SET PATH = SUBSTR(PATH,1,2*(I-1)) ; && <= 藍色那段
+ IIF(SUBSTR(PATH,2*(I-1)+1,1)=' ',' '+SUBSTR(PATH,2*(I-1)+1,1),IIF(SUBSTR(PATH,2*(I-1)+1,1)>='A',LTRIM(STR(CEILING(I/3)+4))+CHR(ASC(SUBSTR(PATH,2*(I-1)+1,1))-16),LTRIM(STR(CEILING(I/3)))+SUBSTR(PATH,2*(I-1)+1,1))) ; && <= 紅色那段
+ SUBSTR(PATH,2*I) ; && <= 綠色那段
WHERE ALLTRIM(PATH) !='FM' AND ALLTRIM(PATH) !='UL' AND ALLTRIM(PATH) !='UB' AND ALLTRIM(PATH) !='UR' AND ALLTRIM(PATH) !='LL';
AND ALLTRIM(PATH) !='LR' AND ALLTRIM(PATH) !='LB' AND ALLTRIM(PATH) !='LA' AND ALLTRIM(PATH) !='UA' AND ALLTRIM(PATH) !='UN'
NEXT

UPDATE D1 SET PATH = CHRTRAN(PATH, ' ', '') WHERE ALLTRIM(PATH) !='FM' AND ALLTRIM(PATH) !='UL' AND ALLTRIM(PATH) !='UB' AND ALLTRIM(PATH) !='UR' AND ALLTRIM(PATH) !='LL';
AND ALLTRIM(PATH) !='LR' AND ALLTRIM(PATH) !='LB' AND ALLTRIM(PATH) !='LA' AND ALLTRIM(PATH) !='UA' AND ALLTRIM(PATH) !='UN'
QUIT
-----------------------------------------------------------------------------------
就是在path 中有下面這十個重複兩個字的不要加不要拆'
FM'and 'UL' and 'UB' and 'UR' and 'UA' and 'UN' and 'LL'and 'LR'and 'LB' and 'LA'
不過有可能會一個欄位出現UR LR 或 UL LL
----------------------------------------------------------------------------------
目前測試結果SQL語法不好看懂!我真的看了好久才理會!真的要我依樣畫葫蘆都有點難!是天書級的!不過速度比Xbase快個兩秒吧!我的資料庫庫大概是五萬筆!
因為是Update語法與xbase語法不同!所以在欄位出現UR LR程式跑完前者是維持一樣不變後者會URLR緊接著!不過兩種都可以用沒有差別!
以上是我的心得!謝謝各位高手指導
回頂端
檢視會員個人資料 發送私人訊息
perry



註冊時間: 2014-07-20
文章: 203


第 30 樓

發表發表於: 星期三 四月 13, 2016 1:00 pm    文章主題: 引言回覆

update ... wher Not (Left(Allt(paht),1)$'FUL' and Subs(Allt(paht),2,1)>='A')
這樣看,您的資料只處理不是連續 2 英文???
SELECT *,path AS NEWPATH FROM D1 INTO DBF TESTD1
GO TOP
*用 ( ) 框起來,前面+ Not 就是相反條件了^^
Scan For Not (Left(Allt(paht),1)$'FUL' and Subs(Allt(paht),2,1)>='A')
.
.
EndScan

******
或前處理
******
SELECT *,path AS NEWPATH,IIF(LEFT(ALLT(PATH),1)$'FUL' AND SUBS(ALLT(PATH),2,1)>='A',.F.,.T.) AS CHKTF FROM D1 INTO DBF TESTD1
GO TOP
SCAN FOR CHKTF
.
.
EndScan
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 上一頁  1, 2, 3  下一頁
2頁(共3頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作