用table 、 datasource、 dbgrid。设置table的databasename来连接某SQL SERVER数据库显示在dbgrid中。后来我修改库结构,新增加了一字段。table设置Active为true后dbgrid中却没有显示这一新字段。
为什么?后来我重新设置一个ODBC连接也不行。后来没办法我又重新建立一个应用程序才可以。但是换成ADOtable就可以。有人能给讲一下不?谢谢

解决方案 »

  1.   

    固定字段?指的是DBGrid1.columns吗?我清空了呀?还要在那里删除吗?我把dbgrid换成N个dbcombobox,dbcombobox在指定datasource后,去选择datafield的时候,也没有新添的这个字段。
      

  2.   

    是有这种问题
    你试退出delphi再进看看。
      

  3.   

    你是不是使用了固定字段我想你就是在连接的时候把dbgrid与数据库静态的绑定了
    你这样就可以了with ADOQuery1 do
    begin
      sql.close;
      sql.clear;
      sql.add('select * from table');
      open;
    end;DataSource1.DataSet := ADOQuery1;
    DBGrid1.DataSource := DataSource1;这样就可以全部显示了,但是DBGrid中字段名是你数据库中的字段名
    比如数据库中是英文这里也就是英文
    你可以在把上面的sql语句改一下
    使用别名
    比如:
    select name as 姓名,age as 年龄.........from table;
      

  4.   

    我试过了,重新建立一个ODBC连接名称不行。
    退出DELPHI再进入也不行。
    照楼上的,我新建立了两个button做测试,还是ADOquery可以,但query就显示不全。不解
    button1 添加代码  
    DataSource1.DataSet := ADOQuery1;
    DBGrid1.DataSource := DataSource1;
    with ADOQuery1 do
     ...
      sql.add('select * from table');
    ...
    ————————
    button2添加代码
    DataSource1.DataSet := Query1;
    DBGrid1.DataSource := DataSource1;
    with Query1 do
     ...
      sql.add('select * from table');
    ...
      

  5.   

    这种情况你现关闭Table再打开就会自动出现你添加的字段了。
      

  6.   

    双击talbe就显示出来你显示的字段,把新的加上就可以了
      

  7.   

    可能你在dbgrid的显示字段上没有添加那个加到数据库里的字段吧
      

  8.   

    双击talbe,然后我选择Add all fields显示出来的也没有这个新的字段的呀?
    我真不明白,都是一样的设置。ADOquery可以,query就不可以。这种情况你现关闭Table再打开就会自动出现你添加的字段了。??如何关闭再打开?query的Active设置为False后再设置为true?
      

  9.   

    我不用query了,用ADO的。不过狠奇怪呀。先结帖了。