主从表数据输入技术讨论,欢迎发言!
环境:SQLServer2000,Delphi7,ADO控件,DataLink为数据模板
一、主从表信息输入
采用ADOTable和ADOQuery分两种情况。
1、ADOTable情况
主表设置:ADOT_zhxx
LocaType :ltOptimistic
TableName:t_zhxx
从表设置:ADOT_zhjc、ADOT_zhys
LocaType :ltBatchOptimistic
MasterSource:DS_zhxx
MasterFields:zhxxid
TableName:t_zhjc
添加从表记录
DataLink.ADOT_zhxx.Locate('zhxxid',ls_id,[]);
DataLink.ADOT_zhjc.Append;
保存主从记录
DataLink.ADOC.BeginTrans;
try
DataLink.ADOT_zhxx.UpdateBatch(arAll);
DataLink.ADOT_zhjc.UpdateBatch(arAll);
DataLink.ADOC.CommitTrans;
except
DataLink.ADOC.RollbackTrans;
MessageBox(f_zhxx_edit.Handle,'记录无法保存,请检查输入数据是否正确!','警告',MB_OK+MB_ICONWARNING);
exit;
end;
放弃
DataLink.ADOT_zhxx.CancelBatch(arAll);
DataLink.ADOT_zhjc.Close;
DataLink.ADOT_zhjc.Open;
2、ADOQuery情况
主表设置:ADOQ_zhxx
LocaType :ltOptimistic
SQL :select * from t_zhxx order by zhxxid
从表设置:ADOQ_zhjc
LocaType :ltBatchOptimistic
DataSource:DS_zhxx
SQL :select * from t_zhjc where zhxxid=:zhxxid
添加从表记录
DataLink.ADOQ_zhxx.Locate('zhxxid',ls_id,[]);
DataLink.ADOQ_zhjc.Append;
保存主从记录
DataLink.ADOC.BeginTrans;
try
DataLink.ADOQ_zhxx.UpdateBatch(arAll);
DataLink.ADOQ_zhjc.UpdateBatch(arAll);
DataLink.ADOC.CommitTrans;
except
DataLink.ADOC.RollbackTrans;
MessageBox(Handle,'记录无法保存,请检查输入数据是否正确!','警告',MB_OK+MB_ICONWARNING);
exit;
end;
放弃
DataLink.ADOQ_zhxx.CancelBatch(arAll);
DataLink.ADOQ_zhjc.Close;
DataLink.ADOQ_zhjc.Open;
这是我以前写得东西,有不完善的地方请大家补充,在此多谢了!另外,数据库换成Access后好象不对经,有对Access熟悉的同学讲解一下!