照会モード、カナ入力
得意先コードインデックスと
得意先カナインデックスを用意した得意先マスタを
照会モードで一覧画面表示しています。
コード順で初期表示されていますが
カナのカラムをクリックして、イノウエと入力すると
xpa3.2やuniPaaS V1 Plus では、カナ順に並び変わり
イノウエで始まる得意先がずらっと並ぶのに対し
xpa4.7.1 PT2ではイノウエには位置づくものの
得意先コード順のままなので、フリガナがイノウエで始まる分が
複数存在しても1件しか見つからない状態です。
INIファイルか何かだろと探したのですが今の所発見に
至っておりません。初歩的な事だと思いますが、xpa3.2のような
動きをする設定個所などわかれば教えてください。
-
あるとしたら
テーブルコントロールの各列のプロパティ ソート可ですかね -
vg様、レスありがとうございます。
得意先カナ を表示しているカラムは、ソート可=True になってました。 -
「ソート可」をTrueして試してみたら、ちゃんとそのように動きましたよ。
試したバージョンはMagic xpa 4.7.1 PT2です。
-
tandaさん コメントありがとうございます。
以下の新規プログラムを作って実験をしてみました。
オンラインタスク
照会モード
メインソースは得意先マスタ
この得意先マスタは、得意先コードのみで重複不可のインデックス#1と
コード+フリガナを組み合わせた重複不可インデックス#2 などがあります。
データビューには得意先コードと得意先略称とフリガナを配置。
フォームにテーブルコントロールを配置し
テーブルコントロールに、3項目を配置。
フリガナ欄をクリックして、そこに イノウエ と文字を入力。
フリガナの書式は 20K5 となっているので半角カナモードで文字が入力され
コード順に並んでいたのに、意図した通り、フリナガ順に並び変わり
複数のイノウエという得意先マスタが表示されました。
この フリガナ を配置したカラムのソート可特性が
True であっても False であっても
フリガナ欄で文字を入力すれば、コード順の表示 改め フリガナ順に並び変わりました。
ソート可特性によらず、メインソースに「フリナガ順のインデックス」を持っていれば
このような操作では並び変わってくれるのが当然という認識でおりました。
APGで作った照会モードプログラムは意図した通りにフリガナ順に並び変わってくれますが
uniPaaS V1 Plus → xpa 3.2 → xpa 4.7.1 とマイグレーションしてきた得意先マスタ一覧画面は
フリガナカラムのソート可特性がTrueであろうとFalseであろうと、コード順表示の時に
フリガナ欄をクリックして、文字入力してもフリガナ順に並び変わってくれません。 -
先程の投稿は、フリガナ順と書くべきところ、ところどころフリナガ順となっておりました。
失礼しました。 -
得意先マスタ一覧画面は、コード順表示の時にフリガナ欄で文字入力しても
フリガナ順に並び変わってくれませんが
ほぼ同様の作りになっている仕入先マスタ一覧画面は、同じ操作でフリガナ順に
並び変わってくれました。
何が違うのか調べてみます。 -
その問題になっているプログラムに、
クラス0のフォームをもう1個作り
そのまっさらのフォームにテーブルコントロールを配置し
コード、略称、フリガナを配置し、そのフォームだけの状態にして
実行してみましたが、フリガナ欄に文字を入力してもフリガナ順に
並び変わってくれません。 -
原因が判明しました。
そのオンラインタスクのデータビューにはO=外部リンクを配置してありました。
その状態で
uniPaaS V1 Plus の場合は、データビューにO=外部リンクが配置してあっても
カナ順に並び変わってくれますが、
xpa 4.7.1 の場合は、データビューにO=外部リンクが配置してあると
カナ順に並び変われないようです。
xpa 4.7.1 でO=外部リンクだった分をL=照会リンクにする事で
uniPaaS V1 Plus と同様の動きになりました。
そのuniPaaS V1 Plus の得意先マスタ一覧画面のデータビューに
O=外部リンクを配置していたのは10年以上前の事で、外部リンクにしているのは
速くなるのではないか、という期待で照会リンクではなく、外部リンクにしていました。
この部分は、照会リンクに戻します。お騒がせしました。
実はxpaの制限事項に書いてあったりするかもしれないですね。 -
「外部リンク」はSQLServer側の機能を呼び出しているだけですので、SQLServer側に問題が潜んでいる可能性もありますね。
-
tandaさん いつもコメントありがとうございます。
客先は、SQL Server 2022 + xpa 4.7.1 PT2 で外部リンク有りのオンラインタスクでは
カナインデックス順に並んでくれずに、外部リンク改め照会リンクにしたら、カナインデックス順に
並んでくたのは先述した通りですが、
当方開発環境で、お客様のSQL Server 2017の過去データ + xpa 4.7.1 の開発版でも状況は同じでした。
照会リンクと外部リンクで速度改善についながるのか正直わかっていないので
今回の件もありますし、インデックス切り替えを期待するオンタインタスクでの
外部リンクの使用は止めます。
台数多い環境では、バッチタスクでの外部リンクは意義があるのでしょうね。 -
nkmtさん、
照会リンクはローカルのメモリ上にデータが落ちたあとでMagicエンジンがリンクを実行します。これに対して外部リンクは、SQLServer側でSQLServer自体がリンクを実行し、その結果がローカルに返ってきます。
-
はい、そうですね。
外部リンクはLEFT JOIN済の結果が返ってくる、
照会リンクは、都度都度SELECT文でデータをもらうといった認識です。
なのでネットワークに流れる命令減には外部リンクは有効なのかなと思ってます。 -
はい、そうです。Left Joinと呼んでもいいですし、Outer Joinと呼んでもいいです。
これに対して、結合リンク(Inner Join)はリンクに成功したものだけが返ってきます。
-
気になったので少し試して見たのですが、
4.8.1pt1では正しくソートされるように見受けられました( SQL Server 2008 R2 (SP3) JAPANISE_CI_AS
4.7由来の問題か、
流れているSQLは結合と外部ではInner join(暗黙) かOuter joinの違いくらいで、
Order by 句はクリックしたカラム + インデックス になっていて
where 句に
クリックしたカラム<=カーソルのいた値 AND
インデックス1個目? <= カーソルのいたその項目の値
が入っていたので、2個目のwhereが影響しているかもしません。
照会リンクのソートは全部フェッチしたあとに動くと思いますので
件数が多いと遅いように思います -
vgさん、
> 4.8.1pt1では正しくソートされるように見受けられました( SQL Server 2008 R2 (SP3)
2008 R2、いいですね。私もそのバージョンを使い続けたかったのですが、マジック社によるサポートが終了してしまったので、今はしかたなく2014を使っています。近いうちに2016か2017にアップする予定ですが。
OSとDBは枯れたバージョン(安定したバージョン)がいいですね。余計なトラブルの検証が省けます。
-
確かにSQL Server が最新の2022であろうと2012や2008だろうとuniPaaS V1 Plusやxpaで普通の作りで使う分には大差ないと言いますか、新しいSQL Serverが有した新機能を私は知りもしませんし、SQL Serverは古いバージョンでも問題はないでしょうね。
但しプリインストールサーバーのOSバージョンとSQL Serverのバージョン組合せで動作保証などの観点から、非推奨組合せでの提供はすべきではないという意見も聞いたりしますし、SQL Server 2017以降しか今は購入できないような気もします。(誤りならすみません。)
今回はSQL Server 2022 + xpa 4.7.1 の組合せで自分は初めて利用して頂いた訳ですが、速度面でも安定性でも問題なく動くようになりましたし(サーバーLANケーブルのせいでした)、uniPaaS V1 Plusと動きが違う部分も解消したりでノウハウにもなったと思います。
といっても大した事はないので自慢するような事でもありません。 -
SQL文を書く時に2016ぐらいが境目だったかTRIMかRTRIMを使える、使えないの違いはありました。
-
> 照会リンクのソートは全部フェッチしたあとに動くと思いますので件数が多いと遅いように思います
意味を理解しました。ありがとうございます。 -
SQLServer 2012 が出たばかりの頃は大変でした。Brokerからの接続はできなくなるし、CPUの負荷率は異常に高くなってしまうしで。。。
今思うと笑い話ですが。。。
サインインしてコメントを残してください。
コメント
19件のコメント