バッチ処理、ソートを可変に出来るか?
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
教えて下さい。
SQL Serverのデータ 売上伝票を印刷する処理が有るとします。
一つの印刷タスクのままで、
ある時は、得意先コード+伝票番号順の印刷。
ある時は、担当者コード+日付順で印刷するなど
ソートの項目を可変にする事は可能でしょうか?
メインソースには、ソートに合致した インデックスは用意されていないものとします。
今までは、こういう時は、ワークファイルなどにいったん
書き込んでから印刷するといった事を行ってきました。
もしかすると、メインソースになるデータに 仮想インデックス を用意するのもいいでしょうか?
仮想インデックスは、そのインデックスを指定した場合に、データ抽出後に、Magic側がソートをかけるのでしょうか?
仮想インデックスを定義すると、この仮想インデックスを指定しない場合にも何か処理がなされ悪影響を及ぼす事はございますでしょうか?
メインソースに結合リンクして、結合された項目でソートしたい場合、それは使えないでしょうけど。
メインソースを指定するのではなく、SQLコマンドにするのもいいのでしょうか?使った事がないものですから。
SQL Serverのデータ 売上伝票を印刷する処理が有るとします。
一つの印刷タスクのままで、
ある時は、得意先コード+伝票番号順の印刷。
ある時は、担当者コード+日付順で印刷するなど
ソートの項目を可変にする事は可能でしょうか?
メインソースには、ソートに合致した インデックスは用意されていないものとします。
今までは、こういう時は、ワークファイルなどにいったん
書き込んでから印刷するといった事を行ってきました。
もしかすると、メインソースになるデータに 仮想インデックス を用意するのもいいでしょうか?
仮想インデックスは、そのインデックスを指定した場合に、データ抽出後に、Magic側がソートをかけるのでしょうか?
仮想インデックスを定義すると、この仮想インデックスを指定しない場合にも何か処理がなされ悪影響を及ぼす事はございますでしょうか?
メインソースに結合リンクして、結合された項目でソートしたい場合、それは使えないでしょうけど。
メインソースを指定するのではなく、SQLコマンドにするのもいいのでしょうか?使った事がないものですから。
投票数:0
平均点:0.00
fjksudou
投稿数: 180
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
nkmtさん
こんにちわ
まだ3は使ってなくよくわかりませんが、
可変にする方法は、以下の2種類かなと思われます。
一番手間で高速なのは、
メインソースをSQLにして、OrderBy句を変数化します。
「Order By :1 」で入力パラメータに式で設定します。
結合リンクもSQLで解消できます。
一番簡単なのは、
データリポジトリでキーのタイプを仮想にして2つ作成します。
メインソースの特性で、インデックスを式で定義できます。
1とか2とかです。
ちなみにSQLは高速ですよ。
処理が遅いときはメインソースをSQLに替えるくらいです。
こんにちわ
まだ3は使ってなくよくわかりませんが、
可変にする方法は、以下の2種類かなと思われます。
一番手間で高速なのは、
メインソースをSQLにして、OrderBy句を変数化します。
「Order By :1 」で入力パラメータに式で設定します。
結合リンクもSQLで解消できます。
一番簡単なのは、
データリポジトリでキーのタイプを仮想にして2つ作成します。
メインソースの特性で、インデックスを式で定義できます。
1とか2とかです。
ちなみにSQLは高速ですよ。
処理が遅いときはメインソースをSQLに替えるくらいです。
投票数:0
平均点:0.00
pu_mahalo
居住地: 大阪
投稿数: 775
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは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で処理
でわ〜でわ〜
方法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
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
fjksudou様、pu_mahalo様
今回も教えて下さりありがとうございました。
メインソースではなく SQLコマンド にして
ORDER BY を 可変にするのは実験レベルで成功しました。
GROUP BY とか SUM とか色々使いこなせると
クロスリファレンスが出来ないとか
メンテナンス性 が劣るとかデメリットも有るかもしれませんが
高速な処理を作る事が出来そうですね。
SQL文の勉強も必要だと思いました。^^;
PS・・・SUM、GROUP BY も使い方がわかりました。
便利ですね。
joinを学びます。
今回も教えて下さりありがとうございました。
メインソースではなく SQLコマンド にして
ORDER BY を 可変にするのは実験レベルで成功しました。
GROUP BY とか SUM とか色々使いこなせると
クロスリファレンスが出来ないとか
メンテナンス性 が劣るとかデメリットも有るかもしれませんが
高速な処理を作る事が出来そうですね。
SQL文の勉強も必要だと思いました。^^;
PS・・・SUM、GROUP BY も使い方がわかりました。
便利ですね。
joinを学びます。
投票数:0
平均点:0.00
pu_mahalo
居住地: 大阪
投稿数: 775
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
クロスリファレンスの為
宣言(D)で対応してます。
でわ〜でわ〜
宣言(D)で対応してます。
でわ〜でわ〜
投票数:2
平均点:10.00
otamth
投稿数: 46
![常連 常連](../../uploads/rank3dbf8e9e7d88d.gif)
nkmtさん、こんにちは
当方の環境は2.3ですが、Ctrl+Shift+Fのテキスト検索でSQL内部に埋め込まれたテーブル名を検索することができます。
お試しください。
当方の環境は2.3ですが、Ctrl+Shift+Fのテキスト検索でSQL内部に埋め込まれたテーブル名を検索することができます。
お試しください。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
otamth様、アドバイスありがとうございます。
クロスリファレンス と CTRL+SHIFT+F の両方で探すといいですね。
クロスリファレンス と CTRL+SHIFT+F の両方で探すといいですね。
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
よくやる方法として変数に代入してその変数をソートに含めます。
実 得意先コード
実 年月
変数 順番 代入 条件によって得意先+年月・年月+得意先
ソートに順番を入れる
実 得意先コード
実 年月
変数 順番 代入 条件によって得意先+年月・年月+得意先
ソートに順番を入れる
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは。
PuさんやISHIJIMAさんの言われる変数でのソートの発想が全く無かったので、大変参考になりました。今後機会があれば使ってみたいと思います。ありがとうございました。
PuさんやISHIJIMAさんの言われる変数でのソートの発想が全く無かったので、大変参考になりました。今後機会があれば使ってみたいと思います。ありがとうございました。
投票数:0
平均点:0.00