Q123:サーバーにMySQL DBを作成、確認テストをしていますが、後者のエクセルファイル出力のアプリケーションで、データベースアクセスのデータベースのURL設定でlocalhostをサーバーアドレスに変更してサーバーのMySQLからのデータ取得をしようとしましたが、データベースアクセスの引数は正しく設定されていても、localhostからのデータが返されてきます。
Q123-1:
いろいろとアドバイスを戴き、漸くネットワークでのテストにこぎつけました。工程管理簡易版ベースのスケジューリングおよび独自の作業時間・品質情報の入力アプリケーションです。
工程表、作業時間・品質情報をエクセルファイルにおとす簡単なアプリケーションをデータベースアクセスのサンプルとエクセルファイルアクセスのサンプルプログラムを利用して(MySQLデータベースへのデータベース接続、データベース検索、データベースアクセスのコンポーネント活用とエクセルへのファイル出力)をつくりました。
サーバーにMySQL DBを作成、確認テストをしていますが、後者のエクセルファイル出力のアプリケーションで、データベースアクセスのデータベースのURL設定でlocalhostをサーバーアドレスに変更してサーバーのMySQLからのデータ取得をしようとしましたが、データベースアクセスの引数は正しく設定されていても、localhostからのデータが返されてきます。
工程管理簡易版ベースのアプリケーションでは正しく、サーバーDBにアクセスできます。
アクセスされるDBはデータベース検索の画面に表示されているものと理解しますが、SQL文が実行される時、本当に設定したサーバーに対して行われているのか、疑問になってきました。
特にエラー表示もなく、localhostのデータが返される現象です。 何かご教授いただければと思いメールする次第です。
また、今後10程度のPCにローダーを導入、実行する予定ですが、気になったのがデータ連携機能の設定です。これは上記のようなオペレーションでは必須事項ですか?また、ちょっと目を通しても、良く理解できないのですが、どのような機能なのでしょうか?
A123-1:
取り急ぎ、接続情報を確認する方法をご連絡致します。
[データベースアクセス]には「メソッド:接続情報、エラー情報等を取得する()」がありますので、
例えば[データベースアクセス]の「処理完了イベント」の先に
[テキストエリア]を接続します。
「メソッド:文字列を改行して追加する(String)」の引数を
取得方法:メソッド戻り値、
コンポーネント:データベースアクセス
メソッド/値:接続情報、エラー情報等を取得する
として頂くと、[テキストエリア]に接続情報を表示して確認できます。
([テキストエリア]は適宜「文字列を設定する(String)」(引数:固定値、メソッド/値:入力なし)でクリアします)
Q123-2:
下記でご教授うけたように設定して実行してみました。
サーバーDBにアクセスするように設定していますが、内容的にはLocalhostからのデータが表示されます。
テキストエリアは[文字列を追加して改行する](「メソッド:文字列を改行して追加する(String)」はメニュにないので、多分このメソッドだろうと使用)で”データベースアクセス”、”接続情報、エラー情報取得”でデータベースアクセスの処理完了イベントに接続しましたが、接続のエラーは表示されていません。どうもこの処理完了イベントが発生していないように感じられます。(デバッガーでも引っかかりません)
ちなみに、コンポーネントの構成は以下のとおりです。
A123-2:
[テキストエリア]のメソッドは「文字列を追加して改行する(String)」でした。
大変失礼致しました。
・[データベースアクセス]から処理完了イベントが発生していない
・サーバーではなくlocalhostのデータベースの内容が表示されてしまう
ということから、[データベースアクセス]コンポーネントがアプリケーション内に複数あり、今回お調べ頂いた以外の[データベースアクセス]を使って接続、SQL文の実行が行われているのではないかと推測しております。
アプリケーション内に[データベースアクセス]が複数ないか、ご確認下さい。
[データベースアクセス]を複数使っては絶対にいけないという事ではないのですが、サンプルでは一つだけの使用を想定しており、複数の場合は繋ぎ方も違っているかと思います。
Q123-3:
推測されているように、アプリケーションでは複数のデータベースアクセスを使っております。現状は工程管理簡易版ベースのスケジューリングアプリケーションに、作業表、日付別負荷状況、。。と同列で作業時間管理のプログラムを追加、これはデータベースアクセスを別個に使用してMySQL DBをアクセスするようにしています。
理由は簡易版では、作業表、全体計画表、日付別負荷状況などのコンポーネントを同期させているため、他のコンポーネントと同期する必要のない作業時間管理を別途扱うためです。
このアプリケーションとは別に、MySQL データのExcel Worksheetへの読み出しアプリケーションを作成しました。別にした理由は上記アプリケーションが重く、ロードに時間がかかるためです。このアプリケーションはExcelアクセスのサンプルプログラムにMySQLアクセスのルーティンを加えた簡単なものです。
今回お尋ねしているサーバーにアクセスできない現象はこのアプリケーションで発生しています。このアプリケーションでは、Excel データAccess以外のデータベースアクセスのコンポーネントはMySQLアクセスのひとつだけです。工程管理簡易版ベースのアプリケーションを起動しないでも同じ現象となりますので、この場合はデータベースアクセスコンポーネントは単一と思われます。確認を続けますが、まずはご連絡します。
また、複数のデータベースアクセスの場合、繋ぎ方が異なるというのは、何に注意しなければいけないということでしょうか?
確認できた現象がありましたので、ご連絡いたします。
データベースアクセスコンポーネントで一度localhostに接続すると、再度データベースアクセスコンポーネントでlocalhostをサーバーに変更して実行しても、サーバーには接続されていないようです。 その逆も同様です。 また、テキストエリアにメッセージが表示でき、メッセージは
Connected to jdbc:mysql://localhost/production2
Driver MySQL-AB JDBC Driver
Version mysql-connector-java-5.1.13 (Revision:${bzr:revision-id})
で変わりません。
再度ロードし直すと、サーバーに 接続できますが、localhostには接続できない状態となります。
データベースアクセスコンポーネントの使い方に問題があるのでしょうか?
A123-3:
以下考えられるのものを挙げてみます。
・一方のマシーンのデータベースに接続した後、もう一方のデータベースサーバーに接続する前に「データベースとの接続を切断する()」が行われていない
・最後に「アプリケーションを終了する()」が実行されず、前回のプロセスが残ってしまっている
「データベースとの接続を切断する()」を実行すると[データベースアクセス]から「処理完了イベント」が発生し、繋げて頂いた[テキストエリア]には
「Disconnected from jdbc:mysql://localhost/production2」というようなメッセージが表示されます。
・接続している[データベースアクセス]と切断を実行する[データベースアクセス]コンポーネントが違うものである
・「データベースに接続する」の引数を他のコンポーネント等から取得している場合は、何らかの理由で前回の設定が残ってしまっている。
以上ご確認頂いても改善されないようでしたら、こちらで拝見させて頂きたいので、差支えない範囲で結構ですので、アプリケーションファイルをお送り頂けないでしょうか。
Q123-4:
データベースの接続は接続を変更する場合、事前に切断の処理が必要ということを理解していませんでした。
2つのアプリケーションで、見直し、切断を設定したところ、期待した接続が出来るようになりました。基本的な理解が不足していると、時間がかかることを実感いたしました。
A123-4:
データ連携機能について回答致します。データ連携機能には大きく分けて以下の2つがございます。
@コンポーネント転送機能:
プラットフォーム間でコンポーネントを互いに転送する機能
Aコンポーネント連携機能/リモート接続機能:
相手のプラットフォームにおけるコンポーネントのメソッドを実行する機能
@の機能については現在のところあまり使用しておりません。
Aの機能は他のマシーンでロードされているアプリケーションのコンポーネントのメソッドを、あたかも手元のプラットフォームに存在するコンポーネントのメソッドのように実行し、さらにその結果を取得するといった使い方ができます。
但し、もし10台全部のマシーンでデータ連携を行う場合には、それぞれについてデータ連携機能を使用するための設定することになります。全てを完全に同期させなければ成り立たないという状況でなければ、データ連携機能は必要ないかと存じます。