線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1049
推到 Plurk!
推到 Facebook!

請高手看看怎麼回事

 
zhangxh422
一般會員


發表:3
回覆:8
積分:2
註冊:2006-08-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-12-18 11:40:08 IP:221.224.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-12-18 19:06:27 IP:220.198.xxx.xxx 未訂閱
參數sn_suf不為空時程式執行是正常的,為空就不正常,我個人看法是:是不是這個表中的字段sn_suf是不是設置不能為空呢?或者數據的格式不配對呢?
zhangxh422
一般會員


發表:3
回覆:8
積分:2
註冊:2006-08-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-12-19 14:42:39 IP:221.224.xxx.xxx 未訂閱
我之前在數據庫中設置的是這個欄位不能為空,但我改過了還是不行,還是一直報錯,實在不知道是怎麼回事
eaglewolf
資深會員


發表:4
回覆:268
積分:429
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-12-19 14:57:43 IP:211.75.xxx.xxx 未訂閱
如果你所謂的空值代表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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-12-19 19:25:12 IP:59.124.xxx.xxx 未訂閱
請為您的問題取一個有意義的標題
zhangxh422
一般會員


發表:3
回覆:8
積分:2
註冊:2006-08-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-12-19 19:34:55 IP:221.224.xxx.xxx 未訂閱

===================引 用 文 章===================
如果你所謂的空值代表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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-12-30 03:09:57 IP:61.221.xxx.xxx 訂閱
不管 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
系統時間:2024-05-19 17:01:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!