请问怎样只修改dbgrid上某一列的值而不需修改数据库中对应的值。

解决方案 »

  1.   

    将dbgrid的数据集控件的sql语句换成这种;select * into #temp1 from yourtable
      

  2.   

    这是什么意思
    用ADOX,可以修改但不提交
      

  3.   

    用BatchMove的方式,修改只会在本地,只有提交修改后才会更新回数据库
      

  4.   

    我只是想在dbgrid上显示与数据库中不同的值,例如一样物品的利用率是96.67%,数据库中是用96.67来表示,而我想在dbgrid上显示96.67%,我应该怎样把'%'加上去呢?最好有例程。
      

  5.   

    写数据集永久字段的SetText和GetText事件procedure TdmEse.sdsVoucherFINISHSetText(Sender: TField;
      const Text: String);
    begin
    //去掉Text中的%;
    //将Text赋给Sender.Value;
    end;procedure TdmEse.sdsVoucherDetailFINISHGetText(Sender: TField;
      var Text: String; DisplayText: Boolean);
    begin
    //设置Text为带%的字符串;
    end;
      

  6.   

    抱歉重发
    写数据集永久字段的SetText和GetText事件procedure TdmEse.sdsVoucherFINISHSetText(Sender: TField;
      const Text: String);
    begin
    //去掉Text中的%;
    //将Text赋给Sender.Value;
    end;procedure TdmEse.sdsVoucherDetailFINISHGetText(Sender: TField;
      var Text: String; DisplayText: Boolean);
    begin
    //将Sender.Value转换为字符串并加上%;
    //将其赋值给Text;
    end;
      

  7.   

    create table a
    (id integer identity(1,1),
     name varchar(50)
    在DBGRID中只有点击保存后才能写进DBGRID,如何实现 在INSERT后就实现呢 
    [↑]
      

  8.   

    简单的很。
    2个方法。
    1.用onGetText和OnSetText;楼上说了,但没说对;
      只要写OnGetText 事件就行了
    procedure xxxx.详详细细xxGetText(Sender: TField;
      var Text: String; DisplayText: Boolean);
    begin
      if DisplayText then
        Text:= Sender.AsString + '%'
      else
        Text:= Sender.AsString;
    end;2.双击他的数据源控件,比如 ADOTable,添加全部字段,找到你需要的那个字段,他有个属性 DisplayFormat,写上 #%就行了第二个方法简单