是这样的,SQL语句如下: seklect * from matertbl where fldNames="王五"
客户端是繁体中文,应用服务器端是英文板,内码转成繁体中文,SQLSever是繁体中文
这时候查询不到结果!,请高手指导如何解决这个问题,
是否需要在服务器端在代码里面转内码!

解决方案 »

  1.   

    请问windindance(风舞轻扬)  调试的时候在查询分析器了看不到呀!
    只能看事件查看器!
      

  2.   

    查到的是 传参的时候有问题!事件查看器里面的结果是:
    seklect * from matertbl where fldNames="王"如果更长的话,
    seklect * from matertbl where fldNames="王的发发发" and flddept="ddd" ;事件查看器里面的结果是:
    seklect * from matertbl where fldNames="王的"后面的都没有了,奇怪的很了,
    直接传语句就没问题的!clientDataset1->Commmandtext="exec wew +"edit.text'就没问题的!
      

  3.   

    你是用传参数的形式:
    select * from matertbl where fldNames=:fldNames
    这样做的吗?
    因为你的应用中有多个编码方式共存,这样做有可能在编码上出现问题。改直接传语句吧。
      

  4.   

    使用存储过程是这样吗?
    ClientDataSet1->CommandText="exec test N'"+Edit1->Text+"'"+","+"'"+Edit2->Text+"'";可是在事件查看器变成
    exec [exec test N'Edit1','Edit2']
    请问 如何解决!
      

  5.   

    不会吧,高手呢? 都来帮忙亚,这个问题解决了对大家都有用,提供思路也可以的!
    ding.............
      

  6.   

    试一下这个:function EncodeUnicodeSQL(Value:WideString):String;
    //encode the widestring to string of unicode ascii set
    //be used for search unicode char in SQL server
    //2003.03.21
    var
      I:Integer;
    begin
      Result:='';
      for I:=1 to Length(Value) do begin
        if I>1 then begin
          Result:=Result+'+';
        end;
        Result:=Result+'NCHAR('+IntToStr(Word(Value[I]))+')';
      end;
    end;
        if Length(MusicName)>0 then begin
          sql:=' (music_name LIKE ''%'' + ' + EncodeUnicodeSQL(MusicName) + ' + ''%'')';
        end;
      

  7.   

    可否帮我转成C++ Buider 的语法~
    谢谢!