我的DBGrid1的DataSource中的设置是DataSource1,DataSource1中dataset的设置是adotable1
adotable1连接我数据库中的一个表,我往表中添加记录没有问题
但是删除和刷新都提示“当前记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制”
请问哪位高手教教我,删除dbgrid1中当前被选中的记录用什么?
我用的是adotable1.DeleteRecords(arCurrent);
提示是“当前记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制”
如果用adoquery怎么删除dbgrid1当前被选中的记录呢,麻烦教教我
还有刷新用什么语句?我刷新用的是adotable1.refresh,也是那个提示

解决方案 »

  1.   

    建议你使用TADOQuery+TDataSource+TDBNavigator+TDBGrid.
    TADOQuery   :提供了更好的控制;
    TDataSource :作用不变;
    TDBGrid     :作用不变;
    TDBNavigator:提供了你想要的所有控制方法,而且不需要你的干预.只要将DataSource属性指向TDataSource就行.不用写代码
      

  2.   

    谢谢啊~
    顺便问下DBNavigator中的按钮可以加图片吗?感觉上面的图标比较丑,呵呵
    假设我选中DBgrid1中的某一个单元格数据,可是我想获得当前选中的数据所在的整行数据,用什么语句?
      

  3.   

    DBGrid1CellClick(Column: TColumn) //DBGrid1行点击事件,遍历Column(字段),获取Cell值
      

  4.   

    DBNavigator没用过
    想问下假如我用DBNavigator
    我想点上面的nbInsert按钮把页面上的edit1,edit2,edit3中的文本作为新添加的记录的数据,应该怎么做?
    谢谢了,麻烦了
      

  5.   

    实验了下怎么用了,呵呵还真挺好用的~怎么美化一下DBNavigator中的按钮,感觉不太漂亮
      

  6.   

    procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);var
      BtnName: string;
    begin
      case Button of
        nbFirst  : ShowMessage('nbFirst');
        nbPrior  : ShowMessage('nbPrior');
        nbNext   : ShowMessage('nbNext');
        nbLast   : ShowMessage('nbLast');
        nbInsert : ShowMessage('nbInsert');
                   {begin
                     //在这里加入你要处理的代码
                  end;}
        nbDelete : ShowMessage('nbDelete');
        nbEdit   : ShowMessage('nbEdit');
        nbPost   : ShowMessage('nbPost');
        nbCancel : ShowMessage('nbCancel');
        nbRefresh: ShowMessage('nbRefresh');
      end;
      MessageDlg(BtnName + ' button clicked.', mtInformation, [mbOK], 0);end;