情况说明:1、界面左边DBGrid里显示了两个表的联合查询的结果。
          2、界面右边单条显示DBGrid数据集里的单条数据,并能对单条数据进行修改、删除、插入操作。
          3、DBGrid的AfterScroll实现滚动显示,左右两边记录对应。现在实现:
1、插入操作:
cgrdStaffer.Query.AfterScroll := nil;
cgrdStaffer.Query.Open;
  
  try
        cgrdStaffer.Query.Edit;    try
      cgrdStaffer.Query.FieldByName(L_FIELD_YGBH).Value := edBH.Text;
      
      cgrdStaffer.Query.FieldByName(L_BJYG_YB).Value := ToHarf(edYB.Text);
      cgrdStaffer.Query.FieldByName(L_BJYG_JTDH).Value := ToHarf(edJTDH.Text);
      cgrdStaffer.Query.FieldByName(L_FIELD_BM).Value := cbBM.Text;
      cgrdStaffer.Query.FieldByName(L_FIELD_GW).Value := cbGW.Text;
      cgrdStaffer.Query.FieldByName(L_FIELD_DW).Value := cbDW.Text;
      cgrdStaffer.Query.FieldByName(L_FIELD_ZB).Value := cbZB.Text;
      cgrdStaffer.Query.FieldByName(L_FIELD_YGXZ).Value := cbYGXZ.Text;
      cgrdStaffer.Query.FieldByName(L_BJYG_DZRQ).Value := dtDZRQ.Date;
      cgrdStaffer.Query.FieldByName(L_BJYG_ZYGZDD).Value := edZYGZDD.Text;
      cgrdStaffer.Query.FieldByName('ModifyTime').Value := Now;
      cgrdStaffer.Query.FieldByName('IfUpdate').Value := 0;
      cgrdStaffer.Query.FieldByName(L_BJYG_BZ).Value := mmBZ.Text;
      
      cgrdStaffer.Query.Post;
    能够进行保存操作;
2、修改操作POST报错:具体情况是修改DBGrid中显示的第一条记录能成功,DBGrid中非第一条记录就报ID重复错误。
cgrdStaffer.Query.AfterScroll := nil;
cgrdStaffer.Query.Open;
  
  try
        cgrdStaffer.Query.Append;    try
      cgrdStaffer.Query.FieldByName(L_FIELD_YGBH).Value := edBH.Text;
      
      cgrdStaffer.Query.FieldByName(L_BJYG_YB).Value := ToHarf(edYB.Text);
      cgrdStaffer.Query.FieldByName(L_BJYG_JTDH).Value := ToHarf(edJTDH.Text);
      cgrdStaffer.Query.FieldByName(L_FIELD_BM).Value := cbBM.Text;
      cgrdStaffer.Query.FieldByName(L_FIELD_GW).Value := cbGW.Text;
      cgrdStaffer.Query.FieldByName(L_FIELD_DW).Value := cbDW.Text;
      cgrdStaffer.Query.FieldByName(L_FIELD_ZB).Value := cbZB.Text;
      cgrdStaffer.Query.FieldByName(L_FIELD_YGXZ).Value := cbYGXZ.Text;
      cgrdStaffer.Query.FieldByName(L_BJYG_DZRQ).Value := dtDZRQ.Date;
      cgrdStaffer.Query.FieldByName(L_BJYG_ZYGZDD).Value := edZYGZDD.Text;
      cgrdStaffer.Query.FieldByName('ModifyTime').Value := Now;
      cgrdStaffer.Query.FieldByName('IfUpdate').Value := 0;
      cgrdStaffer.Query.FieldByName(L_BJYG_BZ).Value := mmBZ.Text;
      
      cgrdStaffer.Query.Post;