コードはかなり簡単です。 [ベンダー詳細]フォームから、[機能]> [更新1099]を選択すると、ユーザーは手動で行うのではなく、すべてのベンダーでこれを広げたいと考えています。私は基本VendTax1099Updateクラスを変更してRunBaseBatchを拡張した後、たくさんのparmメソッドを追加しました。このエラーが発生していますが、タスクは存在しますか?私はそれを間違っているのですか?X ++でのマルチスレッドバッチのプログラミング。何らかの理由で働いていない?
"タックス1099情報のタスクベンダー更新が存在しないため、依存関係を作成できませんでした。
私はそれを広く開いて実行しようとするとDBロックがあったので、私はそれを "addDependency"にしました。それらを修正する方法があるかどうかはわかりません。
void run()
{
BatchHeader batchHeader;
VendTax1099Update vendTax1099Update;
VendTax1099Update vendTax1099UpdateOld;
VendTable vendTable;
boolean first = true;
;
/*
if (this.isInBatch())
{
*/
// Make sure there is a batch header
if (!batchHeader)
batchHeader = BatchHeader::construct(this.parmCurrentBatch().BatchJobId);
while select vendTable
where vendTable.Tax1099Reports == true &&
vendTable.Tax1099Box != ''
{
if (Tax1099Fields::exist(vendTable.Tax1099Box))
{
vendTax1099Update = new VendTax1099Update();
vendTax1099Update.parmFromDate(fromDate);
vendTax1099Update.parmToDate(toDate);
vendTax1099Update.parmRecalcAmounts(recalcAmounts);
vendTax1099Update.parmSetAll1099(setAll1099);
vendTax1099Update.parmBoxFor1099(vendTable.Tax1099Box);
vendTax1099Update.parmVendorNum(vendTable.AccountNum);
if (first)
{
batchHeader.addRuntimeTask(vendTax1099Update, this.parmCurrentBatch().RecId);
first = false;
}
else
{
if (vendTax1099UpdateOld)
batchHeader.addDependency(vendTax1099Update, vendTax1099UpdateOld, BatchDependencyStatus::FinishedOrError);
}
vendTax1099UpdateOld = vendTax1099Update;
}
else
error (strfmt("Unable to process %1 because %2 was not found in Tax1099Fields", vendTable.AccountNum, vendTable.Tax1099Box));
}
/*
}
*/
if (batchHeader)
batchHeader.save();
}