我是先用
 KindADODATASet.Append;
之后DBGrid的记录会在最后出现一个空记录。
中间因如何写才能把写在这个空记录上的数据通过
 KindADODataSet.Post;
加入到数据库

解决方案 »

  1.   

    在DBGrid 输入数据后 按下回车在DBGrid的onkeydown事件中处理
    if key=vk_return then
     if 数据合法  then 
       KindADODATASet.post
     else
       messageDlg................. //不合法提示
      

  2.   

    procedure TForm1.Button18Click(Sender: TObject);
    begin
      DBGrid1.DataSource.DataSet.Append;end;procedure TForm1.Button19Click(Sender: TObject);
    begin
      if trim(DBGrid1.DataSource.DataSet.FieldByName('sup_name').AsString)='' then
      begin
        ShowMessage('名字为空,请填写名字');
        //DBGrid1.DataSource.DataSet.Cancel;
        exit;
      end ;
      DBGrid1.DataSource.DataSet.Post;
    end;
      

  3.   

    为什么每次我按确认即执行post,都说我错误超出范围
    以下是程序
    unit Ygqx;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, Grids, DBGrids, ComCtrls, StdCtrls, Mask, DBCtrls;type
      TFormygqx = class(TForm)
        PageControl: TPageControl;
        Tabczyg: TTabSheet;
        ADOConnection1: TADOConnection;
        KindDataSource: TDataSource;
        DBGrid1: TDBGrid;
        DBGrid2: TDBGrid;
        YGDataSource: TDataSource;
        KindADODataSet: TADODataSet;
        ADOTable1: TADOTable;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        ADODataSet1: TADODataSet;
        DataSource1: TDataSource;
        DBEdit1: TDBEdit;
        DBEdit2: TDBEdit;
        DBEdit3: TDBEdit;
        DBEdit4: TDBEdit;
        ADODataSet2: TADODataSet;
        DataSource2: TDataSource;
        ADODataSet3: TADODataSet;
        DataSource3: TDataSource;
        ADODataSet4: TADODataSet;
        DataSource4: TDataSource;
        TabSheet1: TTabSheet;
        DBGrid3: TDBGrid;
        DBCheckBox1: TDBCheckBox;
        DBCheckBox2: TDBCheckBox;
        DBCheckBox3: TDBCheckBox;
        DBCheckBox4: TDBCheckBox;
        DBCheckBox5: TDBCheckBox;
        DBCheckBox6: TDBCheckBox;
        DBCheckBox7: TDBCheckBox;
        DBCheckBox8: TDBCheckBox;
        DBCheckBox9: TDBCheckBox;
        DBCheckBox10: TDBCheckBox;
        DBCheckBox11: TDBCheckBox;
        DBCheckBox12: TDBCheckBox;
        DBCheckBox13: TDBCheckBox;
        DBCheckBox14: TDBCheckBox;
        DBCheckBox15: TDBCheckBox;
        TabSheet2: TTabSheet;
        DBGrid4: TDBGrid;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Button5: TButton;    procedure Button1Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button5Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Formygqx: TFormygqx;implementation{$R *.dfm}
    procedure TFormygqx.Button1Click(Sender: TObject);
    begin
        KindADODataSet.Append;
    end;procedure TFormygqx.Button4Click(Sender: TObject);
    begin
         KindADODataSet.Cancel;
    end;procedure TFormygqx.Button3Click(Sender: TObject);
    begin
      if trim(KindADODataSet.DataSource.DataSet.FieldByName('kinds').AsString)='' then
      begin
          ShowMessage('名字为空,请填写名字');
          KindADODataSet.DataSource.DataSet.Cancel;
          exit;
      end ;
      KindADODataSet.DataSource.DataSet.Post;end;procedure TFormygqx.Button5Click(Sender: TObject);
    begin
          Formygqx.Close;
    end;procedure TFormygqx.Button2Click(Sender: TObject);
    begin
         KindADODataSet.DataSource.DataSet.Delete;
    end;end.
    kinds项也试过设成非空和空,都一样
      

  4.   

    不就是一个数据的合法性问题吗?在KindADODataSet.BeforePost()事件中判断数据合法性就是了