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

Oracle 8i 以 clientdataset update 字串資料問題

尚未結案
yirunner
一般會員


發表:11
回覆:8
積分:3
註冊:2002-09-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-27 14:09:41 IP:220.130.xxx.xxx 未訂閱
各位好:      我使用 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-27 15:24:02 IP:220.130.xxx.xxx 未訂閱
各位好: 問題3 已解決, 設定 provider 的 ResolvetoDataSet = true 即可 但問題 1,2 仍要請各位幫忙 謝謝
系統時間:2024-11-25 8:16:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!