我用的是Query控件,为何在修改记录时总会出显数据表不能修改
其中query_user1.RequestLive:=true;var
    zmoney : currency;
begin
    with mdb do begin
        query_user1.Close;
        query_user1.SQL.Clear;
        query_user1.SQL.Text :='select H_card,H_money from H_user';
        query_user1.Open;
        query_user1.Edit;
        if query_user1.Locate('H_card',card,[])=true then
            begin
                zmoney:=query_user1.FieldByName('H_money').AsCurrency-mymoney;//mymoney为全局变量
                if query_user1.Modified then
                    begin
                        query_user1.FieldByName('H_money').Value :=zmoney;
                        query_user1.Post;
                        application.MessageBox('数据修改完毕','',0);
                        query_user.Close;
                        query_user.SQL.Clear;
                        query_user.SQL.Text :='select H_card,h_name,h_dj,h_sex,h_depart,h_money from H_user';
                        query_user.Open;
                      end
                    else
                    begin
                        application.MessageBox('对不起,数据表不能被修改?','错误',0);
                    end;
            end
            else
            begin
                application.MessageBox('请确定该用户存不存在?','错误',0);
                exit;
            end;
        query_user1.Close;
    end;
end;

解决方案 »

  1.   

    query_user1.Edit;
     query_user1.FieldByName('H_money').Value :=zmoney;
     query_user1.Post;
    這樣比較好!
    還有一個參數要設置!!
      

  2.   

    修改之前:
      query_user1.RequestLive:=true;
      

  3.   

    如是单表的话:
    query1.RequestLive:=true;
      

  4.   

    将if query_user1.Modified then 改为query_user1.edit;
      

  5.   

    哈哈
    query_user1.Open;
    query_user1.Edit;//这个Edit方法没有用,因为下面的Locate会执行Post操作。
    if query_user1.Locate('H_card',card,[])=true then
      

  6.   

    UP!需先指定数据库为编辑状态最后才可做POST写入。