procedure Txshmlrform.DBGrid1KeyPress(Sender: TObject; var Key: Char);
var
id:string;
begin
if Key = #13 then
 begin
    with dbgrid1 do
    begin
      if datamodule1.hmxsbQuery.State = dsEdit then datamodule1.hmxsbQuery.Post ;
      if SelectedIndex < FieldCount -1 then
        SelectedIndex := SelectedIndex + 1
      else
      begin
        with datamodule1.hmxsbQuery do
        begin
          if (datamodule1.hmxsbQuery.State = dsEdit) or (datamodule1.hmxsbQuery.State = dsInsert) then datamodule1.hmxsbQuery.Post ;
          Close ;
          Open ;
          Append ;
        end ;
        SelectedIndex := 0 ;
      end ;
    end ;
    id:=datamodule1.hmxsbQuery.fields[0].value;
    datamodule1.hmjbbquery.Close;
    datamodule1.hmjbbquery.sQL.Clear;
    datamodule1.hmjbbquery.sQL.Add('select * from hmjbb where sjhm='''+id+'''');
    datamodule1.hmjbbquery.open;
    if datamodule1.hmjbbQuery.recordcount<>0 then
     begin
     datamodule1.hmxsbquery.Fields[1].value:=datamodule1.hmjbbquery.Fields[1].value;
     datamodule1.hmxsbquery.Fields[4].value:=datamodule1.hmjbbquery.Fields[4].value;
     datamodule1.hmxsbquery.Fields[5].value:=datamodule1.hmjbbquery.Fields[3].value;
     end
     else begin
     showmessage('该纪录不存在存在');
     dbgrid1.SelectedIndex:=0;
     end;
 end;
end;该段代码实现的是在DBGRID中输入一个数后向数据库中查找,找到则让当前焦点跳到下一列,一直到最后列敲回车就再插入一条记录,但是我运行时到最后一列敲回车时老是提示:could not convert variant of type into type(string),但是能继续插入。
这段程序我用QUERY+PARADOX DB运行时挺好,一换成ADO的就不行了