フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
以下のページによりますと,ご提示のようなエラーは,encrypt プロパティが true に設定され,trustServerCertificate プロパティが false に設定され,接続文字列のサーバー名が SQL Server SSL 証明書のサーバー名に一致しない場合に発生するようです.
https://msdn.microsoft.com/ja-jp/library/bb879949(v=sql.110).aspx
実際の接続時の設定は,データベースURLに続く文字列に続くように,以下のように記述いたします.
jdbc:sqlserver://サーバー名:1433;databaseName=データベース名;encrypt=trueまたはfalse;trustServerCertificate=trueまたはfalse;または,Windows統合認証を使用されている場合には,integratedSecurity=trueをデータベース名;の後に付けることで,解決する場合もあるようです.
SQLServerの設定をご確認いただき,設定のご検討をお願い致します.
MZPlatformユーザー会キーマスターまずは,以下のページをご参照になり,ご使用のJREのバージョンに対応するJDBCドライバをお試しいただけますでしょうか.MZプラットフォームVer2.5の標準インストールではJRE6,Ver3.4ではJRE8がインストールされます.
https://msdn.microsoft.com/ja-jp/library/ms378422(v=sql.110).aspxMZPlatformユーザー会キーマスターお手数ですが、添付のZIPファイルを展開したWebアプリをサーバに配置して実行していただけますでしょうか。リストを選択して項目が表示されたら正常に動作していることになります。
添付のアプリが正常に動作した場合は、作成中のアプリ内に不具合があって、処理の過程でエラーが発生していることになります。
添付のアプリが正常に動作しない場合は、Webアプリの環境に問題がある可能性があります。ご使用のバージョンなどを詳細にお知らせいただけますでしょうか。また、他のサンプルアプリを実行してみて問題がないかご確認ください。
添付ファイル:
MZPlatformユーザー会キーマスターTEST2mod1の処理では元の状態に戻りますので、このような記述をしてはいけません。同じアクションイベントに処理と判定処理を3組接続したら、必ず3回実行されます。処理と判定処理が1組だけ接続されるようにしてください。外部通信の中の処理を修正したファイルを添付します。
同様に、修正してはいませんが実行2ボタンの処理のように書いてもいけません。これは必ず3回実行されます。こちらは外部通信からイベントが出てくるので、そのイベントが発生したら次を実行するように書けば良いと思います。
添付ファイル:
MZPlatformユーザー会キーマスター拝見しました。
外部通信の中の処理Aにサブルーチン4の「処理を呼び出す」が3回接続されていますので、このままでは常に3回実行します。改善方法は、処理Aに必ず実行する処理(サブルーチン4)と判定処理を接続する構造にすることです。例えば、サブルーチン4の処理の中で論理値格納変数を使ってOKのときにtrueを設定し、NGのときにfalseを設定しておけば、その値に従って処理を継続するかどうかを判定することができます。修正例を添付しますのでご覧ください。この例では、継続不可の場合に元のエラーメッセージが、継続可のときに別のメッセージが表示されるようにしてありますので、継続可のところに処理を追加すればOKのときのみ処理を継続することができると思います。
添付ファイル:
MZPlatformユーザー会キーマスターたいへん恐縮ですが、文章だけですとこちらが正確に状況を理解できているか判断が難しい内容に思われます。できれば、状況を再現した簡潔なアプリケーションを添付していただけると助かります。
参考までに、処理の分岐を記述したアプリケーション(MZAX)をZIP形式に圧縮したファイルを添付します。2つのサブルーチンがあり、実行するとそれぞれメッセージダイアログが表示されます。チェックなしで開始ボタンを押すと処理1のみを実行し、チェックありで開始ボタンを押すと処理2まで実行します。
お問い合わせの中で、「外部からOKが来なかった時」の具体的な状況がわかりませんが、基本的には添付したアプリのように何らかの値を使って処理の分岐を書くことになります。イベント生成を使って分岐をすることにはならないと思いますが、状況によってはイベント伝播制御コンポーネントなどを使うことはあるかもしれません。
もう少し具体的な情報をいただければ詳細にご説明しますので、よろしくお願いします。
添付ファイル:
MZPlatformユーザー会キーマスターExcelファイルの特定セルから日付を取得するためには、Excelファイルアクセスの「getCurrentCellValueAsDate()」メソッドを使います。
対象となるExcelファイルを開いてブックのシートを選択し、行からセルを選択した後、上記のメソッドを呼び出します。メソッド名が日本語化されていませんので、メソッド選択時は全メソッド対象にしてお探しください。
参考までに、Excelファイルアクセスのサンプルアプリに機能追加したサンプルおよびExcelファイルを添付します。
添付ファイル:
MZPlatformユーザー会キーマスターMZ Platform 3.4のリリースノートに記述してありますように、Java8からJDBC-ODBCブリッジが削除されている影響で、MZの不具合ではありません。
Oracleからの発表は下記リンク先をご覧ください。
http://www.oracle.com/technetwork/jp/java/javase/overview/8-whats-new-2157071-ja.htmlMZのビルダーからその機能が使える理由は、MZでは暫定的にJava7を含めて配布しておりまして、対象のクラスがパスに含まれるように工夫しているからです。
Webアプリでは、Tomcat等のサーバをJava8で起動している場合、クラスパスに対象となるクラスが含まれませんので、ご報告いただいた状況が発生すると思います。
MZのビルダー側の措置はあくまでも暫定的なもので、今後JavaにJDBC-ODBCブリッジが含まれることはないと思われますので、AccessやExcelファイルをデータベースとして接続する処理は変更をご検討いただくか、商用のJDBC-ODBCブリッジを購入して利用するなどの対応をご検討ください。
MZPlatformユーザー会キーマスターご指摘の通り、日時選択ダイアログは取消ボタンと右上の×ボタンで閉じたときに発生するイベント種別とイベント番号が同一となっております。考え方としては、どちらもイベント種別がデータ選択で、何も選択していない状態(イベント番号0)を表すからです。
このイベント発生については変更できませんので、取消ボタンを押したときとダイアログを右上の×ボタンで閉じた時の処理を変えるためには、下記の別の方法をお試しください。
その方法とは、日時選択ダイアログと同様の機能を持つ日時選択パネルを、通常のダイアログに配置して使用する方法です。両者の方法を比較するサンプルアプリを添付しておきます。日時選択パネルを用いた方法では、ダイアログを閉じるイベントと各ボタンを押したときのイベントが個別になります。
注意点としては、ダイアログを右上の×ボタンで閉じた時と、各ボタンを押したときにメソッドでダイアログを閉じるときの両方で、ダイアログからアクションイベントが発生します。また、日時選択パネルのデータ選択イベントを用いると、日時選択ダイアログとはイベント発生のタイミングが異なることになるので、サンプルでは使用しておりません。
添付ファイル:
MZPlatformユーザー会キーマスターテキストフィールド等のテキストを編集するコンポーネントには、そのコンポーネントにカーソルが存在している場合に「End」キーを押下した際に編集中の行の文字列の最後にカーソルを移動する機能が既に割り当てられております。従いまして、キーイベントハンドラーを用いて「End」キーによるショートカット機能を設定することはできません。他のキーの割り当てをご検討いただけますようお願いします。
-
投稿者投稿