Q57:複数のテーブルデータを1つのcsvファイルにまとめることができません。
Q57-1:
MZPlatform上から、SQLを実行して,取得したテーブルデータを、csv形式で出力することはできるのですが、複数のテーブルデータを1つのcsvファイルにまとめることができません。どうすればよいでしょうか?また、csv形式以外にもテーブルデータをexcelで使用する方法があれば教えて頂きたいです。
A57-1:
先にMZPlatform上で一つのテーブルに纏めてしまい、CSVに出力するということが考えられます。同じ列数、列型のテーブルデータでしたら、例えば[テーブル格納変数]にデータが入っているとして、メソッド「最後尾に行を追加する(PFObjectList)」「全データをリスト形式で取得する()」などで、一つのテーブルに纏めることができます。
列数、列型が違う場合には、少し工夫は必要ですが纏める方法はあるかと思いますので、お試し頂いて、どのような点でエラーが出るかお知らせ頂ければと存じます。
EXCELファイルへのデータの追加の方法は、ODBCドライバー接続を使い、他のデータベースソフトと同様にSQL文でUpdateなど行います。
『エクセル連携導入チュートリアル』をご覧下さい。
Q57-2:
テーブル格納変数を3つ用意して、テーブル格納変数2つに、列数、列型が異なるテーブルデータをそれぞれ格納して、もう1つのテーブル格納変数で2つをまとめる形を取り、「最後尾に行を追加する」、「全データをリスト形式で取得する()」を使い、「指定位置に行データを追加する」メソッドで
追加位置:テーブルデータの最後尾
追加行データ:「全データをリスト形式で取得する()」
として、テーブルをまとめることができるかどうか試してみたのですが、「データが設定されてない状態でメソッド呼び出しを行いました。」というエラーが表示されました。それぞれのテーブルデータを取得することはできるのですが、これをまとめる方法がよく分かりません。
A57-2:
ご注意頂きたい点が2点ございます。
1.「データが設定されてない状態でメソッド呼び出しを行いました」のエラーメッセージは[テーブル格納変数]が空になっている時に発生します。
各[格納変数]は編集画面に追加直後あるいはビルダー終了後は、データが空になっています。(ただしロード直後に[文字列格納変数]は空文字、数値の[格納変数]には0などデフォルトで設定されるものもあります)
「空のテーブルを設定する」または「テーブルを設定する(PFObjectTable)」を行った後でないと、行や列の追加はできません。テーブル自体が存在していないような状態とお考え下さい。
2.異なる列数・列型のテーブルデータを、単純に追加行として他のテーブルにデータを追加することはできません。列を追加する形なら可能です。その際、行数も異なる場合には、行数を同じにする必要があります。
一例ですが
1)2つのテーブルデータを比較し、行数が少ない方に「addRows(int)」で行を追加し、同数とする。
2)一方のテーブルから列を(一列ずつ)取り出し、もう一方のテーブルに追加する。
という考え方で実現できるかと存じます。
簡単なサンプルを作成しましたので、関連ファイルをご覧下さい。
なおテーブルデータが大きく変わる操作(行・列の追加など)の際には変数の使用をお勧めしていますが、CSVに出力の場合、日付型のデータは(Tue Jun 16 …JST…)といった形に文字化けする可能性があります。
列型・表示形式の変更などが必要となり、その場合には[テーブル]に入れて操作する方が簡単かもしれません。列の追加も「addColumnData(PFObjectTable)」で行えます。
関連ファイル:テーブル纏め例.mzax (※このファイルは、ZIP形式に圧縮してあります。)
ご連絡
ファイルを参考に無事1つのテーブルにまとめてcsv形式で出力する事が出来ました。また、日付型のデータの文字化けも,DATE_FORMAT(日付,'%y/%m/%d')として表示すれば問題無く表示出来ていました。