ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

バッチ処理、ソートを可変に出来るか?

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 .5 .6 | 投稿日時 2016-6-9 17:04
nkmt  長老   投稿数: 1668
教えて下さい。

SQL Serverのデータ 売上伝票を印刷する処理が有るとします。

一つの印刷タスクのままで、
ある時は、得意先コード+伝票番号順の印刷。
ある時は、担当者コード+日付順で印刷するなど
ソートの項目を可変にする事は可能でしょうか?

メインソースには、ソートに合致した インデックスは用意されていないものとします。

今までは、こういう時は、ワークファイルなどにいったん
書き込んでから印刷するといった事を行ってきました。

もしかすると、メインソースになるデータに 仮想インデックス を用意するのもいいでしょうか?

仮想インデックスは、そのインデックスを指定した場合に、データ抽出後に、Magic側がソートをかけるのでしょうか?

仮想インデックスを定義すると、この仮想インデックスを指定しない場合にも何か処理がなされ悪影響を及ぼす事はございますでしょうか?

メインソースに結合リンクして、結合された項目でソートしたい場合、それは使えないでしょうけど。

メインソースを指定するのではなく、SQLコマンドにするのもいいのでしょうか?使った事がないものですから。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-6-9 17:41
fjksudou  長老   投稿数: 180
nkmtさん
こんにちわ

まだ3は使ってなくよくわかりませんが、
可変にする方法は、以下の2種類かなと思われます。


一番手間で高速なのは、
メインソースをSQLにして、OrderBy句を変数化します。
「Order By :1 」で入力パラメータに式で設定します。
結合リンクもSQLで解消できます。

一番簡単なのは、
データリポジトリでキーのタイプを仮想にして2つ作成します。
メインソースの特性で、インデックスを式で定義できます。
1とか2とかです。

ちなみにSQLは高速ですよ。
処理が遅いときはメインソースをSQLに替えるくらいです。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-6-9 19:56
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちはPuです。

方法1)メリット:簡単
   デメリット:データが多いと遅い

変数:V_SORT A(100)<==に代入(代入するのはSORTしたい項目)

例:CASE(SORT区分,1,項目A&項目B&項目C,2,項目D&項目C,3,項目F&項目E)

SORT TABLE で 変数 V_SORT を指定

方法2)メリット:簡単
   デメリット:KEY項目が多くなるのでINDEX領域が大きくなるのでINSERT処理が遅くなる、フラグメントが起こりやすい

SORT したい分INDEXを作成
KEYを式で切り替える

方法2)メリット:高速
INDEX 等はオプティマイザが判断
   デメリット:記述が面倒

ORDER BY 句を可変で作成し埋め込みSQLで処理

でわ〜でわ〜

投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2016-6-10 9:45 | 最終変更
nkmt  長老   投稿数: 1668
fjksudou様、pu_mahalo様

今回も教えて下さりありがとうございました。

メインソースではなく SQLコマンド にして
ORDER BY を 可変にするのは実験レベルで成功しました。

GROUP BY とか SUM とか色々使いこなせると
クロスリファレンスが出来ないとか
メンテナンス性 が劣るとかデメリットも有るかもしれませんが
高速な処理を作る事が出来そうですね。

SQL文の勉強も必要だと思いました。^^;

PS・・・SUM、GROUP BY も使い方がわかりました。
便利ですね。

joinを学びます。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-6-10 10:31
pu_mahalo  長老 居住地: 大阪  投稿数: 775
クロスリファレンスの為

宣言(D)で対応してます。
でわ〜でわ〜
投票数:2 平均点:10.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-6-13 10:10
otamth  常連   投稿数: 46
nkmtさん、こんにちは

当方の環境は2.3ですが、Ctrl+Shift+Fのテキスト検索でSQL内部に埋め込まれたテーブル名を検索することができます。
お試しください。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-6-13 10:28
nkmt  長老   投稿数: 1668
otamth様、アドバイスありがとうございます。
クロスリファレンス と CTRL+SHIFT+F の両方で探すといいですね。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-6-13 16:21
ISHIJIMA  長老 居住地: 静岡県  投稿数: 1827
よくやる方法として変数に代入してその変数をソートに含めます。

実 得意先コード
実 年月

変数 順番  代入 条件によって得意先+年月・年月+得意先

ソートに順番を入れる
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-6-13 16:25
nkmt  長老   投稿数: 1668
こんにちは。
PuさんやISHIJIMAさんの言われる変数でのソートの発想が全く無かったので、大変参考になりました。今後機会があれば使ってみたいと思います。ありがとうございました。
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約