|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
cdy
註冊時間: 2008-12-30 文章: 26
第 1 樓
|
發表於: 星期四 十二月 25, 2014 11:03 am 文章主題: 如何產生3碼流水號? |
|
|
需求如下:
可自動+1
如果001-999用完
可接下來自動產生 A00-A99,B00-B99...Z00-Z99
到Z99時,提示:已到最大號!
請問:使用VFP 應該如何寫此函數? |
|
回頂端 |
|
|
asd89839032
註冊時間: 2012-10-15 文章: 49
第 2 樓
|
發表於: 星期四 十二月 25, 2014 12:11 pm 文章主題: |
|
|
代碼: |
lcstring = thisform.text1.Value
IF right(lcstring,2) = "99"
DO CASE
CASE LEFT(lcstring,1) = "Z"
MESSAGEBOX("")
RETURN
CASE LEFT(lcstring,1) = "9"
lcfirst = "A"
OTHERWISE
lcfirst = CHR(ASC(LEFT(lcstring,1))+1)
ENDCASE
lcstringNext = lcfirst + "01"
ELSE
lcstringNext = LEFT(lcstring,1) + PADL(ALLTRIM(STR(VAL(RIGHT(lcstring,2))+1,2)),2,"0")
ENDIF
thisform.text1.Value = lcstringNext
|
試看看,不保證沒問題~ _________________ 菜鳥路過... |
|
回頂端 |
|
|
bx1166
註冊時間: 2011-12-06 文章: 273
第 3 樓
|
發表於: 星期四 十二月 25, 2014 12:13 pm 文章主題: |
|
|
Asc()
全改為文字格式,0-9,接著跳abc,zzz才是最大啊,
**urcode
Code1=substr(urcode,1,1)
Code2=substr(urcode,2,1)
Code3=substr(urcode,3,1)
nasc3=asc(code3)+1
If nasc3=58. *Nascent*>9
Nasc3=65 *跳到a
Endif
If nasc=91 *>z
Nasc=48
Nasc2=nasc2+1
Endif
.......大概如此,最後把3個加起來。 |
|
回頂端 |
|
|
cdy
註冊時間: 2008-12-30 文章: 26
第 4 樓
|
發表於: 星期四 十二月 25, 2014 6:30 pm 文章主題: 謝 |
|
|
asd89839032 大大的程式可行!謝謝 |
|
回頂端 |
|
|
lygcw9603
註冊時間: 2011-12-25 文章: 130
第 5 樓
|
發表於: 星期四 十二月 25, 2014 10:50 pm 文章主題: |
|
|
代碼: | Clear
lcStr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For lnJ=1 To Len(lcStr)
For lnI=0 To 99
? Substr(lcStr,lnJ,1)+Padl(lnI,2,"0")
EndFor
EndFor |
|
|
回頂端 |
|
|
bx1166
註冊時間: 2011-12-06 文章: 273
第 6 樓
|
發表於: 星期五 十二月 26, 2014 8:05 am 文章主題: |
|
|
這個精簡,很棒! |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4225 來自: Taipei,Taiwan
第 7 樓
|
發表於: 星期五 十二月 26, 2014 10:07 am 文章主題: |
|
|
我也覺得5樓很巧妙. ^.^=b
我自己做的與5樓接近,
也是分成兩區,
但比較傳統,就是分成 <=9, >9 兩區處理,
這樣後人比較好整理.
----
樓主應該先想想怎麼做再伸手比較好.
看到這類的,我都先跳過. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
foxy
註冊時間: 2007-08-16 文章: 245 來自: 泰國
第 8 樓
|
發表於: 星期五 十二月 26, 2014 6:54 pm 文章主題: |
|
|
代碼: |
For m.lnAsc=65 TO 90 && A-Z
m.lcPrefix=chr(m.lnAsc)
For m.lnNumber=0 TO 99
m.lcPostfix=PADL(ALLT(str(m.lnNumber,2,0)),2,'0')
m.lcResult=m.lcPrefix+m.lcPostFix
?m.lcResult
IF m.lcResult='Z99'
MESSAGEBOX('Max number reached')
ENDIF
ENFOR
ENFOR
|
_________________ 進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + Flutter 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm
foxy 在 星期五 十二月 26, 2014 7:10 pm 作了第 2 次修改 |
|
回頂端 |
|
|
foxy
註冊時間: 2007-08-16 文章: 245 來自: 泰國
第 9 樓
|
發表於: 星期五 十二月 26, 2014 7:06 pm 文章主題: |
|
|
代碼: |
CREATE CURSOR m1 (c1 C(1))
For m.lnAsc=65 TO 90 && A-Z
INSERT INTO M1 (C1) VALUES (CHR(m.lnAsc))
ENDFOR
CREATE CURSOR m2 (c1 C(1))
For m.lnNow=0 TO 9
INSERT INTO M2 (c1) VALUES (allt(str(m.lnNow,1,0)))
ENDFOR
SELECT * FROM M2 INTO CURSOR M3
SELECT M1.C1+M2.C1+M3.C1 AS myNo;
FROM M1 INNER JOIN M2;
ON .T.;
INNER JOIN M3;
ON .T.;
INTO CURSOR myResult
SCAN
? myNo
ENDSCAN
WAIT WINDOW 'max no. reached'
|
_________________ 進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + Flutter 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm |
|
回頂端 |
|
|
lygcw9603
註冊時間: 2011-12-25 文章: 130
第 10 樓
|
發表於: 星期六 十二月 27, 2014 10:48 am 文章主題: |
|
|
代碼: | 代是否精,不是主要的,代葸行效率才是主要的 |
|
|
回頂端 |
|
|
kalok
註冊時間: 2010-08-26 文章: 284
第 11 樓
|
發表於: 星期一 五月 11, 2015 7:24 am 文章主題: |
|
|
對我來說, 不是做導向飛彈程式, 代碼執行效率不是最主要, 最重要是靈活更改 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|