我现在在DBgrid中设置了右键进行修改,可是我选择了DBgrid中的记录右键进行修改,可是DBgrid中的数据只剩下我选中的这一条数据。
    我想要的效果是选择了DBgrid中的数据,右键进行修改,而Dbgrid中的数据还保留原有的数据量,修改后在DBgrid中的数据在进行更新。

解决方案 »

  1.   

    我的意思是我可以做到修改的目的,可是我选中一条记录之后进行修改,DBGrid的中的数据就剩下我选中的数据了,其他的数据不见了,不知道怎么弄啊
      

  2.   

    //DBgrid的双击事件//创建窗体
         application.CreateForm(Tbill_add_frm,bill_add_frm);     //修改过程
         grd_bill.DataSource.DataSet.Edit;
         bill_add_frm.edt_id.Text:=grd_bill.DataSource.DataSet.fieldbyname('bill_id').AsString;
         bill_add_frm.edt_name.Text:=grd_bill.DataSource.DataSet.FieldByName('bill_expense_name').AsString;
         bill_add_frm.Caption:='报销单信息修改';
         //display form
         bill_add_frm.ShowModal;
         bill_add_frm.Free;
    --------------------
    用做参考
      

  3.   

    或者在你修改后加入如下代码:
    with qry do
    begin
    close;
    sql.text:='select * from tablename'
    open ;
    end;
      

  4.   

    在此说明,我现在坐的是只要选中Dbgri的中的一条数据后,出发事件后就是打开了个窗口,那DBgrid中就只剩下了我刚才选中的那条记录了其中我修改是这样坐的,首先我吧数据全部放到我打开的窗口中,置入文本框
    procedure TEditAccount_Form.FormShow(Sender: TObject);
    var
    TargetUpdate:string;
    begin
      if (Main_Form.DBGrid1.Columns[0].Field.AsString<>'') then
      begin
        TargetUpdate:=Main_Form.DBGrid1.Columns[0].Field.AsString;
        TDM.ADOQuery3.Close;
        TDM.ADOQuery3.SQL.Clear;
        TDM.ADOQuery3.SQL.Add('select * from should_paied where ID='+TargetUpdate);
        TDM.ADOQuery3.Open;
        EditAccount_Form.course_code.Text:=TDM.ADOQuery3.Fields[1].AsString;
        EditAccount_Form.st_time.Date:=StrToDate(TDM.ADOQuery3.Fields[2].AsString);
        EditAccount_Form.unpaied_com.Text:=TDM.ADOQuery3.Fields[3].AsString;
        EditAccount_Form.manager.Text:=TDM.ADOQuery3.Fields[4].AsString;
        EditAccount_Form.tel.Text:=TDM.ADOQuery3.Fields[5].AsString;
        EditAccount_Form.unpaied_time.Date:=StrToDate(TDM.ADOQuery3.Fields[6].AsString);
        EditAccount_Form.adr.Text:=TDM.ADOQuery3.Fields[7].AsString;
        EditAccount_Form.ticket_paied.Text:=TDM.ADOQuery3.Fields[8].AsString;
        EditAccount_Form.should_paied.Text:=TDM.ADOQuery3.Fields[9].AsString;
        EditAccount_Form.tz_paied.Text:=TDM.ADOQuery3.Fields[10].AsString;
        EditAccount_Form.have_paied.Text:=TDM.ADOQuery3.Fields[11].AsString;
        EditAccount_Form.fz_paied.Text:=TDM.ADOQuery3.Fields[12].AsString;
        EditAccount_Form.content.Text:=TDM.ADOQuery3.Fields[13].AsString;
      end;
    end;之后在进行修改procedure TEditAccount_Form.BitBtn1Click(Sender: TObject);
    var
    TarValue:string;
    begin
      if (Main_Form.DBGrid1.Columns[0].Field.AsString<>'') then
      begin
        with TDM.ADOQuery3 do
        begin
        TarValue:=Main_Form.DBGrid1.Columns[0].Field.AsString;
        TDM.ADOQuery3.Close;
        TDM.ADOQuery3.SQL.clear;
        TDM.ADOQuery3.SQL.Add('select * from should_paied where ID='+TarValue);
        TDM.ADOQuery3.Open;
        TDM.ADOQuery3.Edit;
        TDM.ADOQuery3.FieldByName('course_code').AsString:=EditAccount_Form.course_code.Text;
        TDM.ADOQuery3.FieldByName('st_time').AsString:=FormatDateTime('yyyy-mm-dd',EditAccount_Form.st_time.Date);
        TDM.ADOQuery3.FieldByName('unpaied_com').AsString:=EditAccount_Form.unpaied_com.text;
        TDM.ADOQuery3.FieldByName('manager').AsString:=EditAccount_Form.manager.Text;
        TDM.ADOQuery3.FieldByName('tel').AsString:=EditAccount_Form.tel.Text;
        TDM.ADOQuery3.FieldByName('unpaied_time').AsString:=FormatDateTime('yyyy-mm-dd',EditAccount_Form.unpaied_time.Date);
        TDM.ADOQuery3.FieldByName('adr').AsString:=EditAccount_Form.adr.Text;
        TDM.ADOQuery3.FieldByName('ticket_paied').AsString:=EditAccount_Form.ticket_paied.Text;
        TDM.ADOQuery3.FieldByName('should_paied').AsString:=EditAccount_Form.should_paied.Text;
        TDM.ADOQuery3.FieldByName('tz_paied').AsString:=EditAccount_Form.tz_paied.text;
        TDM.ADOQuery3.FieldByName('have_paied').AsString:=EditAccount_Form.have_paied.text;
        TDM.ADOQuery3.FieldByName('fz_paied').AsString:=EditAccount_Form.fz_paied.text;
        TDM.ADOQuery3.FieldByName('content').AsString:=EditAccount_Form.content.Text;
        TDM.ADOQuery3.FieldByName('peoplename').AsString:=login_peoplename;
        TDM.ADOQuery3.FieldByName('branch_name').AsString:=login_deptname;
        TDM.ADOQuery3.FieldByName('bookingid').AsString:=FormatDateTime('yyyymmddhhnnss',now());
        TDM.ADOQuery3.FieldByName('ss_Paied').AsString:=IntToStr(StrToInt(EditAccount_Form.should_paied.Text)+StrToInt(EditAccount_Form.tz_paied.text));
        TDM.ADOQuery3.FieldByName('ws_paied').AsString:=IntToStr(StrToInt(EditAccount_Form.should_paied.Text)+StrToInt(EditAccount_Form.tz_paied.text)-StrToInt(EditAccount_Form.have_paied.Text));
        if messagedlg('确实修改这条记录吗?',mtInformation,[mbOK, mbCancel],0)=mrok then
        begin
        TDM.ADOQuery3.Post;
        Main_Form.dataRefresh;
        end;
        end;
      end;
    end;
      

  5.   

    就着句筛选的(修改)  TDM.ADOQuery3.SQL.Add('select * from should_paied where ID='+TarValue);之后在进行修改procedure TEditAccount_Form.BitBtn1Click(Sender: TObject);
    var
    TarValue:string;
    begin
      if (Main_Form.DBGrid1.Columns[0].Field.AsString<>'') then
      begin
        with TDM.ADOQuery3 do
        begin
        TarValue:=Main_Form.DBGrid1.Columns[0].Field.AsString;
        TDM.ADOQuery3.Close;
        TDM.ADOQuery3.SQL.clear;
        TDM.ADOQuery3.SQL.Add('select * from should_paied where ID='+TarValue);
        TDM.ADOQuery3.Open;
        TDM.ADOQuery3.Edit;
        TDM.ADOQuery3.FieldByName('course_code').AsString:=EditAccount_Form.course_code.Text;
        TDM.ADOQuery3.FieldByName('st_time').AsString:=FormatDateTime('yyyy-mm-dd',EditAccount_Form.st_time.Date);
        TDM.ADOQuery3.FieldByName('unpaied_com').AsString:=EditAccount_Form.unpaied_com.text;
        TDM.ADOQuery3.FieldByName('manager').AsString:=EditAccount_Form.manager.Text;
        TDM.ADOQuery3.FieldByName('tel').AsString:=EditAccount_Form.tel.Text;
        TDM.ADOQuery3.FieldByName('unpaied_time').AsString:=FormatDateTime('yyyy-mm-dd',EditAccount_Form.unpaied_time.Date);
        TDM.ADOQuery3.FieldByName('adr').AsString:=EditAccount_Form.adr.Text;
        TDM.ADOQuery3.FieldByName('ticket_paied').AsString:=EditAccount_Form.ticket_paied.Text;
        TDM.ADOQuery3.FieldByName('should_paied').AsString:=EditAccount_Form.should_paied.Text;
        TDM.ADOQuery3.FieldByName('tz_paied').AsString:=EditAccount_Form.tz_paied.text;
        TDM.ADOQuery3.FieldByName('have_paied').AsString:=EditAccount_Form.have_paied.text;
        TDM.ADOQuery3.FieldByName('fz_paied').AsString:=EditAccount_Form.fz_paied.text;
        TDM.ADOQuery3.FieldByName('content').AsString:=EditAccount_Form.content.Text;
        TDM.ADOQuery3.FieldByName('peoplename').AsString:=login_peoplename;
        TDM.ADOQuery3.FieldByName('branch_name').AsString:=login_deptname;
        TDM.ADOQuery3.FieldByName('bookingid').AsString:=FormatDateTime('yyyymmddhhnnss',now());
        TDM.ADOQuery3.FieldByName('ss_Paied').AsString:=IntToStr(StrToInt(EditAccount_Form.should_paied.Text)+StrToInt(EditAccount_Form.tz_paied.text));
        TDM.ADOQuery3.FieldByName('ws_paied').AsString:=IntToStr(StrToInt(EditAccount_Form.should_paied.Text)+StrToInt(EditAccount_Form.tz_paied.text)-StrToInt(EditAccount_Form.have_paied.Text));
        if messagedlg('确实修改这条记录吗?',mtInformation,[mbOK, mbCancel],0)=mrok then
        begin
        TDM.ADOQuery3.Post;
       // Main_Form.dataRefresh;
        TDM.ADOQuery3.Close;
        TDM.ADOQuery3.SQL.clear;
        TDM.ADOQuery3.SQL.Add('select * from should_paied );
        TDM.ADOQuery3.Open
        end;
        end;
      end;
    end;或者
    之后在进行修改procedure TEditAccount_Form.BitBtn1Click(Sender: TObject);
    var
    TarValue:string;
    begin
      if (Main_Form.DBGrid1.Columns[0].Field.AsString<>'') then
      begin
        with TDM.ADOQuery3 do
        begin
        TarValue:=Main_Form.DBGrid1.Columns[0].Field.AsString;
        //TDM.ADOQuery3.Close;
       // TDM.ADOQuery3.SQL.clear;
        //TDM.ADOQuery3.SQL.Add('select * from should_paied where ID='+TarValue);
       // TDM.ADOQuery3.Open;
        TDM.ADOQuery3.Edit;
        TDM.ADOQuery3.FieldByName('course_code').AsString:=EditAccount_Form.course_code.Text;
        TDM.ADOQuery3.FieldByName('st_time').AsString:=FormatDateTime('yyyy-mm-dd',EditAccount_Form.st_time.Date);
        TDM.ADOQuery3.FieldByName('unpaied_com').AsString:=EditAccount_Form.unpaied_com.text;
        TDM.ADOQuery3.FieldByName('manager').AsString:=EditAccount_Form.manager.Text;
        TDM.ADOQuery3.FieldByName('tel').AsString:=EditAccount_Form.tel.Text;
        TDM.ADOQuery3.FieldByName('unpaied_time').AsString:=FormatDateTime('yyyy-mm-dd',EditAccount_Form.unpaied_time.Date);
        TDM.ADOQuery3.FieldByName('adr').AsString:=EditAccount_Form.adr.Text;
        TDM.ADOQuery3.FieldByName('ticket_paied').AsString:=EditAccount_Form.ticket_paied.Text;
        TDM.ADOQuery3.FieldByName('should_paied').AsString:=EditAccount_Form.should_paied.Text;
        TDM.ADOQuery3.FieldByName('tz_paied').AsString:=EditAccount_Form.tz_paied.text;
        TDM.ADOQuery3.FieldByName('have_paied').AsString:=EditAccount_Form.have_paied.text;
        TDM.ADOQuery3.FieldByName('fz_paied').AsString:=EditAccount_Form.fz_paied.text;
        TDM.ADOQuery3.FieldByName('content').AsString:=EditAccount_Form.content.Text;
        TDM.ADOQuery3.FieldByName('peoplename').AsString:=login_peoplename;
        TDM.ADOQuery3.FieldByName('branch_name').AsString:=login_deptname;
        TDM.ADOQuery3.FieldByName('bookingid').AsString:=FormatDateTime('yyyymmddhhnnss',now());
        TDM.ADOQuery3.FieldByName('ss_Paied').AsString:=IntToStr(StrToInt(EditAccount_Form.should_paied.Text)+StrToInt(EditAccount_Form.tz_paied.text));
        TDM.ADOQuery3.FieldByName('ws_paied').AsString:=IntToStr(StrToInt(EditAccount_Form.should_paied.Text)+StrToInt(EditAccount_Form.tz_paied.text)-StrToInt(EditAccount_Form.have_paied.Text));
        if messagedlg('确实修改这条记录吗?',mtInformation,[mbOK, mbCancel],0)=mrok then
        begin
        TDM.ADOQuery3.Post;
        //Main_Form.dataRefresh;
        end;
        end;
      end;
    end;