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

不知為何欄位

答題得分者是:Justmade
lilisn
一般會員


發表:35
回覆:62
積分:24
註冊:2003-03-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-19 10:12:44 IP:61.228.xxx.xxx 未訂閱
各位前輩好 使用database -> MSSQL-2000 ,skno(char,5),skname(char,10),sktel(nvarchar,70) 當新增時,skname 欄位一次填10,下次修改沒問題,反之skname輸入'阿扁', 在次edit時改'連站'2字可改,但改為'你等輝'時只能 keyin '你等' 輝輸入不入,為何? 使用dbedit or dbgrid 多一樣 求救前輩指導謝謝
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-19 10:29:51 IP:211.21.xxx.xxx 未訂閱
引言: 各位前輩好 使用database -> MSSQL-2000 ,skno(char,5),skname(char,10),sktel(nvarchar,70) 當新增時,skname 欄位一次填10,下次修改沒問題,反之skname輸入'阿扁', 在次edit時改'連站'2字可改,但改為'你等輝'時只能 keyin '你等' 輝輸入不入,為何? 使用dbedit or dbgrid 多一樣 求救前輩指導謝
您檢查TField中的Size,是不是10! ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
lilisn
一般會員


發表:35
回覆:62
積分:24
註冊:2003-03-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-19 13:41:21 IP:61.228.xxx.xxx 未訂閱
引言: [quote] 您檢查TField中的Size,是不是10! adoquery1skname(TStringField) skname (size=10 ),skphone(size=17) skphone add 時輸入 '2707' 後再修改時只能輸入 '270756',其他原record skphone為空白時在edit時卻只能輸入 '12' why ? 怪哉 本以為是我程式問題,後來重新寫一個範例,adoquery,datasource,dbgrid 簡單3個元件而已.真不知為何?
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-19 13:53:21 IP:211.21.xxx.xxx 未訂閱
引言: adoquery1skname(TStringField) skname (size=10 ),skphone(size=17) skphone add 時輸入 '2707' 後再修改時只能輸入 '270756',其他原record skphone為空白時在edit時卻只能輸入 '12' why ? 怪哉 本以為是我程式問題,後來重新寫一個範例,adoquery,datasource,dbgrid 簡單3個元件而已.真不知為何?
真是怪哉! 照道理應該不會如此。 建議您測試一下:將欄位型態是char改用varchar試試看! ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-19 14:03:16 IP:218.16.xxx.xxx 未訂閱
對丫,怪事... 還可以試的有 : 1. 重新開機 2. 拿該程式到另一台電腦跑跑 3. 試試用 bde + odbc / dbexpress 4. 去吸吸新鮮空氣回來再做 5. 打電話問"你等輝"名字可否改成"你等"算了 ... 等等
lilisn
一般會員


發表:35
回覆:62
積分:24
註冊:2003-03-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-19 15:15:52 IP:61.228.xxx.xxx 未訂閱
引言:
真是怪哉! 照道理應該不會如此。 建議您測試一下:將欄位型態是char改用varchar試試看! char 型態:固定長度字串,儲存英數或漢字,怎麼會這樣? varchar 型態:可變長度字串,儲存各國文字(2位元組)字串 就可以怎麼會這樣? 謝謝 [/quote]
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-19 15:44:00 IP:211.21.xxx.xxx 未訂閱
引言: 真是怪哉! 照道理應該不會如此。 建議您測試一下:將欄位型態是char改用varchar試試看! char 型態:固定長度字串,儲存英數或漢字,怎麼會這樣? varchar 型態:可變長度字串,儲存各國文字(2位元組)字串 就可以怎麼會這樣? 謝謝
幫一看一下Help: char:固定長度字串。假設有一個欄位為char(10),當您儲存的資料(aaa)佔了三個字元,剩餘的七個字元MSSQL會將其用空白補滿,所以char才稱為固定長度字串,不足的字元會用空白補滿,保持全部資料在10字元。 varchar:可變長度字串。假設有一個欄位為varchar(10),10代表最大的長度,當所儲存的資料佔了三個字元,MSSQL並不會將剩餘的七個字元用空白補滿。 以下是錯誤的觀念!勿看!SORRY! 在此向k.top的網友道歉。 今後會經測試過,在post上來。 感謝Justmade兄的更正,差點誤人子弟! channel ====================================================================== 綜合以上所言,您的欄位算是不固定的資料,所以當您的資料不固是請用varchar吧! 回到您的第一個問題: 使用database -> MSSQL-2000 ,skno(char,5),skname(char,10),sktel(nvarchar,70) 當新增時,skname 欄位一次填10,下次修改沒問題,反之skname輸入'阿扁', 在次edit時改'連站'2字可改,但改為'你等輝'時只能 keyin '你等' 輝輸入不入,為何? 當您第一次輸入'阿扁'時,雖然您的skname(char,10),但是剩餘的6個字元已被空白補滿,所以當您edit時要輸入'你等輝','輝'輸入不入,是因為剩餘的字元被空白佔滿了。 ====================================================================== ~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/19 16:32:27
------
~小弟淺見,參考看看~
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-19 16:08:07 IP:218.16.xxx.xxx 未訂閱
引言: 當您第一次輸入'阿扁'時,雖然您的skname(char,10),但是剩餘的6個字元已被空白補滿,所以當您edit時要輸入'你等輝','輝'輸入不入,是因為剩餘的字元被空白佔滿了
不會的啦,自動填入的空白跟使用者輸入的空白不同,自動填入的讀出時是會自動消掉的。 還有,長短有變也不一定要用 VarChar,Char 的好處是快,VarChar的好處是省位置,用那一種較好應以這些好處為考慮。不過,第一個 VarChar欄位會較明顯的使 Table 變慢,第二個之後的便沒多大分別了。所以一是整個 Table 不用 VarChar(及其他會變大小的欄位),一就放心儘量用罷。 另外我說重新開機和拿到別電腦跑跑不是說笶的,因為重新開機很多時可以解決一些系統亂了的問題,而拿去別電腦試試可以知道是否一些系統檔壞了。
lilisn
一般會員


發表:35
回覆:62
積分:24
註冊:2003-03-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-19 17:50:59 IP:61.228.xxx.xxx 未訂閱
引言: [quote] 當您第一次輸入'阿扁'時,雖然您的skname(char,10),但是剩餘的6個字元已被空白補滿,所以當您edit時要輸入'你等輝','輝'輸入不入,是因為剩餘的字元被空白佔滿了。 ///////////////////////////////////// 剩餘的字元被空白佔滿了,理論去edit應該可以在加字元,測的結果可減少字元 但不能加字元至10碼. 使用varchar test 後就沒有問題 所以同一欄資料非固定字元,少用char,應用varchar 反之 統一編號,發票字軌,身份證字號,就應用char 不知我的觀念,對否 ///////////////////////////////////// 還有,長短有變也不一定要用 VarChar,Char 的好處是快,VarChar的好處是省位置,用那一種較好應以這些好處為考慮。不過,第一個 VarChar欄位會較明顯的使 Table 變慢,第二個之後的便沒多大分別了。所以一是整個 Table 不用 VarChar(及其他會變大小的欄位),一就放心儘量用罷。 //////////////////////// 謝謝大家寶貴意見
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-03-19 18:49:00 IP:211.21.xxx.xxx 未訂閱
引言: 使用varchar test 後就沒有問題 所以同一欄資料非固定字元,少用char,應用varchar 反之 統一編號,發票字軌,身份證字號,就應用char 不知我的觀念,對否
我覺得應該沒有錯,這樣可以的。 以我來講在定Table Schema很少用到char除非用到Flag(判斷)的欄位 就像Justmade所言:第一個 VarChar欄位會較明顯的使 Table 變慢,第二個之後的便沒多大分別了,所以就用varchar吧。 像您用char有問題,用varchar沒有問題,那就乾脆用varchar吧! ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
系統時間:2024-11-23 14:59:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!