上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
215001
註冊時間: 2003-06-11 文章: 389
第 1 樓
|
發表於: 星期四 六月 04, 2015 10:40 pm 文章主題: 於asp.net ,用 vfpoledb 讀取 Visual Foxpro 資料庫的問題 |
|
|
我在ASP.NET 4.0下,透過vfpoledb讀取Visual Foxpro 8.0的 DBF 檔案(獨立檔案)
用 DataAdapter 物件:
指令: Select *,總價 from test : 讀取成功
改用: Select *,VAL(總價) as 新總價 from test : 讀取失敗,為什麼 ?????
總價欄位: 是文字型態的 char(10) |
|
回頂端 |
|
|
215001
註冊時間: 2003-06-11 文章: 389
第 2 樓
|
發表於: 星期四 六月 04, 2015 10:45 pm 文章主題: |
|
|
很奇怪的現象
剛開始改用 VAL(總價) 時,測試了幾次,都還可以正常讀取出資料
但是後來,就無法再讀取成功了 |
|
回頂端 |
|
|
215001
註冊時間: 2003-06-11 文章: 389
第 3 樓
|
發表於: 星期五 六月 05, 2015 12:02 pm 文章主題: |
|
|
從網路上找資料,後來測試發現
若總價欄位都 <= "99999" 時: Select *,VAL(總價) .............讀取正常
若其中一筆總價 >= "100000" 時: Select *,VAL(總價) ...........就讀取 失敗 ???
難道 vfpoledb 的val( ),只能轉換到 99999
請較各位,有方法可以解決嗎? |
|
回頂端 |
|
|
goodnight
註冊時間: 2008-10-13 文章: 472 來自: 台南市
第 4 樓
|
|
回頂端 |
|
|
215001
註冊時間: 2003-06-11 文章: 389
第 5 樓
|
發表於: 星期五 六月 05, 2015 9:07 pm 文章主題: |
|
|
謝謝 goodnight ,已爬文過,但是還抓不到重點
goodnight 兄是否能提供幾個關鍵字,方便搜尋 |
|
回頂端 |
|
|
goodnight
註冊時間: 2008-10-13 文章: 472 來自: 台南市
第 6 樓
|
發表於: 星期六 六月 06, 2015 10:51 am 文章主題: Re: 於asp.net ,用 vfpoledb 讀取 Visual Foxpro 資料庫的問題 |
|
|
215001 寫到: | 我在ASP.NET 4.0下,透過vfpoledb讀取Visual Foxpro 8.0的 DBF 檔案(獨立檔案)
用 DataAdapter 物件:
指令: Select *,總價 from test : 讀取成功
改用: Select *,VAL(總價) as 新總價 from test : 讀取失敗,為什麼 ?????
總價欄位: 是文字型態的 char(10) |
類似長度不足補零
Select Right('00000000' + Cast(123 as varchar), 8 ) > '00000123'
因為你的總價欄位是文字型態, 很少有人會把數字設定成文字型態
還是你的總價根本就是數字型態?? _________________ 希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
goodnight 在 星期二 六月 09, 2015 10:58 pm 作了第 1 次修改 |
|
回頂端 |
|
|
215001
註冊時間: 2003-06-11 文章: 389
第 7 樓
|
發表於: 星期六 六月 06, 2015 1:42 pm 文章主題: |
|
|
謝謝你
總價欄位: 是文字型態的 char(10) |
|
回頂端 |
|
|
215001
註冊時間: 2003-06-11 文章: 389
第 8 樓
|
發表於: 星期六 六月 06, 2015 3:06 pm 文章主題: |
|
|
謝謝goodnight
如你猜測,應該是val() 轉換時,給的資料型態長度不足,造成資料溢位的問題
後來改用下面的方法解決了:
Select *,INT(val(總價)) as 新總價 from test
Select *,ROUND(val(總價),2) as 新總價 from test |
|
回頂端 |
|
|
asd89839032
註冊時間: 2012-10-15 文章: 49
第 9 樓
|
發表於: 星期一 六月 08, 2015 4:40 pm 文章主題: |
|
|
湊熱鬧
VFP預設的 SELECT VAL(總價) as 新價 FROM TEST
新的欄位會很貼心的幫你算到剛剛好的大小
EX:文字10 + 設定val 2位小數,他會幫你自動設成 13的大小
好奇 vfpoledb 是固定大小 8,2 嗎? _________________ 菜鳥路過... |
|
回頂端 |
|
|
215001
註冊時間: 2003-06-11 文章: 389
第 10 樓
|
發表於: 星期一 六月 08, 2015 5:17 pm 文章主題: |
|
|
於asp.net 透過vfpoledb測試結果:
Select *,VAL("99999") as 新總價 from test : 可以
Select *,VAL("99999.9999") as 新總價 from test : 可以
Select *,VAL("100000") as 新總價 from test : .......................失敗
Select *,000000+VAL("100000") as 新總價 from test : .......................失敗
Select *,ROUND(val("100000"),0) as 新總價 from test : .......................可以 |
|
回頂端 |
|
|
goodnight
註冊時間: 2008-10-13 文章: 472 來自: 台南市
第 11 樓
|
發表於: 星期二 六月 09, 2015 11:04 pm 文章主題: |
|
|
215001 寫到: | 謝謝你
總價欄位: 是文字型態的 char(10) |
有沒有可能在填入總價時變成 0000005000, 不足位數補零或許可以比較簡單的解決問題?
或是把總價的欄位修正成 NUMBER ?? _________________ 希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ |
|
回頂端 |
|
|
asd89839032
註冊時間: 2012-10-15 文章: 49
第 12 樓
|
發表於: 星期三 六月 10, 2015 11:44 am 文章主題: |
|
|
所以他應該是給 10,4 , val 可能給4位小數 _________________ 菜鳥路過... |
|
回頂端 |
|
|
215001
註冊時間: 2003-06-11 文章: 389
第 13 樓
|
發表於: 星期三 六月 10, 2015 1:53 pm 文章主題: |
|
|
謝謝各位
1.總價欄位,有其他考量,不能改成數值型態
2.目前採用 ROUND(val(總價),2) as 新價 暫時解決 |
|
回頂端 |
|
|
|