我在用Tquery来打开一个表时出现如下问题: 
当用这样的语句Tquery.Close;
              Tquery.Sql.Clear;
              Tquery.Sql.Add('select * from bing');
              Tquery.open;
 是没有错的
   但写成这个样子,就提示这样的错误:table is read only
   Tquery.Close;
   Tquery.Sql.Clear;
   Tquery.SQL.Add('select num as 学号,sjnum as 上机证号,name as姓名,subject as 专业,cerror as 禁用,memo as 备注 from bing');
   Tquery.open;
各路大侠,帮帮我!

解决方案 »

  1.   

    这可能是因为你用的数据库不支持中文字段名, 有两种方法可以试试:
        1) 换一种数据库.
        2) 用上面那种方法查询, 然后在Tquery中定义所有字段,将Displaylabel
    设置为对应的中文.建议用第二种方法.
      

  2.   

    你只要在query中,右击add all fild
      

  3.   

    我想与数据库可能性不大。因为目前主流的几个数据库如ACCESS、MS SQL 
    SERVER、UDB、ORACLE、SYABSE等对中文支持都挺好的呀!
      我不知道楼主的具体环境、境况,但我想可能是其它原因。
      

  4.   

    "name as姓名",
    会不会是这里少了个空格?
      

  5.   

    query1的RequestLive属性设置为true
      

  6.   

    你的数据库是什么类型啊?若是PARADOX数据库的话是不支持这样SQL语句,你可在写完QUERY控件实例的SQL STRING后,对着QUERY控件实例点击鼠标右键,后选弹出菜单中选fields Editor后 右击add all fild 再将Displaylabel
    设置为对应的中文.
      

  7.   

    我还是没有解决这个问题,我在INTERBASE来建的库,我现在真的不知道如何来解决这个问题,大家一定要帮帮我啊
      

  8.   

    出现的问题和错误都是一样的:table is read only
    而且我单独把上面的语句拿出来,在一个新的窗体中来试试看,错误还是一样
      

  9.   

    PARADOX数据库的话是不支持这样SQL语句,你试一试用sql server.
      

  10.   

    adoquery5.Close;
    adoquery5.SQL.Clear;
    adoquery5.SQL.Add('select transdate as 日期,count(transdate) as 缴费张数,sum(cast(latefee as int)) as 滞纳金,sum(cast(prepayamount as int)) as 预缴话费,sum(cast(vipfee as int)) as 优惠金额,sum(cast (payamount as int))收缴金额,sum(cast(billamount as int))话费金额');
       adoquery5.SQL.Add('from paytransyd');
       adoquery5.SQL.Add('where transdate>='''+edit1.Text+'''');
       adoquery5.SQL.Add('and transdate<='''+edit2.Text+'''');
       adoquery5.sql.add('group by transdate');
       adoquery5.Open;这是我用过的一个例子,,没有问题的,看看能不能帮你!