private void btnDel_Click(object sender, EventArgs e)
{
DataRow dr = null;
BillPrint bp = null;
BillPrintCollection bpc_Del = new BillPrintCollection();
if (MessageBox.Show("是否确定删除?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
foreach (ListViewItem lvi in lsvDetail.CheckedItems)
{
dr = ((DataRowView)((ListViewEx.OLVListItem)lvi).RowObject).Row;
if (dr["UNITS_CODE"] != null && dr["UNITS_CODE"].ToString() != "")
{
bp = new BillPrint("UNITS_CODE", dr["UNITS_CODE"].ToString());
bpc_Del.Add(bp);
ds.Tables[0].Rows.Remove(dr);
}
else
ds.Tables[0].Rows.Remove(dr);
}
bool flag = false;
using (System.Transactions.TransactionScope scope = new System.Transactions.TransactionScope())
{
try
{
using (SubSonic.SharedDbConnectionScope sp = new SubSonic.SharedDbConnectionScope())
{
foreach (BillPrint bpr in bpc_Del)
ProjectCode.Delete("UNITS_CODE", bpr.UnitsCode);
scope.Complete();
MessageBox.Show("删除成功!");
ds = DB.Select().From<BillPrint>().ExecuteDataSet();
lsvDetail.DataSource = ds.Tables[0];
flag = true;
}
}
catch (Exception ex)
{
MessageBox.Show("删除失败!");
flag = false;
}
}
这段实现不了,求高人指教
5 个解决方案
#1
去C++或C#版问吧.
#2
级联删除.
#3
一开始在创建数据库时,对于有关系的表,要选择级联修改和删除,或是自己写触发器,主表中删除一条记录,子表中相关记录也同时删除。
既然你在程序中处理的话,注意一下,先删除子表,再删除主表数据即可。
既然你在程序中处理的话,注意一下,先删除子表,再删除主表数据即可。
#4
级联表数据处理的话,先处理子表,再处理从表。
或者,可以写一个存储过程来触发处理.
或者,可以写一个存储过程来触发处理.
#1
去C++或C#版问吧.
#2
级联删除.
#3
一开始在创建数据库时,对于有关系的表,要选择级联修改和删除,或是自己写触发器,主表中删除一条记录,子表中相关记录也同时删除。
既然你在程序中处理的话,注意一下,先删除子表,再删除主表数据即可。
既然你在程序中处理的话,注意一下,先删除子表,再删除主表数据即可。
#4
级联表数据处理的话,先处理子表,再处理从表。
或者,可以写一个存储过程来触发处理.
或者,可以写一个存储过程来触发处理.