怎么 为DBGrid的一个单元格付值又不让他存储到数据库中呢?

解决方案 »

  1.   

    我是从另一个窗口的Edit中取值来填入DBGrid的。
      

  2.   

    就是阿~~~你取值完以后不运行dataset.post就可以了如果要rollback就不好办了
      

  3.   

    怎么有这么奇怪的问题?如果不让它存储到数据库,那么要 DBGrid 干吗?为什么不用 StringGrid 代替?不过还是提供你一个解决的思路:其实 DBGrid 和 StringGrid 都继承于 TCustomGrid,所以如果你要处理上面的东西,可以来点“硬”功夫,就是强制类型转换!举个例子,DBGrid 里面并没有 FixedCols 和 FixedRows 的参数,但是请试一下在你的程序中加入下面的语句:TStringGrid(DbGrid1).FixedCols := 2;你会发现奇迹:你的 DBGrid 竟然有一行固定列的!!!(注意,第一个固定列是 DBGrid 的 Indicator)同理,如果你需要改动里面的东西,转换后就能得到 Cells 的属性了。不过楼主对 DBGrid 千万不要乱来,如果 DBGrid 的内容与数据库不一致,那么 DBGrid 就再也不是 DBGrid 了,那里面的内容毫无意义……
      

  4.   

    只是单纯从edit里面提取数据,你何必用到dbgrid呢?
    用stringgrid,不涉及数据库操作不就行了
      

  5.   

    如果你是不是想用DBGRID来做数据提交,可以在dbgrid的datasource.dataset的active=true之前设置dbgrid.datasource.dataset.locktype 改为:ltbatchoptimistic
    之后所有的修改post后只要不updatebatch()则不会提交数据库
    在dbgrid的datasource.dataset的 active=false 之后
    将dbgrid.datasource.dataset.locktype还原
      

  6.   

    填写后暂时不提交:参考cg1120(代码最优化-§新年祝福你,好运伴着你§)
    对某一单元格赋值可以这样:
      TdrawGrid(Dbgrid1).Row:=1;
      TDrawGrid(Dbgrid1).col := 2;
      Dbgrid1.setfocus;
      Adoquery1.Edit;
      Dbgrid1.SelectedField.Value:='good';