我不用DBNavigator控件,直接自己用Botton做数据库操作控件增加一条记录
begin
        DBGrid1.DataSource.DataSet.Insert;
end;删除一条记录
begin
        DBGrid1.DataSource.DataSet.Delete;
end;保存
begin
        DBGrid1.DataSource.DataSet.Post;
end;修改当前记录
begin
        DBGrid1.DataSource.DataSet.Edit;
end;跳到首条
begin
        DBGrid1.DataSource.DataSet.FindFirst;
end;跳到上一条
begin
        DBGrid1.DataSource.DataSet.FindPrior;
end;跳到下一条
begin
        DBGrid1.DataSource.DataSet.FindNext;
end;跳到末条
begin
        DBGrid1.DataSource.DataSet.FindLast;
end;当前行在第一条的时候,执行DBGrid1.DataSource.DataSet.FindPrior;会出错
当前行在最后一条的时候,执行DBGrid1.DataSource.DataSet.FindNext;会出错
当前没有新增记录的时候,执行DBGrid1.DataSource.DataSet.Post;会出错
执行DBGrid1.DataSource.DataSet.EDit还是无法修改当前行的记录
当前没有记录的时候,执行DBGrid1.DataSource.DataSet.Delete会出错
请问解决以上错误如何解决?

解决方案 »

  1.   

    跳到下一条
    begin
         if not DataSet.eof then 
         DBGrid1.DataSource.DataSet.FindNext;
    end;跳到上一条
    begin
         if not DataSet.bof then 
         DBGrid1.DataSource.DataSet.FindNext;
    end;加上DBGrid1.setfocus 使DBGrid1获得焦点
      

  2.   

    try
     //执行数据库操作
    except
    end;
      

  3.   

    楼上的,能讲的详细一点吗
    怎么捕捉错误呀?
    我这样
    try
     //执行数据库操作
    exceptend;出错后仍旧不能执行下去我想要的是出错后,程序能够报错但不中断执行
      

  4.   

    在设计期,他会暂停,但是脱离delphi环境,他就会不中断执行了!
      

  5.   

    dataset.eof,dataset.bof
    就是指向首尾纪录啊~
    就想楼上的 张 的方法就可以了啊~
      

  6.   

    加点条件限制不就可以,比哪是FIRST就先判断是不是已经是第一条了,如果是第一条就不FIRST其它的同理
      

  7.   

    你不做判断的?
    上移一条记录
    if not DBGrid1.DataSource.DataSet.bof then
    begin
      DBGrid1.DataSource.DataSet.FindPrior
    end
    else begin
      DBGrid1.DataSource.DataSet.FindFirst;
    end;
    下移
    if not DBGrid1.DataSource.DataSet.eof then
    begin
      DBGrid1.DataSource.DataSet.FindNext;
    end
    else begin
      DBGrid1.DataSource.DataSet.Findlast;
    end;
    POST
    if DBGrid1.DataSource.DataSet.changecount<>0 then
    begin
      DBGrid1.DataSource.DataSet.Post;
    end;
    修改
    if not (DBGrid1.DataSource.DataSet.state in[dsinset,dsedit]) then
    DBGrid1.DataSource.DataSet.edit;
    DBGrid1.DataSource.DataSet.post;
    删除
    if not DBGrid1.DataSource.DataSet.isempty then
    DBGrid1.DataSource.DataSet.delete