メインコンテンツへスキップ

照会モード、カナ入力

コメント

19件のコメント

  • vg

    あるとしたら
    テーブルコントロールの各列のプロパティ ソート可ですかね

  • nkmt

    vg様、レスありがとうございます。
    得意先カナ を表示しているカラムは、ソート可=True になってました。

  • Tanda

    「ソート可」をTrueして試してみたら、ちゃんとそのように動きましたよ。

    試したバージョンはMagic xpa 4.7.1 PT2です。

  • nkmt

    tandaさん コメントありがとうございます。

    以下の新規プログラムを作って実験をしてみました。
    オンラインタスク
    照会モード
    メインソースは得意先マスタ

    この得意先マスタは、得意先コードのみで重複不可のインデックス#1と
    コード+フリガナを組み合わせた重複不可インデックス#2 などがあります。

    データビューには得意先コードと得意先略称とフリガナを配置。

    フォームにテーブルコントロールを配置し
    テーブルコントロールに、3項目を配置。

    フリガナ欄をクリックして、そこに イノウエ と文字を入力。
    フリガナの書式は 20K5 となっているので半角カナモードで文字が入力され
    コード順に並んでいたのに、意図した通り、フリナガ順に並び変わり
    複数のイノウエという得意先マスタが表示されました。

    この フリガナ を配置したカラムのソート可特性が
    True であっても False であっても
    フリガナ欄で文字を入力すれば、コード順の表示 改め フリガナ順に並び変わりました。

    ソート可特性によらず、メインソースに「フリナガ順のインデックス」を持っていれば
    このような操作では並び変わってくれるのが当然という認識でおりました。

    APGで作った照会モードプログラムは意図した通りにフリガナ順に並び変わってくれますが
    uniPaaS V1 Plus → xpa 3.2 → xpa 4.7.1 とマイグレーションしてきた得意先マスタ一覧画面は
    フリガナカラムのソート可特性がTrueであろうとFalseであろうと、コード順表示の時に
    フリガナ欄をクリックして、文字入力してもフリガナ順に並び変わってくれません。

  • nkmt

    先程の投稿は、フリガナ順と書くべきところ、ところどころフリナガ順となっておりました。
    失礼しました。

  • nkmt

    得意先マスタ一覧画面は、コード順表示の時にフリガナ欄で文字入力しても
    フリガナ順に並び変わってくれませんが

    ほぼ同様の作りになっている仕入先マスタ一覧画面は、同じ操作でフリガナ順に
    並び変わってくれました。

    何が違うのか調べてみます。

  • nkmt

    その問題になっているプログラムに、
    クラス0のフォームをもう1個作り
    そのまっさらのフォームにテーブルコントロールを配置し
    コード、略称、フリガナを配置し、そのフォームだけの状態にして
    実行してみましたが、フリガナ欄に文字を入力してもフリガナ順に
    並び変わってくれません。

  • nkmt

    原因が判明しました。
    そのオンラインタスクのデータビューには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の制限事項に書いてあったりするかもしれないですね。

  • Tanda

    「外部リンク」はSQLServer側の機能を呼び出しているだけですので、SQLServer側に問題が潜んでいる可能性もありますね。

  • nkmt

    tandaさん いつもコメントありがとうございます。

    客先は、SQL Server 2022 + xpa 4.7.1 PT2 で外部リンク有りのオンラインタスクでは
    カナインデックス順に並んでくれずに、外部リンク改め照会リンクにしたら、カナインデックス順に
    並んでくたのは先述した通りですが、

    当方開発環境で、お客様のSQL Server 2017の過去データ + xpa 4.7.1 の開発版でも状況は同じでした。

    照会リンクと外部リンクで速度改善についながるのか正直わかっていないので
    今回の件もありますし、インデックス切り替えを期待するオンタインタスクでの
    外部リンクの使用は止めます。

    台数多い環境では、バッチタスクでの外部リンクは意義があるのでしょうね。


  • Tanda

    nkmtさん、

    照会リンクはローカルのメモリ上にデータが落ちたあとでMagicエンジンがリンクを実行します。これに対して外部リンクは、SQLServer側でSQLServer自体がリンクを実行し、その結果がローカルに返ってきます。

     

  • nkmt

    はい、そうですね。
    外部リンクはLEFT JOIN済の結果が返ってくる、
    照会リンクは、都度都度SELECT文でデータをもらうといった認識です。
    なのでネットワークに流れる命令減には外部リンクは有効なのかなと思ってます。

  • Tanda

    はい、そうです。Left Joinと呼んでもいいですし、Outer Joinと呼んでもいいです。

    これに対して、結合リンク(Inner Join)はリンクに成功したものだけが返ってきます。

  • vg

    気になったので少し試して見たのですが、
    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が影響しているかもしません。

    照会リンクのソートは全部フェッチしたあとに動くと思いますので
    件数が多いと遅いように思います

  • Tanda

    vgさん、

    > 4.8.1pt1では正しくソートされるように見受けられました( SQL Server 2008 R2 (SP3) 

    2008 R2、いいですね。私もそのバージョンを使い続けたかったのですが、マジック社によるサポートが終了してしまったので、今はしかたなく2014を使っています。近いうちに2016か2017にアップする予定ですが。

    OSとDBは枯れたバージョン(安定したバージョン)がいいですね。余計なトラブルの検証が省けます。

  • nkmt

    確かに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と動きが違う部分も解消したりでノウハウにもなったと思います。

    といっても大した事はないので自慢するような事でもありません。

  • nkmt

    SQL文を書く時に2016ぐらいが境目だったかTRIMかRTRIMを使える、使えないの違いはありました。

  • nkmt

    > 照会リンクのソートは全部フェッチしたあとに動くと思いますので件数が多いと遅いように思います
    意味を理解しました。ありがとうございます。

  • Tanda

    SQLServer 2012 が出たばかりの頃は大変でした。Brokerからの接続はできなくなるし、CPUの負荷率は異常に高くなってしまうしで。。。

    今思うと笑い話ですが。。。

サインインしてコメントを残してください。