Oracle 8i 以 clientdataset update 字串資料問題 |
尚未結案
|
yirunner
一般會員 發表:11 回覆:8 積分:3 註冊:2002-09-17 發送簡訊給我 |
各位好: 我使用 Oracle 8i, Delphi 7 clientdataset update table, 程式如下
:
procedure TForm1.Button2Click(Sender: TObject); var str:string; wstr:widestring; begin with adoquery1 do begin close; sql.text:='select * from tstvar order by idx'; open; end; cds.Active:=true; with cds do begin first; edit; str:=edit1.Text; if usewideformat.Checked then begin wstr:=wideformat('%s',[str]); if usefldbyname.checked then fieldbyname('var').Value:=wstr else fieldvalues['var']:=wstr; end else begin if usefldbyname.checked then fieldbyname('var').Value:=str else fieldvalues['var']:=str; end; //nvarchar2 str:=edit2.Text; if usewideformat.Checked then begin wstr:=wideformat('%s',[str]); if usefldbyname.checked then fieldbyname('nvar').Value:=wstr else fieldvalues['nvar']:=wstr; end else begin if usefldbyname.checked then fieldbyname('nvar').Value:=str else fieldvalues['nvar']:=str; end; post; applyupdates(0); end; cds.Active:=false; end;其中cds 是clientdataset, var : varchar2(100) , nvar: nvarchar2(100) var 及 nvar 皆允許null, usefldbyname 表示使用 fieldbyname('var').value 取代 fieldvalues['var'] usewideformat 表示使用 widestring 取代 string 問題: 1. 當str='~' (全形 ~)及'‧'(注音輸入模式按ctrl alt 逗號 叫出鍵盤符號後點選 '.') 時, 無論我是否用fieldbyname('var').value 取代 fieldvalues['var'] 或以widestring(wstr) 取代 string(str) , 以adoquery 或clientdataset 取剛assign 的欄位值都會是 '?'(字元集轉換出問題)? 2. 承1. assign nvar (nvarchar2 型態)則會出現如下錯誤 Ora-12704: 字元設定不符合, 雖然可以用query N assign 如下: insert into tstvar (idx,var,nvar) values(2,'dfd',N'~') 但請問各位如何用 fieldbyname('nvar').value 或 fieldvalues['nvar'] 來做到相同的assign 方式? 3. 搜尋過clientdataset 相關文章, 知道clientdataset 無法將字串欄位update 成null, 但我試的結果, 甚至不能將字串欄位update 成空字串, 會出現錯誤: ORA-02005: 連結或定義資料類型隱含無效的長度(-1), 該如何解決呢? 這些問題煩請各位幫幫忙 , 困擾許久 拜託拜託 謝謝 |
yirunner
一般會員 發表:11 回覆:8 積分:3 註冊:2002-09-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |