本人刚学delphi ,写了一个查询修改程序,用edit组件显示查询结果,
用 update 语句进行修改, 可是修改后数据库中已更新,
当按向下后再向上回来时显示界面edit中的值还是未修改的只有退出再进入才显示更新的值sqlstr='update ...'
query.sql.clear
query.sql.add(sqlstr)
query.sql.prepare
query.sql.execsql
请问怎么解决????

解决方案 »

  1.   

    你用DBGrid或DBEdit控件显示查询结果!
      

  2.   

    query.sql.execsql后再加一个query.Requery()或query.Refresh试一下
      

  3.   

    用edit显示结果!
    要更新后立即显示!
    肯定得重新执行你的查询语句!调用你的执行查询的事件!
    如果你用一按钮执行查询是,则调用此按钮的onClick事件!例:procedure TForm1.Button1Click(Sender: TObject);       //查询
    begin
      sqlstr='select ...'
      query.sql.clear;
      query.sql.add(sqlstr);
      query.sql.open;
      ......
    end;
    procedure TForm1.Button2Click(Sender: TObject);  更新
    begin
    sqlstr='update ...';
    query.sql.clear;
    query.sql.add(sqlstr);
    query.sql.prepare;
    query.sql.execsql;
    button1.OnClick(nil);     //调用
    end;
      

  4.   

    我用过query.refresh,但是抱错(好象table.refresh 是好使的,query.refresh 不好使如果  重新执行我的查询语句,不又到了第一条记录了吗???有没有好点的方法啊???
    我用别的语言好像没有这么复杂,难道delphi 语言不好使,功能不强???
    (我不想用 dbedit,难道用edit 组件不行吗 ?)
      

  5.   

    query1.close;
    query1.open;
    刷新后.
    当然刷新后指针会移动到第一条记录.
    如果你想指到当前记录.你只能在刷新前保存那条记录号.刷新后指定那个记录就行了.
      

  6.   

    有点疑惑的是不重新执行程序。。
    你拿什么来更新EDIT里面的东西啊。这么个单独我控件。。
    你不通过语句EDIT里的值怎么可能变。!!。难道我理解不对吗?..
    edit1.text := query1.fieldbyname('字段').assting;不知道你是否用了dbgrid控件。所以不好写。。