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

cashxin2002 大哥,请帮我看看下面这个问题,谢谢!

答題得分者是:cashxin2002
lsh998
中階會員


發表:163
回覆:138
積分:60
註冊:2005-01-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-05 08:58:40 IP:218.14.xxx.xxx 未訂閱
create  procedure procinsertKardTypeTable   --新增 卡的类型能 时间:2005-4-4 @KardTypeId          varchar(2) , @KardTypeName          varchar(50) as    begin           begin  tran           insert  KardTypeTable(KardTypeId,KardTypeName)           values  (@KardTypeId,@KardTypeName)           if      @@error<>0 or  @@rowcount<>1           begin           raiserror('操作不成功,也许是因为存在相同的卡类型编号',16,1)           rollback tran           return           end                     if   @@error=0            commit tran           else           rollback tran      end    go    procedure TKaTypeSetForm.Button1Click(Sender: TObject); begin          ADOStoredProc1.Close;       ADOStoredProc1.ProcedureName:='procinsertKardTypeTable';       ADOStoredProc1.Parameters.Refresh;       ADOStoredProc1.Parameters.ParamByName('@KardTypeId').Value:=trim(edit1.Text);       ADOStoredProc1.Parameters.ParamByName('@KardTypeName').Value:=trim(edit2.Text);       ADOStoredProc1.Prepared:=true;      try           ADOStoredProc1.ExecProc;           showmessage('新增卡类型成功');      except           on E:exception do           showmessage(E.Message);    end;      end;         我在  edit1 和 edit2  中 分别 输入 01 和 xx  然后 单击  Button1  ,能把数据插入到表中    我继续在      edit1 和 edit2  中 分别 输入 02 和 yy     出现下面的错误: 我真的不知道错在那里了?(注 KardTypeId 和 KardTypeName 没有任何限制)  cashxin2002大哥,我是错在那里呢?    谢谢! 
lsh998
中階會員


發表:163
回覆:138
積分:60
註冊:2005-01-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-05 11:33:47 IP:218.14.xxx.xxx 未訂閱
cashxin2002 大哥: ADOStoredProc1.Parameters.ParamByName('@KardTypeId').Value:=trim(edit1.Text); 和 ADOStoredProc1.Parameters.CreateParameter('@KardTypeId',ftstring,pdinput,50,trim(edit1.Text)); 有什么区别呢? 为什么要用 ADOStoredProc1.Parameters.CreateParameter('@KardTypeId',ftstring,pdinput,50,trim(edit1.Text)); 呢? 我原先 都是用的: ADOStoredProc1.Close; ADOStoredProc1.ProcedureName:='procinsertKardTypeTable'; ADOStoredProc1.Parameters.Refresh; ADOStoredProc1.Parameters.ParamByName('@KardTypeId').Value:=trim(edit1.Text); 但是我装了 net 后,这样写就不行了! 就需要这样写: ADOStoredProc1.Parameters.CreateParameter('@KardTypeId',ftstring,pdinput,50,trim(edit1.Text)); cashxin2002 大哥,这是为什么啊? 谢谢!
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-05 12:04:02 IP:202.62.xxx.xxx 未訂閱
您好﹗    ADOStoredProc1.Parameters.ParamByName('@KardTypeId').Value:=trim(edit1.Text); 此句在Parameters中已經有存在KardTypeId這個Param名稱﹐相對的只需要指定其值即可﹒    ADOStoredProc1.Parameters.CreateParameter('@KardTypeId',ftstring,pdinput,50,trim(edit1.Text)); 此句在Parameters中尚未有KardTypeId這個Param名稱﹐需要通過Create的方法來建立后再指定其值﹒    net部分小弟不熟﹐很抱歉﹒    在您的程式碼中﹐通過Try...Except截取到的錯誤信息是什么﹖把以下這句從程式碼中刪除后再試試﹕ ADOStoredProc1.Parameters.Refresh;    另外具有SQL支援的資料集元件的Prapared屬性﹐一般我們都是用在有回傳資料的SQL語法中﹐如典型的Select等﹐可以提高SQL語句的執行效率﹐但在無資料回傳的SQL語法中﹐如Insert﹐Delete等﹐并不需要對此屬性做設定﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
lsh998
中階會員


發表:163
回覆:138
積分:60
註冊:2005-01-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-05 16:38:51 IP:218.14.xxx.xxx 未訂閱
cashxin2002 大哥真是热心肠! cashxin2002 大哥,您调用存储过程一般是用的那种方法啊^_^? 谢谢 cashxin2002 大哥
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-05 17:06:56 IP:202.62.xxx.xxx 未訂閱
您好﹗    由于目前手頭上開發的都是Local型的資料庫系統﹐所以比較少用預儲程序﹐基本上都是調用普通的資料集元件﹐如ADOTable﹐ADOQuery等﹒    謝謝您對我的鼓勵﹐另外建議您在提問的時候盡量避免直接指定回覆者姓名的文字﹐站內的先進很多﹐但我只是新進﹐各方面尚待學習﹐所知所得亦是有限﹐請大家幫忙解答會有比較好的答案﹐也可有更多的机會讓您學到各種更好的擬寫程式的方式方法﹐給您加油﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
zwsoft
一般會員


發表:20
回覆:17
積分:10
註冊:2002-11-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-05 17:18:27 IP:218.17.xxx.xxx 未訂閱
设一下KardTypeId 和 KardTypeName,试试
系統時間:2024-06-29 3:41:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!