2010年2月26日金曜日

JasperReportsでデータの並び替えを行う

ACCESSのレポートではグループ化や並び替えと言った事が画面上で定義出来たが、いざJasperReportsでやってみようとした所、どこにもそういった項目が無くはまってしまいました。
色々調べてみるとそれらしいキーワードが出ては来るものの海外のサイトなので手探りでやってみた所うまく並び替えが出来るようになりました。

ポイントは
 ・<sortField>を使用
 ・デザイナ上では設定できない?ようなので直接XMLファイルを編集する
 ・スキーマの制約上、<field>タグの次に記述する
 ・デフォルトで昇順になっているので、降順にする場合は
  order="Descending" を指定する。
   (order="Ascending"と記述してもiReportで省かれてしまう様子)

■ 記述例
 <jasperReport>
      :
     <field name="CD class="java.lang.String"/>
     <field name="KEY1" class="java.util.Integer"/>
     <field name="KEY2" class="java.lang.Integer"/>
     <sortField name="KEY1"/>
     <sortField name="KEY2" order="Descending"/>
     <background>
         <band/>
     </background>
      :

上の記述で、KEY1の昇順、KEY2の降順の優先順位でソートが行われるようになります。


2010年2月24日水曜日

NetBeansでFindBugsを使う

1、ツール(T) - プラグイン(G)をクリック
moz-screenshot-1

2、タブ「設定」を選択して追加ボタンをクリック
moz-screenshot-3

3、以下の情報を入力して了解ボタンをクリック
moz-screenshot-4
名前:SQE等
URL:https://sqe.dev.java.net/updatecenters/sqe/updates.xml

4、使用可能なプラグインに「Update Center for SQE」が追加されるのでチェックしてインストールボタンをクリック
moz-screenshot-6

途中以下の警告が出るので続行ボタンをクリック
moz-screenshot-8

5、カタログを再読み込みすると「FindBugs」が追加されるのでチェックしインストールボタンをクリック
moz-screenshot-9

途中以下の警告が出るので続行ボタンをクリック
moz-screenshot-10

以上の手順でメニューにQueryが追加され、ウィンドウにもFindBugsが表示されます。
moz-screenshot-11

ソースの解析は自動でやってくれるみたいで、FindBugsのウィンドウが開いている状態でソースファイルをエディタで開くとバグが表示されます。
Javaを習い始めた時に作ったソースを見ると結構まずいバグが指摘されるので、勉強がてら直していきたいです。

2010年2月22日月曜日

ACCESS MDBファイル破損

ACCESSで組まれている既存のシステムが起動しないと連絡を受けて対応した所、以下のメッセージが発生し起動できない状態でした。

「ほかのユーザーが同じデータに対して同時に変更を試みているので、プロセスが停止しました」

調べてみると参照している別のMDBファイルが破損した様子なので以下の順番で復旧を試みたがどれも最初のメッセージが出て開けずダメ。

1、新規にMDBファイルを作成して壊れたMDBファイルをインポート
2、ACCESSのメニューから最適化
3、ODBC経由で開く

毎日定時に取っているバックアップファイルと内容を確認した所問題なさそうなので、そのファイルで上書きしてとりあえずは対応できました。タイミングが悪ければ最悪1日分の作業がロスになるので良かったです。

ACCESSはいまだにこういったトラブルがあるのでバックアップが必須ですが、不安定な部分もあるので、早く現在開発を進めているJavaベースのシステムに切り替えを進めたい所です。

2010年2月5日金曜日

MySQL Error Number 1025

エラーメッセージだけを見ると何でなのか分からないので備忘録として。

あるテーブル(以降:TableA)の主キーになっている列の属性をVARCHAR(45)からINTEGERに変更しようとした所、タイトルのエラーが発生、
エラーコードで調べてみると「列の名前を変更できません」という内容の様なのですが何故そうなるのか不明。

全体を見直してみた所、変更したいテーブルの主キーは別のテーブル(以降:TableB)で外部キーとして定義されていました。その辺が怪しいので以下の手順でやってみた所無事に属性を変える事が出来ました。

1、TableBの外部キーを削除
2、TableAの主キーの属性を変更
3、TableBの外部キーに該当する列の属性を2、と同じように変更
4、TableBにTableAの主キーへの外部キーを設定

2010年2月4日木曜日

MySQLのデータメンテナンス

MySQLのテーブルの作成、更新には「MySQLAdministrator」を使っていますが、データの追加や更新をすると「MySQL server has gone awayエラーコード:Error 2006)」といったエラーでデータベースへの反映が出来なくなる時があります。
設定の見直しで何とかなるのかもしれませんが、有力な情報も無くデータの更新は非効率ながらもJavaで作成した画面経由で行っていましたのですが、
今使っているPCは購入する時にOfficeのProfessionalを入れていたのを思い出し、ODBC接続でデータのメンテナンスが出来ないか試してみました。

■ 用意したもの
MySQL用のODBC用ドライバ
ダウンロードしてインストールしておきます。
・Microsoft Access 2007

■ 作業手順

1、ODBCデータソースの作成
コントロールパネルの管理ツールより「データソース(ODBC)」をクリック
image 

タブ「システムDSN」をクリックし「追加」ボタンをクリックimage

ドライバ一覧から「MySQL ODBC 3.51 Driver」を選択し「完了」をクリックimage


設定画面が表示されるので項目を入力して「OK」ボタンをクリック
 
タブ:Login
image

項目名

内容

Data Source Name

ACCESSから接続する際に使用する名前
今回はMySQLとしました

Description

コメント?の様なので未入力

Server

サーバ名、もしくはIPアドレス

User

ユーザ名

Password

パスワード

Database

上の3つが正しければコンボボックスにデータベース名が一覧で表示されるのでデータベースを選択

タブ:Connect Options
image

   

項目名

内容

Initial Statement

set names utf8

Character Set

cp932

その他

特に設定なし


タブ:Advanced
image

色々と設定できる項目があるみたいですが、今回は設定なし。


2、Accessの設定
Access 2007 の起動して新規にファイルを作成
image 

リボンメニュー「外部データ」をクリックして「その他」-「ODBCデータソース」をクリック
image  

「リンクテーブルを作成してソース データにリンクする」を選択して「OK」ボタンをクリック
image

タブ「コンピュータデータソース」を選択して一覧から先ほど作成したODBCデータソースを選択して「OK」ボタンをクリック
image 
テーブルの一覧が表示されるので選択して「OK」ボタンをクリック
image

以上の手順でAccessからMySQLのデータの操作が出来るようになりました。

はまった所がODBCデータソースの作成時の文字コード部分で、Character Setの値が空やsjisでも表示は出来るのですが、日本語の入力時、環境依存文字(㈱、①等)に文字コードが認識できないようなエラーが出ました。