全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1323
推到 Plurk!
推到 Facebook!

sql中的字段类型与ACCESS中比较

答題得分者是:malanlk
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-22 18:26:15 IP:222.184.xxx.xxx 未訂閱
我原来在ACCESS中做的收费记录中,比如单价、应收金额、应找余额等都是用的双精度型,保留两位小数,写入记录在数据表中adotable.findbyname(单价).asfloat:='12345';用的是ASFLOAT,后来在SQL相关资料中介绍说FLOAT是近视精度数值,又看到SQL中有货币类型。不知道我该在SQL中如何设定正确的数据类型。谢谢!
------
我的编程起步于ktop,我将永远支持ktop
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-23 18:14:19 IP:203.69.xxx.xxx 未訂閱
用 DECIMAL 吧...
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-23 21:45:13 IP:222.184.xxx.xxx 未訂閱
引言: 用 DECIMAL 吧...
如果取值往里填的时候结尾用什么?.asdecimal?货币类型就是多了个人民币符号,其实没多大用?您说的decimal好象就是精确类型的数据?
------
我的编程起步于ktop,我将永远支持ktop
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-23 22:30:11 IP:61.219.xxx.xxx 未訂閱
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_de-dz_3grn.asp 如果有指定小數就用 AsFloat 接, 如果沒指定小數 就用 AsInteger, 這個型別主要是希望能指定精確的小數位數, 可避掉浮點數誤差的問題, 在資料庫內儲存時是以字元形式來儲存, 可是卻是以數值方式來運作 UPDATE table SET sDecimal=12.3.... 金融方面應用, 都是有精確的小數位數的, 所以才會有此類型別出現.
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-24 09:19:26 IP:222.184.xxx.xxx 未訂閱
ADOTable1.FieldByName('应收金额').AsFloat := StrToFloat(edit9.Text); 我本来的代码是象上面这样的,到底应收金额是否有小数,我预先是不知道的,这样的话到底后面是asfloat,还是asinteger就不懂了,顺便问一下,没有asdecimal这个写法的吧?我做的收费金额一般都是小数后只有两位的,没有复杂的运算,不懂浮点型的到底会误差到什么程度?
------
我的编程起步于ktop,我将永远支持ktop
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-24 09:41:04 IP:203.69.xxx.xxx 未訂閱
資料庫的欄位格式是你決定的, 如果你用 DECIMAL(10,0) 就用 AsInteger (或AsFloat也可) DECIMAL(12,2) 就用 AsFloat 去接, (好像 AsInteger 也可以接, 小數部份會被處裡掉, 可以試驗一下) 查過 TField 沒有AsDecimal 所謂浮點誤差就像是 你資料庫的值明明是 12.2, 讀出來可能變成 12.199999 你就用 DECIMAL(12,2) 應該夠用了 (10 位整數 兩位小數)
系統時間:2024-07-04 5:16:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!