0

MS Access 2010 アプリケーションでは、次の SQL ステートメントを使用します。

SELECT myTable.field1, myTable.field2, ... 
INTO temporaryTable
FROM myTable
ORDER BY myTable.field4, myTable.field3

temporaryTable 内のレコードの順序は、多くの場合、ORDER 句の定義に従っても、temporaryTable 内の順序にも従いません。

しばらくの間、テーブルを並べ替えてコピーし、テーブルをもう一度コピーして、順序を明確にして修正しようとしましたが、役に立ちません。それも幻のようで、うまくいくこともあれば、うまくいかないこともあります。そのため、透過的ではあるが遅い VBA の回避策を作成する必要があります。

誰かがこれについて知っていますか、それはバグですか、そして最善の回避策は何ですか? 設定するパラメーターを見逃していませんか?

前もって感謝します :-)

4

2 に答える 2

1

このタイプの質問に対する標準的な回答は次のとおりです。

テーブル内の行が特定の「自然な」順序になっていることに依存しないでください。これは、Access だけでなく、ほとんどの (すべてではないにしても) データベースに当てはまります。つまりSELECT * FROM something、ORDER BY 句がない (または同等の) ということは、行を任意の順序で返すことができることを意味します。実際、このようなステートメントを複数回実行すると、呼び出しごとに必ずしも同じ順序で行が返されるとは限りません (ただし、Access はそれについてかなり一貫している傾向があります)。

特定の順序でレコードを Excel にエクスポートする必要がある場合 (質問へのコメントに記載されているように)、ORDER BY 句を含む保存済みクエリを Access で作成し、そのクエリを Excel にエクスポートする必要があります。

于 2014-06-22T13:24:27.530 に答える
1

一時テーブルと特定の順序が本当に必要な場合は、MAKE TABLE クエリの代わりに DELETE + APPEND クエリを使用してみてください。「それほど一時的ではない」テーブルでは、主キーおよび/またはデフォルトのソート順を定義できます。

于 2014-06-22T13:41:01.407 に答える