範囲外のインデックスとは何かを知っています。デバッグすると、その理由もわかります。基本的に何が起こっているのかというと、データベースでフィルターを実行して、潜在的/保留中のレコードを探します。次に、それらの番号の配列を収集して別のサーバーに送信し、それらの番号がセールにアップグレードされているかどうかを確認します。販売にアップグレードされている場合、サーバーは新しい販売注文IDと古い保留中の販売注文ID(SourceID)で応答します。次に、そのリストでforループを実行して、特定のSourceIDをフィルタリングし、SourceIDをSales Order IDに更新して、他のいくつかの値を変更します。問題は、最初のフィルターでそのフィルターを使用すると、インデックスが範囲外のエラーをスローすることです。フィルタから返された結果を確認すると、0と表示されます。リストから販売注文番号を取得したので、そこにあるはずなので、これはちょっと奇妙だと思います。だから私は取引が何であるかわかりません。エラーをスローする問題のコードは次のとおりです。そして、それはいつもそれをするわけではありません。今朝コードを実行しただけで、エラーは発生しませんでした。でも昨夜は家に帰る前にやった。
filter.RowFilter = string.Format("Stage = '{0}'", Potential.PotentialSale);
if (filter.Count > 0)
{
var Soids = new int[filter.Count];
Console.Write("Searching for Soids - (");
for (int i = 0; i < filter.Count; i++)
{
Console.Write(filter[i][1].ToString() + ",");
Soids[i] = (int)filter[i][1];
}
Console.WriteLine(")");
var pendingRecords = Server.GetSoldRecords(Soids);
var updateRecords = new NameValueCollection();
for (int i = 0; i < pendingRecords.Length; i++)
{
filter.RowFilter = "Soid = " + pendingRecords[i][1];
filter[0].Row["Soid"] = pendingRecords[i][0];
filter[0].Row["SourceId"] = pendingRecords[i][1];
filter[0].Row["Stage"] = Potential.ClosedWon;
var potentialXML = Potential.GetUpdatePotentialXML(filter[0].Row["Soid"].ToString(), filter[0].Row["Stage"].ToString());
updateRecords.Add(filter[0].Row["ZohoID"].ToString(), potentialXML);
}
右の行を数えている場合、17行目はエラーがスローされたエラーです。保留中のレコードはobject[][]配列です。保留中のレコード[i]は個々のレコードです。untilRecords [i] [0]は新しい販売注文ID(SOID)であり、pendingRecords [i] [1]は古いSOID(現在はSourceID)です。
これについて何か助けはありますか?SOIDを新しいSOIDに変更していて、フィルターが自動的に更新されるためですか?わからない