我重新改了一下代码
lQueryex := TDbCommand.CreateConnect(DSB_INV_BILL_DETAIL.DataSet);
ls_sql := 'SELECT COUNT(EBD_AUTOIN) lcount FROM EXP_BILL_DETAIL WHERE EBD_MAINID = ' + QuotedStr(ls_new_billid) +
' AND EBD_CONTRACT = ' + QuotedStr(ls_new_contract) + ' AND EBD_PAYMENT_FLAG = ' + QuotedStr(ls_new_paymentflag) ;
lQuery := TDbCommand.OpenSqlex(ls_sql, lQueryex);
li_count := 0;
while not lQuery.Eof do
begin
li_count := lQuery.FieldByName('lcount').AsInteger;
lQuery.Next;
end;
lQuery.EmptyDataSet;
li_count := 1;
If li_count = 1 Then
begin
ls_sql := 'SELECT (EBD_ServiceCharge - EBD_InvServiceCharge) EBD_ServiceCharge, ' +
'(EBD_FitmentCharge - EBD_InvFitmentCharge) EBD_FitmentCharge, ' +
'(EBD_OtherExpenses - EBD_InvOtherExpenses) EBD_OtherExpenses, ' +
'(EBD_MagrofCardFee - EBD_InvMagrofCardFee) EBD_MagrofCardFee, ' +
'(EBD_VacantRent - EBD_InvVacantRent) EBD_VacantRent, ' +
'(EBD_TotalAmount - EBD_InvTotalAmount ) EBD_TotalAmount, ' +
' EBD_STATUS ' +
' FROM EXP_BILL_DETAIL WHERE EBD_MAINID = ' + QuotedStr(ls_new_billid) +
' AND EBD_CONTRACT = ' + QuotedStr(ls_new_contract) + ' AND EBD_PAYMENT_FLAG = ' + QuotedStr(ls_new_paymentflag) +
' AND EBD_PAYMENT_FLAG = ' + QuotedStr(ls_new_paymentflag);
lQueryex := TDbCommand.CreateConnect(DSB_INV_BILL_DETAIL.DataSet);
lQuery := TDbCommand.OpenSqlex(ls_sql, lQueryex);
发现每次 执行TDbCommand.OpenSqlex(ls_sql, lQueryex); 后下次如果还是要执行
TDbCommand.OpenSqlex(ls_sql, lQueryex);一定要再对lQueryex := TDbCommand.CreateConnect(DSB_INV_BILL_DETAIL.DataSet); 就是一定要把连接再重新负值给lQueryex的连接,
不知道这样还算不算一个事务 |