不知為何欄位 |
答題得分者是:Justmade
|
lilisn
一般會員 發表:35 回覆:62 積分:24 註冊:2003-03-09 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 各位前輩好 使用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 發送簡訊給我 |
引言: [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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
|
lilisn
一般會員 發表:35 回覆:62 積分:24 註冊:2003-03-09 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 真是怪哉! 照道理應該不會如此。 建議您測試一下:將欄位型態是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 發送簡訊給我 |
引言: 當您第一次輸入'阿扁'時,雖然您的skname(char,10),但是剩餘的6個字元已被空白補滿,所以當您edit時要輸入'你等輝','輝'輸入不入,是因為剩餘的字元被空白佔滿了。不會的啦,自動填入的空白跟使用者輸入的空白不同,自動填入的讀出時是會自動消掉的。 還有,長短有變也不一定要用 VarChar,Char 的好處是快,VarChar的好處是省位置,用那一種較好應以這些好處為考慮。不過,第一個 VarChar欄位會較明顯的使 Table 變慢,第二個之後的便沒多大分別了。所以一是整個 Table 不用 VarChar(及其他會變大小的欄位),一就放心儘量用罷。 另外我說重新開機和拿到別電腦跑跑不是說笶的,因為重新開機很多時可以解決一些系統亂了的問題,而拿去別電腦試試可以知道是否一些系統檔壞了。 |
lilisn
一般會員 發表:35 回覆:62 積分:24 註冊:2003-03-09 發送簡訊給我 |
引言: [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 發送簡訊給我 |
引言: 使用varchar test 後就沒有問題 所以同一欄資料非固定字元,少用char,應用varchar 反之 統一編號,發票字軌,身份證字號,就應用char 不知我的觀念,對否我覺得應該沒有錯,這樣可以的。 以我來講在定Table Schema很少用到char除非用到Flag(判斷)的欄位 就像Justmade所言:第一個 VarChar欄位會較明顯的使 Table 變慢,第二個之後的便沒多大分別了,所以就用varchar吧。 像您用char有問題,用varchar沒有問題,那就乾脆用varchar吧! ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |