請高手看看怎麼回事 |
|
zhangxh422
一般會員 發表:3 回覆:8 積分:2 註冊:2006-08-29 發送簡訊給我 |
with DataModule1.AddSnQuery do
begin close; sql.Clear; sql.Add(' insert into sn_detail( [sn_type],[sn_length],[sn_pre],[sn_suf],[sn_digit],[digit],[content],[current_len],[currentstart_digit],[empno],[date] ) ' ' values( :SN_TYPE,:SN_LENGTH,:SN_PRE,:SN_SUF,:SN_DIGIT,:DIGIT,:CONTENT,:CURRENT_LEN,:CURRENTSTART_DIGIT,:EMPNO,:DATE ) '); Parameters.ParamByName('SN_TYPE').Value:=sn_type; Parameters.ParamByName('SN_LENGTH').Value:=sn_length; Parameters.ParamByName('SN_PRE').Value:=sn_pre; Parameters.ParamByName('SN_SUF').Value:=sn_suf; Parameters.ParamByName('SN_DIGIT').Value:=sn_digit; Parameters.ParamByName('DIGIT').Value:=Digit; Parameters.ParamByName('CONTENT').Value:=content; Parameters.ParamByName('CURRENT_LEN').Value:=currentlen; Parameters.ParamByName('CURRENTSTART_DIGIT').Value:=currentstart; Parameters.ParamByName('EMPNO').Value:=loginform.emp_edt.Text; Parameters.ParamByName('DATE').Value:=Now() time(); Prepared:=true; ExecSQL; close; end; 上面這段是我的程式碼,參數sn_suf不為空時程式執行是正常的,當此參數為空時提示ODBC錯誤:無效的精確度參數,我試了很多方法,還是不行,在數據庫中,我以前設定的這個參數是不能為空的,後來修改了可以為空. |
books
一般會員 發表:9 回覆:27 積分:7 註冊:2006-10-27 發送簡訊給我 |
|
zhangxh422
一般會員 發表:3 回覆:8 積分:2 註冊:2006-08-29 發送簡訊給我 |
|
eaglewolf
資深會員 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
如果你所謂的空值代表null
那就不要給值 原程式片斷改成下面: with DataModule1.AddSnQuery do begin close; sql.Clear; sql.Add(' insert into sn_detail( [sn_type],[sn_length],[sn_pre],[sn_digit],[digit],[content],[current_len],[currentstart_digit],[empno],[date] ) values( :SN_TYPE,:SN_LENGTH,:SN_PRE,:SN_DIGIT,:DIGIT,:CONTENT,:CURRENT_LEN,:CURRENTSTART_DIGIT,:EMPNO,:DATE ) '); Parameters.ParamByName('SN_TYPE').Value:=sn_type; Parameters.ParamByName('SN_LENGTH').Value:=sn_length; Parameters.ParamByName('SN_PRE').Value:=sn_pre; Parameters.ParamByName('SN_DIGIT').Value:=sn_digit; Parameters.ParamByName('DIGIT').Value:=Digit; Parameters.ParamByName('CONTENT').Value:=content; Parameters.ParamByName('CURRENT_LEN').Value:=currentlen; Parameters.ParamByName('CURRENTSTART_DIGIT').Value:=currentstart; Parameters.ParamByName('EMPNO').Value:=loginform.emp_edt.Text; Parameters.ParamByName('DATE').Value:=Now() time(); Prepared:=true; ExecSQL; close; end;
------
先查HELP 再查GOOGLE 最後才發問 沒人有義務替你解答問題 在標題或文章中標明很急 並不會增加網友回答速度 Developing Tool: 1.Delphi 6 2.Visual Studio 2005 3.Visual Studio 2008 DBMS: MS-SQL |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
zhangxh422
一般會員 發表:3 回覆:8 積分:2 註冊:2006-08-29 發送簡訊給我 |
===================引 用 文 章=================== 如果你所謂的空值代表null 那就不要給值 原程式片斷改成下面: with DataModule1.AddSnQuery do ?begin ??close; ??sql.Clear; ??sql.Add(' insert into sn_detail( [sn_type],[sn_length],[sn_pre],[sn_digit],[digit],[content],[current_len],[currentstart_digit],[empno],[date] )? values( :SN_TYPE,:SN_LENGTH,:SN_PRE,:SN_DIGIT,:DIGIT,:CONTENT,:CURRENT_LEN,:CURRENTSTART_DIGIT,:EMPNO,:DATE ) '); ?Parameters.ParamByName('SN_TYPE').Value:=sn_type; ?Parameters.ParamByName('SN_LENGTH').Value:=sn_length; ?Parameters.ParamByName('SN_PRE').Value:=sn_pre; ?Parameters.ParamByName('SN_DIGIT').Value:=sn_digit; ?Parameters.ParamByName('DIGIT').Value:=Digit; ?Parameters.ParamByName('CONTENT').Value:=content; ?Parameters.ParamByName('CURRENT_LEN').Value:=currentlen; ?Parameters.ParamByName('CURRENTSTART_DIGIT').Value:=currentstart; ?Parameters.ParamByName('EMPNO').Value:=loginform.emp_edt.Text; ?Parameters.ParamByName('DATE').Value:=Now() time(); ?Prepared:=true; ?ExecSQL; ?close; end; 不是,你可能誤會我的意思了,我這樣改的目的這個值有可能為空,而不是一直為空 |
taihao
一般會員 發表:1 回覆:13 積分:2 註冊:2005-11-02 發送簡訊給我 |
不管 DB 字典有無宣告 isnull ,
在 Transact-SQL 語法中,有宣告欄位,就必須有對映資料, 我也曾犯過這樣的毛病. Insert into Table1 (cfd1,cfd2,cfd3) Values('11',,'33') <---字串不對 改為 Insert into Table1 (cfd1,cfd2,cfd3) Values('11','','33') Insert into Table1 (ifd1,ifd2,ifd3) Values(1,,3) <---數字不對 3點了ㄟ 該睡了.881 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |