问:
伙伴事务管理器禁止了远程访问,是不是说我买的数据库没有开启事务功能,mssql数据库事务问题
答:您好,很抱歉为您带来不便,数据库是开启了事务功能的,您现在具体是操作什么出现错误可详细说明下。
最好详细说明测试方法和执行代码,我司核实看下是什么问题,非常感谢您长期对我司的支持!
问:private void btnOK_Click(object sender, EventArgs e)
{
if (dataGridView2.SelectedRows.Count <= 0)
{
MessageBox.Show("请选择一条指标用于支付!");
return;
}
if (string.IsNullOrEmpty(txt日期.Text.Trim()))
{
MessageBox.Show("请输入支付的日期!");
return;
}
if (listID.Count > 0)
{
using (TransactionScope ts = new TransactionScope())//事务处理
{
try
{
List<报账Model> list_bz_Model = new List<报账Model>();
//1.计算此次申请的资金数,从表格中获取金额,因为可以更改表格中数据
for (int i = 0; i < listID.Count; i )
{
报账Model model = bz_bll.GetModelByID(listID[i]);
if (Convert.ToDecimal(dataGridView1.Rows[i].Cells["金额"].Value) <= model.金额)
{
model.金额 = Convert.ToDecimal(dataGridView1.Rows[i].Cells["金额"].Value);
list_bz_Model.Add(model);
}
else
{
MessageBox.Show($"第{i 1}行数据的金额数{dataGridView1.Rows[i].Cells["金额"].Value}大于报账数,请更改!");
return;
}
}
decimal total = list_bz_Model.Sum(t => t.金额);
//2.判断所选资金指标结余数是否足额,额度不足要给出提示
decimal zb = Convert.ToDecimal(dataGridView2.SelectedRows[0].Cells["结余数"].Value);
if (total > zb)
{
MessageBox.Show("所选指标不够用于当前支付!请重新选择。");
return;
}
//3.可以支付时将支付数据填入支付表
foreach (var item in list_bz_Model)
{
支付Model zf_model = new 支付Model();
zf_model.金额 = item.金额;
zf_model.资金ID = Convert.ToInt32(dataGridView2.SelectedRows[0].Cells["ID"].Value);
zf_model.报账ID = item.ID;
zf_model.日期 = txt日期.Text;
zf_model.凭证号 = "";
zf_bll.AddModel(zf_model);
}
//4.修改资金表"支付数"字段
资金Model zj_model = zj_bll.GetModelByID(Convert.ToInt32(dataGridView2.SelectedRows[0].Cells["ID"].Value));
zj_model.支付数 = total;
zj_bll.EditModel(zj_model);
//5.修改支付表"支付进度"字段
foreach (var item in list_bz_Model)
{
报账Model bz_model = bz_bll.GetModelByID(item.ID);
bz_model.支付进度 = item.金额;
if (bz_model.金额 – bz_model.支付进度 < 0)
{
MessageBox.Show("支付进度不能大于报账金额!");
return;
}
if (bz_model.金额 – bz_model.支付进度 == 0)
{
bz_model.完成状态 = "已完成";
}
bz_bll.EditModel(bz_model);
}
ts.Complete();
MessageBox.Show("支付成功!点击窗口关闭。");
this.DialogResult = DialogResult.OK;
}
catch (Exception)
{
throw;
}
}
}
}
就是这个代码,最后捕获异常
问:这个代码在我本地机器测试能通过,把数据库换成网络版就通过不了了,咋回事
答:您好,
TransactionScope 这个是.NET的不支持;
请使用MSSQL数据库本身的事务命令执即可,非常感谢您长期对我司的支持.由此给您带来的不便之处,敬请原谅!谢谢!