我用的数据库是DBF的用BDE引擎,使用的别名指向数据库所在文件夹,用的query+datasource+dbgrid 显示数据为何 在dbgrid中标题栏中显示的有的字段名是乱码,有的字段是正常.执行到这一步时
if (query1.Locate('病人姓名;性别;年龄',vararrayof([name1,sex1,age1]),[loCaseInsensitive])) then 
出错,说是无法找到"病人姓名"字段,而数据库中确有这一字段.在dbgrid控件标题栏上这一字段是乱码.用TABLE控件时好用.
请大家帮忙解答,

解决方案 »

  1.   

    应该是字体集的问题,Delphi不支持UNICODE,而BDF的数据库不知道支持不支持,所以会有乱码产生,建意用英文字段...
      

  2.   

    但是我用TABLE的时候就没事呀,现在用query设置一些查询条件,就出现这个问题了,还有没有没有不用改成英文字段名的方法呢?因为我的字段很我给用户用怕他们有的不懂英文.
      

  3.   

    但是我用TABLE的时候就没事呀,现在用query设置一些查询条件,就出现这个问题了,还有没有没有不用改成英文字段名的方法呢?因为我的字段很我给用户用怕他们有的不懂英文.
    ------------------------------------------------------------------------------
    没见到你的程序,只能怀疑是字符集这类的问题。
    建议你用英文字段名,至于看不懂英文的问题,你可以在查询显示的dbgrid中显示中文啊,很多办法的,例如你查询select a as '中文' from tablename
      

  4.   

    中文字段名没有英文字段名稳定,最好用英文。
    参看这个关于中文字段名的讨论:
    http://community.csdn.net/Expert/topic/4630/4630698.xml?temp=.8091547
      

  5.   

    请问wudi_1982 兄  我要显示所有字段怎么将英文字段名换成中文的呢.
    我的sql代码是:
    Select
    bafirst.*
    from bafirst.dbf
    as bafirst
    where (主治医师=:i)
      

  6.   

    不要使用中文作为字段名称,这里面的问题本身就稀奇古怪。通过Delphi的Pradox建立的数据库,如果字段名称是中文的,即使直接通过Delphi打开,那么第一打开是正常的,第二次可能就是乱码,第三次可能又正常了。要命的是通过SQL Explor打开看可能又是好的,可能2000下没问题,98下全是乱码。
    要命的是连Borland都说不清到底问题出在那里。一般说法是字符集的问题
      

  7.   

    因为VCL本身不支持UNICODE的原因....
      

  8.   

    Select
    depart as 科别,
    number as 病案号,
    cjdate as 初诊日期,
    doctor as 主治医师,
    name as 病人姓名,
    ......
    from bafirst.dbf
    where (Doctor=:i)
      

  9.   

    用了以上所有方法.字段已改为英文的.在没用这Select
    depart as 科别,
    number as 病案号,
    cjdate as 初诊日期,
    doctor as 主治医师,
    name as 病人姓名,
    ......
    from bafirst.dbf
    where (Doctor=:i)
    方法前都好用,用了这方法后问题又回来了,还是乱码加找不到记录.怎么办呢.
      

  10.   

    1、这么多AS当然找不到记录了,要改字段还是彻底点
    2、看看你的ADO版本,现在可是2.8了,如果你是早期的,要更新一下