我做了一个程序,其中用到了数据库事务,但不能实现,为什么,代码如下:
try
with DM do //DM是个数据模块
begin
Database1.StartTransaction;
T_Leechdom.Open; //T_Leechdom是DM中的一个Table
T_Day_Table.Insert; //T_Day_Table是DM中的一个Table
T_Day_Table.AppendRecord([Q_Day_Query.FieldByName('MID').AsString,Q_Day_Query.FieldByName('药名').AsString,StrtoInt(FE_Count.Text),Q_Day_Query.FieldByName('零售价').AsCurrency,StrToCurr(FE_Sum.Text),Now]); //FE_Count是个控件,记录了用户输入的数量
T_LeechDom.Locate(Q_Day_Query.FieldByName('MID').Name,Q_Day_Query.FieldByName('MID').AsString,[]);
T_Leechdom.Edit;
T_Leechdom.FieldByName('数量').AsInteger:=T_Leechdom.FieldByName('数量').AsInteger-StrToInt(FE_Count.Text);
T_Leechdom.Post;
DataBase1.Commit;
end;
except
Beep;
MessageDlg('该动作出现错误,不能完成该动作',mtError,[mbok],0);
DM.Database1.Rollback;
end;
本程序实现在记录用户购买药品的数量的同时,从药品库中减去用户购买的数量
为什么该程序在T_Leechdom中字段的数量值没有改变
我用的不是缓存方式
try
with DM do //DM是个数据模块
begin
Database1.StartTransaction;
T_Leechdom.Open; //T_Leechdom是DM中的一个Table
T_Day_Table.Insert; //T_Day_Table是DM中的一个Table
T_Day_Table.AppendRecord([Q_Day_Query.FieldByName('MID').AsString,Q_Day_Query.FieldByName('药名').AsString,StrtoInt(FE_Count.Text),Q_Day_Query.FieldByName('零售价').AsCurrency,StrToCurr(FE_Sum.Text),Now]); //FE_Count是个控件,记录了用户输入的数量
T_LeechDom.Locate(Q_Day_Query.FieldByName('MID').Name,Q_Day_Query.FieldByName('MID').AsString,[]);
T_Leechdom.Edit;
T_Leechdom.FieldByName('数量').AsInteger:=T_Leechdom.FieldByName('数量').AsInteger-StrToInt(FE_Count.Text);
T_Leechdom.Post;
DataBase1.Commit;
end;
except
Beep;
MessageDlg('该动作出现错误,不能完成该动作',mtError,[mbok],0);
DM.Database1.Rollback;
end;
本程序实现在记录用户购买药品的数量的同时,从药品库中减去用户购买的数量
为什么该程序在T_Leechdom中字段的数量值没有改变
我用的不是缓存方式
T_LeechDom.Locate(Q_Day_Query.FieldByName('MID').Name,Q_Day_Query.FieldByName('MID').AsString,[]);
没有查找到记录