トップ回答者
Fillの結果がソートされてしまう

質問
回答
-
イディアさんがされたいことは理解できました。基本的にイディアさんがされた方針で良いと思います。
少し違ったアプローチとして、BeginEditを使わずに伝票を読み取る度にFillだけで済まそうと思えば、
select hoge, 1 as sortcolumn from table
のようなselect文を作成して発行し、DataViewでsortcolumnでソートすれば良いと思います。sortcolumnの値は発行する毎に1ずつインクリメントさせます。
Fillは実行する度にデータテーブルにレコードが追加されていきます。他の方法として、まとめてselectするのであれば、ストアドプロシージャ内で
伝票オーダー 1
伝票オーダー 2
伝票オーダー 3
伝票オーダー 4
伝票オーダー 5
のようなリストから一時テーブルを作成し、それとinner joinして番号でソートしたものを返すということも考えられます。いずれにしても伝票オーダーにソート順を示した項目を結びつける必要があることは間違いありません。
すべての返信
-
terapemiyaさん お返事ありがとうございます。
同じテーブル・同じ接続方法で UNION ALL を試してみました。
UNION ALL で 行うと、クエリにセットしたパラメータ順に結果がでました。
UNION ALL だと・・恐ろしく時間が掛かるので、出来れば使いたくないところです;;
Terapemiyaさんのおっしゃる様に、主キー自動ソートがSQLSERVERの仕様だとすると...
可能だったよーな曖昧記憶ですが、
dataset.tables に対して、パラメータインデックスを更新挿入し、その後、パラメータインデックス順にソートさせる
って手段位しか 思いつかないです。
他に 一般的と思われる 手法って 思い当たりませんでしょうか?
-
trapemiya さん お返事ありがとうございます。
union all の説明で、ms公式ではないですが、sqlエンジンによる並び替えは指定しない限り 行われない と言うのを
見た記憶から 試してみました。
#ひょっとして、1行ずつUNION ALLでつなげたのでしょうか?
>あくまでテストという事で・・・・10件程度で行ってみました;;
BeginEdit~
Datasetの不要列に、パラメータインデックスを入れて、DATAVIEWを作成後、パラメータインデックスをキーにソートは
実現できました。
これが 正当な 方法かは 不明です...。
行いたい事ですが、
ランダムに並んだ 伝票のオーダーを スタックリーダーで 読み取ってます。
そのオーダーを キーに DBから 必要な 情報を 取得し、 そのオーダーの順番どおりの結果表示をしたい。
順番が狂うと 伝票とデータの アイチェックが 大変となるためです。
DB件数は 300万件と 80万件 の 2テーブルを LEFT OUTER JOIN で結合
一回で利用する オーダー数は 1,000-2,000 件 です
というのが、内容となります。
-
イディアさんがされたいことは理解できました。基本的にイディアさんがされた方針で良いと思います。
少し違ったアプローチとして、BeginEditを使わずに伝票を読み取る度にFillだけで済まそうと思えば、
select hoge, 1 as sortcolumn from table
のようなselect文を作成して発行し、DataViewでsortcolumnでソートすれば良いと思います。sortcolumnの値は発行する毎に1ずつインクリメントさせます。
Fillは実行する度にデータテーブルにレコードが追加されていきます。他の方法として、まとめてselectするのであれば、ストアドプロシージャ内で
伝票オーダー 1
伝票オーダー 2
伝票オーダー 3
伝票オーダー 4
伝票オーダー 5
のようなリストから一時テーブルを作成し、それとinner joinして番号でソートしたものを返すということも考えられます。いずれにしても伝票オーダーにソート順を示した項目を結びつける必要があることは間違いありません。
-
こんにちは。中川俊輔 です。
trapemiyaさん、回答ありがとうございます。
イディアさん、フォーラムのご利用ありがとうございます。
その後いかがでしょうか?
有用な情報と思われたため、
勝手ながらtrapemiyaさんの回答へ回答済みチェックをつけさせていただきました。
追加の質問等ありましたら、是非投稿してください!
回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。イディアさんはチェックを解除することもできますので、ご確認ください。
それでは!