Q7:エクセル連携導入(派遣管理)-2.mzaxファイルの中身について
Q7-1:
件名のとおり、チュートリアルのエクセル連携導入(派遣管理)-2.mzaxファイルの中身についてご質問させていただきたいことがあります。このファイルを参考にして自分でもファイルを作成しているのですが、どうしてもわからない点がございます。
@ファイルの中で、
ID:6が接続ボタン
ID:23がファイル選択ボタン
となっております。ID23上でテーブル上にエクセルデータを読み込むためのドライバとファイル名をID:27(接続文字ラベル)に設定しておりますが、このようにしないとID:6接続ボタンで読み込ませることができないのでしょうか?
AID:23のファイル選択でファイル名を取得する際、そのファイル名を別のコンポーネントに書き出すことは可能でしょうか?
BID:9ラベル(エクセルデータ取得クエリ)で読み出し設定を行っておりますが、from "plan2$"というのがエクセルファイルのシート名を指定しているのではないかと思います。そのように必ず指定する必要がございますか?
Cまた、from以降のシート名を変更させるためには、また別の処理をする必要があるのでしょうか?
このチュートリアルで処理されております、ファイル名選択、接続と分かれているボタンを一つにまとめたいと思っておりますので、なにとぞご回答の方よろしくお願いいたします。
A7-1:
エクセル連携導入(派遣管理)-2.mzaxはMZPF1.6までの「エクセル連携導入(派遣管理)」に追加して
1.複合コンポーネント[グラフデータ作成]を使ったガントチャートデータの作成、表示
2.簡単なエクセルデータのUpdateの処理
3.コントロールパネルからのデータソースの設定をしないODBCドライバー接続の方法をご紹介することを目的としています。
[ファイル選択]コンポーネントを使っているのは、開くエクセルファイルを自由に選択できるようにするためです。
ファイルを選択する必要が無い場合には、
@エクセル連携導入チュートリアルLesson.1のStep.3「ODBCデータソースへの登録」を参考にAP_DATA¥Tutorial\dispatch.xlsの登録設定
Aデータソース名が入力されている[テキストフィールド(ID:5)]のテキストをエクセル連携導入(派遣管理)-1.mzaxと同じ「jdbc:odbc:dispatch」と変更
B[データベースアクセス]の「メソッド:データベースに接続する」の
<引数1>(データベースのURL)のコンポーネントとメソッド/値の欄を
コンポーネント:テキストフィールド(ID:5)
メソッド/値:テキストを取得する
と変更
上記行って頂ければ、ID23〜ID27までのコンポーネントの処理は不要となります。
以下ご質問への回答ですが
1)[ラベル(ID:27)]へは[テキストフィールド]のテキストや[ファイル選択]で選択されたファイル名等を連結した文字列を設定しています。
これが[データベースアクセス]の「メソッド:データベースに接続する」の<引数1>となっています。ラベルに設定しているのには、連結した文字列を保存しておくという目的もあります。必ずしも[ラベル]に設定が必要ということではございません。
簡略に<引数1>の欄に設定する際は固定値で書いてしまうこともあります。
2)[ファイル選択コンポーネント]のデータ選択イベントには「選択されたファイル名」データが含まれていますので、「取得方法:イベント内包」で取得して、他のコンポーネントに設定できます。
3)エクセルファイルは既定の設定ではシートが3つ作られ、シート名は「Sheet1,shee2…」となっているかと思います。
AP_DATA\Tutorialフォルダー内のdispatch.xlsには「plan」と「plan2」の2つのシートがあり、Update処理の都合上「plan2」のシートのデータを使っています。(一番左に番号列を追加したデータです)
シートのデータを読込む際のSQL文は「select 項目名from "シート名$"」です。
「$」マークはエクセル側の仕様で必ず付けることになっています。
シート名は必須で、dispatch.xlsのデータを使用する際には「plan2$」あるいは「plan$」とし、ご自分のエクセルファイルのデータを使用なさる際には、適宜変更していただく必要があります。
シート名がsheet1のままの時は
「select * from "sheet1$"」(*は全部の項目を読込む)などとなります。
4)[ラベル(ID:9)]のテキストに設定してある文字列は上記3)の意味があり、属性情報の設定から自由に変更していただいて結構です。
「開くファイルに合わせてその都度シート名は変更する必要がある」等の場合には追加の処理が必要となります。
Q7-2:
先日お返事いただいたメールを参考にしてみましたが、ファイル選択をする必要がありましたので、『ファイル選択』のコンポーネントを作成し、サンプルファイルの「エクセル連携導入-(派遣管理)-2.mzax」のような形式にさせていただきました。
ただし、ここでファイル選択をした後、プラットフォーム上のテーブルに読み出そうとした時、以下のようなエラーが発生しました。
Exception : [Micorsoft][ODBC Excel Driver] パラメータが少なすぎます。1を指定してください
これは派遣管理-2で例えるとID:6-接続ボタン からのアクションイベントで2つデータベースコンポーネントに接続していますが、その下のほうの「イベント番号を指定してSQL文を実行する」起動メソッドの設定1,int,イベント番号,固定値,-
,1の部分かと思っていたのですが、そうではないのでしょうか?それともコントロールパネルから設定する環境変数、とかの方の設定になるのでしょうか?
上記のエラーについてのご解答よろしくお願いいたします。
A7-2:
このエラーメッセージはODBCドライバーからものでSelect文やUpdate文の項目名がエクセルのシートの列名と一致しない時に発生します。
例えば「select 氏名 from "plan$"」というSQL文を実行した時にエクセルシートの表に「氏名」という列名が付いている列が存在しない時にエラーとなります。
サンプルエクセルファイル「dispatch.xls」のシートには「paln」と「plan2」があり、「エクセル連携導入-(派遣管理)-2.mzax」を実行するには「plan2」のシートでないと「番号」という列が足りませんので、select文が「select from 項目名 "plan2$"」となっているかご確認ください。
Update文のシート名も同様です。
お手元のシートをお開きになりたい場合には、よく列名と照らし合わせてご確認ください。
「select * from "シート名$"」として頂くと、全ての列が読込めます。