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

パスワード:


パスワード紛失

PervasiveV8からSQLServer2008R2移行に伴う抽出範囲の設定について

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-6-24 15:39
mysticage  一人前   投稿数: 77
Puさん、ありがとうございます。

基本は、範囲でのcndrange関数を使用し、処理速度が
遅いと感じたら、埋め込みSQLなどで、改善して
いこうかと思います。

いろいろと教えていただきましてありがとうございました。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-6-24 10:35
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは Puです

単に抽出なら 埋め込みSQLを使用しなくても 範囲で十分速度が
出ると思います。

>メインソースを使用し、範囲:最小と範囲:最大に抽出条件の値を
>そのままいれずに、範囲:最小にはcndrange(最小値<>空白,最小値)、
>範囲:最大にはcndrange(最大値<>'゚゚゚゚゚',最大値)

↑で充分かと思います。
でわ〜でわ〜
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-6-21 10:43
mysticage  一人前   投稿数: 77
Puさん、Tandaさん、こんにちは。

cndrange関数の存在は知りませんでした。
MagicV8にも存在していたのですね。

以下の処理の場合、どのようなコーディングをしていますか?

商品マスタ(商品コード(文字列)、商品名(文字列)の項目)の検索画面で、
抽出条件に、商品コードの最小値と最大値の2つの入力項目があり、
それぞれの初期値が空白、[゚゚゚゚゚]となっています。
今までは、メインソースを商品マスタにしていまして、商品コードの範囲:最小と範囲:最大に
抽出条件の最小値と最大値を入れてました。
今回、SQLServerに変更するということで、メインソースからSQLコマンドに変更しまして
SQL文を記載し、
[SELECT 商品コード,商品名 FROM 商品マスタ WHERE 商品コード BETWEEN 最小値 AND 最大値]
としました。

処理速度アップが目的の1つです。
SQSQLコマンドを使用せずに、メインソースを使用し、範囲:最小と範囲:最大に抽出条件の値を
そのままいれずに、範囲:最小にはcndrange(最小値<>空白,最小値)、
範囲:最大にはcndrange(最大値<>'゚゚゚゚゚',最大値)
としたほうが処理速度アップにつながるのでしょうか?
(実際は、商品マスタには他に項目があり、商品コード以外にも範囲で抽出しています)

メインソースからSQLコマンドを使用したほうが処理速度アップに繋がると勝手に思い込んで
しまっています。
その時でコーディング方法は異なるかもしれませんが、教えていただけないしょうか。
よろしくお願い致します。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-6-20 11:13
Tanda  長老   投稿数: 2151
そうですね、Puさんが言われるように cndrange() 関数を使うのが
いちばん良いですね。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2013-6-20 8:26
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは Puです

せっかくSQLserverを使用されているのですから
条件で抽出される場合
1)条件が入ってる場合は 範囲の上下限でそのまま
2)全件の場合=条件が入ってない場合
  cndrange関数で 範囲指定してやれば
  良いかと思います。

でわ〜でわ〜
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-6-19 16:26
mysticage  一人前   投稿数: 77
nobukoshi802さん、Tandaさん、返答ありがとうございます。

まずは、SQLServerの照合順序をJapanese_Bin2に変更しました。
データベースを最初から作成し直しましたので時間がかかってしました。
動きを確認しますと、Pervasiveと同じ動きになりました。

また、Magicの文字列項目を範囲抽出する時に全件を対象としたい場合など、空白〜[゚]としていましたが、[*]〜[*]でも抽出できるのですね。勉強になりました。データベースの種類に関係なく使用できるということで、修正していきます。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-6-19 12:55
Tanda  長老   投稿数: 2151
mysticage さん、こんにちは。

[゚゚゚]ではなく、ワイルドカードの「*」を使えば、どんな環境でも
うまくいくと思いますよ。
投票数:2 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-6-19 12:26
nobukoshi802  一人前   投稿数: 118
照合順序の設定がJapanese_CI_ASだからだと思います。

Pervasiveと同じ動作にしたい場合は
Japanese_Bin2にすれば良いはずです。

投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2013-6-18 14:16
mysticage  一人前   投稿数: 77
PervasiveV8からSQLServer2008R2にデータベースを移行しています。
dbMagicのバージョンはV10です。

あるテーブルの抽出処理で、フォームにそのテーブルの文字列項目(3桁)の範囲を入力し、その範囲を抽出しようとしています。
フォームには、開始用の入力変数と終了用の入力変数を配置し、抽出時にその変数をそれぞれ、データビューの文字列項目の範囲:最小と範囲:最大にセットしています。

PervasiveV8の時は、開始を空白、終了を[゚゚゚]としましたら、全件抽出できましたが、SQLServer2008R2では、1件も抽出できません。
抽出範囲を指定しています文字列項目には、英数値のみが入っています。
SQLServer2008R2の照合順序は[Japanese_CI_AS]になっています。

SQLServer2008R2で、全件を抽出したい場合の開始と終了の値はどうしたらよろしいでしょうか。教えて下さい。
よろしくお願い致します。
投票数:0 平均点:0.00

  条件検索へ


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