0

アクセステーブルの更新をインテリジェントに実行する必要があります。エキスパートVBA/インテリジェントシンキングが必要になります。

Table1 (For reference only)
CompanyCode     Text
RegionCategory  Number (1-99)
RegionCount     Number(0 - 25000)

Table2
InvoiceNumber       Number
CompanyCode         Text    
NumRows             Number
RegionCode          FourdigitNumber
ConfirmationRemark  Y / N

私たちの目的は、「ConfirmationRemark」列に「はい」または「いいえ」を入力することです。ルール:

1.Table2から正確に2行でRegionCodeが異なるInvoiceNumbersのみを選択します。これらは同じCompanyCodeを持ちます。RegionCategoryは、RegionCodeの最初の2桁です。

2.これら2つの請求書の場合-2つのRegionCategoryの差は2より大きくなければなりません。

3.Table1からRegionCountを検索します

意思決定:現在、基本的に、RegionCodeが異なる2つの請求書を比較しています。アイデアは、RegionCountが高い請求書がYesとマークされるものであるということです。

1.RegionCount間の違いはかなりのものでなければなりません。「かなり」-私は正しい数が何であるかを決定しようとしています。とりあえず500を取りましょう。

2.リージョンカウントが低い請求書は、リージョンカウントがゼロ(bestCase)または非常に低い必要があります。リージョンカウントが低い請求書のRegionCount値が200を超える場合、正常に結論を出すことはできません。

3.NumRowsは、1以下であることが望ましいです。この比較は必須ではないため、これをチェックしないように規定する必要があります。その他の請求書を「N」としてマークします

4

1 に答える 1

2

そのタイプの複雑な更新にアプローチする方法はたくさんあります。

運が良ければ、すべての変更を含めることができるSQLUPDATEステートメントを作成できる場合がありますが、多くの場合、クエリとカスタムVBAの組み合わせをSELECT使用して、他のデータを含む計算またはルックアップの結果に基づいてそれらをフィルタリングする必要があります。 。

いくつかのヒント

  • 多くの場合、「基準に一致するデータに到達するための手順は何か」という観点から問題について考える傾向があります。
    ただし、問題を真っ向から解決し、代わりに「基準に一致しないデータに到達するための手順は何か」を自問する方が簡単な場合もあります。
    あなたの場合、結果はブール値、true、またはfalseであるため、その逆ではなく、すべてのレコードのConfirmationRemarkフィールドをに設定してから、にTrue設定する必要があるレコードを更新することができますFalse

  • SELECT(行ったように)各ステップを分解し、そのステップに必要なデータのみを返す最も単純なクエリを見つけてください。ステップが複雑すぎる場合は、さらに細かく分けてください。

  • 分解されたSELECTステートメントを一緒に作成して、目標に向かう傾向のあるより複雑なクエリをゆっくりと構築します。

  • 可能な限り進んだら、またはを作成するUPDATE Table2 SET ConfirmationRemark=True WHERE InvoiceNumber IN (SELECT InvoiceNumber ....)か、VBAを使用して、complextSELECTステートメントの結果のレコードセットを調べ、コードのフィールドを更新する前に、さらにいくつかのチェックを行います。

いくつかの問題

残念ながら、あなたの状況を文書化するためのあなたの努力にもかかわらず、私たちが本当に助けるのに十分な詳細がありません:

  • 主キーがどれであるかについては言及していません(あなたの言うことから、Table2同一の複数のレコードを持つ可能性があるようですInvoiceNumber

  • 扱っているデータの種類は明らかではありません。データのサンプルを含めて、最終的にConfirmationRemarkセットになるデータを特定する必要があります。

  • あなたの問題は本当にローカライズされすぎています。つまり、他の人にとって価値のあるものにはあまりにも具体的ですが、複雑なデータにアプローチする方法の例を示すだけであれば、もう少し詳細にあなたの質問が興味深いかもしれないと思いますAccessの更新。

于 2013-03-31T10:14:11.763 に答える