情况说明: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;
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;
我看到有的人说:
BDE可以实现多表更新
ADO不行,联合表需要update(insert,delete)去搞,弄完重新加载数据
到底是不是这样的?