ドリンクバーゲン会場

BIRTをTomcatから利用する2008年07月22日 11時14分25秒

BIRTを使っての帳票作成は、ある程度いけそうな感じなので、テストで作成した帳票をTomcatkから利用するための準備をしていきます。

Tomcatから利用するには、BIRTのランタイム版が必要なようで、ホームページからダウンロードしてきました。
この時点でのバージョンは、2.3.0です。

解凍したら、「itext-1.3.1.jar」と「prototype.js」それとSQLServer用の
「sqljdbc.jar」をコピーするようなのですが、
ホームページで調べた内容と微妙に違う感じでどこにコピーすればよいのかもうひとつよくわかりません。
ランタイム版を見ていると、「prototype.js」はすでにそれらしいところに入っていたので、これで良いみたいです。

他のファイルは「plugins」フォルダー内に入れるようなのですが、ここで
わけがわからない状態になっています。

ランタイム版を回答した際に、3つのフォルダーがありました。
最終的には、そのうちのひとつである「WebViewerExample」をTomcatに
コピーするようなのですが、その中には「plugins」のフォルダーがありません。
「ReportEngine」というフォルダーの中に「plugins」というフォルダーはあるのですが、Tomcatにコピーするということは何も書かれていないので、どこにコピーしたらよいのかよくわかりません。

試しに適当にコピーしてみましたが、案の定エラーになってしまいました。
もう少し時間がかかりそうです。

条件付き書式2008年07月23日 11時08分09秒

先日、知り合いからエクセルについて質問を受けました。
条件付き書式についてのことで、内容は計算結果によってセルの色を変更するというもので、条件付き書式を使うことで、対応できるものでした。

そのことを伝えると、通常の場合はできるが、正しく結果が反映されないというのです。
割り算の結果が10以上なら、背景を青、未満なら赤にする。
これだけであれば、いけるそうなのですが、元になるデータがない場合、背景を白のままにしたいのだが、青になるというのです。

ABC
11001010
2100205
3100  
上記の表の場合、C3は白にしたいが青になってしまうそうです。
計算式を確認してみると、IF関数を使ってエラーの場合に「””」の処理をしていました。
表示自体はブランクの状態なのですが、条件付き書式では値があることになり、青く表示されてしまいます。

このような場合、計算式でエラーを回避するのではなく、条件付き書式でエラーの処理をさせます。

元の式は「=if(iserror(A1/B1),"",A1/B1)」となっていたのですが、割り算のみの式に変更しました。「=A1/B1」

次に、条件付き書式ですが、エラーの時の書式を追加しました。
エラーの際には、背景も文字色も白にしてやると元データに値が入っていない場合エラーとなり、セルは白色のままにできます。

今回のケースは、関数でエラーを回避することで、条件付き書式に影響がでてしまいました。
計算結果から新たな計算が必要ない場合は、今回の方法で対応してみてください。

ACCESSからSQLServerの接続2008年07月26日 09時50分38秒

現在、Javaでの開発を準備中ですが、現在の業務で不便なことはアクセスを使用してとりあえずしのいでいます。

アクセス単体で使うことはなく、通常はSQLServerのデータを更新するようにしているのですが、これにはいくつかの手順が必要なので、今回はその方法を解説します。

まず最初はデータソースの設定です。
「管理ツール」の中に、「データソース(ODBC)」というアイコンがあるので起動します。

いくつかタブがある画面が表示されるのですが、その中で「システムDSN」タブを選びます。
ただし、PCにユーザーが一人の場合などは、「ユーザーDSN」でも大丈夫です。
私の職場では、共有利用するので、すべてのユーザーから利用できる「システムDSN」を利用します。

「追加」ボタンで、SQLServerを登録していきます。
SQLServerのドライバを選択し、データソース名、サーバー名、ログインIDの設定、既定のデータベースの設定などを登録します。

まず、データソース名は自由な名前を付けることができます。
複数のデータソースを登録する場合には、管理しやすいように、
わかりやすい名前をつけます。

サーバー名は、SQLServerがインストールされているサーバー名を記入します。

ログインIDの設定は、職場では、「WindowsNTの認証メカニズムを使う」にチェックを入れています。
環境によっては、IDとパスワードを登録する必要があります。

既定のデータベースの設定では、読み込むデータベースを選択します。
これは、一つのサーバーに複数のデータベースが登録されている場合がありますので、どのデータベースを使うのかを指定します。
職場では、3つのデータベースが同じサーバーに登録されているので、
それぞれを登録しています。

登録が済んだら、一覧に表示されていると思います。

データソースの登録が完了したら、アクセスを起動し、新規のデータベースを作成します。

ACCESS2007の場合、「外部データ」タブを選択し、「インポート」から「その他」を選びます。
一覧の中に「ODBCデータソース」というのがあるので、選択します。

データの保存方法を聞いてくるのですが、インポートとリンクの2種類がありますが、ここではリンクを選択します。

インポートを選択してしまうと、SQLServerのデータがすべてACCESSに入ってしまい、登録などを行ってもSQLServerには反映されません。
リンクを指定すると、登録などの処理がSQLServerに反映されるようになります。

次にデータソースの選択画面が表示されます。
この画面で「コンピュータデータソース」タブを選択すると、登録したデータソースが一覧の中に表示されているので、選択して「OK」ボタンをクリックします。

「テーブルのリンク」という画面が表示されるので、利用するテーブルをクリックして選択します。
すべてのテーブルを使う場合は、「すべて選択」ボタンを押せば、すべてのテーブルが選択されます。

「OK」ボタンを押すと、リンクテーブルが作成されます。
ACCESS内に作成されたテーブルは表のようなアイコンですが、
リンクテーブルでは、地球に矢印のアイコンになりますので、ACCESSに登録しているテーブルとは簡単に区別がつくようになっています。

後は、普通にクエリーやフォームを作っていけばACCESSから、SQLServerのデータを操作できるようになります。

ACCESS参照設定の追加2008年07月29日 10時20分35秒

SQLServerからのリンク接続ができ、データの更新などはできるのですが、クエリーやフォームを作ってアプリケーションとして構築していくには、VBAの利用が前提となります。

VBAを利用するには、VBAエディターを使い、コーディングするのですが、データベースのデータを扱う場合には、ライブラリの登録が必要になります。

データベースを扱う場合に必要となるライブラリですが、よくつかわれているのは、DAOとADOの2種類です。
参考書などでも、よくこの2種類のパターンで解説されています。
私はこれにエクセルを扱うためのライブラリなども使います。
これは、データをエクセルにエクスポートする際に利用するものです。

実際にライブラリを登録する方法ですが、まずVBAエディターを起動します。
VBAエディターはACCESSから起動できます。
ACCESS2007の場合は、「データベースツール」タブから、「VisualBasic」をクリックすると起動します。

次にVBAエディターのメニューから「ツール」-「参照設定」を選択すると、「参照設定」画面が起動します。
ここには環境によって変わってきますが、たくさんのライブラリが表示されています。
その中から、必要なライブラリにチェックを入れれば登録されます。

私が良くする失敗は、新しいプログラムを作る際にインポートの機能を使って以前に作ったプログラムなどを取り込むのですが、この設定を忘れて動かないということが時々起っています。

これをしておかないと、プログラムを作成した際に動かないので注意してください。

アクセスのラベル印刷2008年07月31日 10時06分35秒

先日、事務のほうからアクセスでラベル印刷をするので、開始位置を調整できるようにしてほしいと依頼がありました。

アクセスのレポート機能を使い、ラベル印刷を行っているのですが、いつも先頭から印刷できるわけではないので、当然の要求ですね!

しかし、今まで行ったことがなく、ネットで調べてみました。 マイクロソフトのサポートサイトに情報が載っていたので、それを参考に作りました。
サイトに乗っていた情報はおそらくアクセス2003のものだと思うのですが、現在使っている2007でも同じようにできるようです。

ます、ラベルを印刷するフォームはすでにあるので、そのフォームに開始を指定する機能を追加していきます。

レポートのデザインを開きます。初期設定では、「レポートヘッダー/フッター」が非表示になっているのですが、表示させる必要があります。
アクセス2007で表示させる方法ですが、「配置」タブの「表示/非表示」の項目の中に、「レポートヘッダー/フッター」のボタンがあります。 一番右端にあると思いますので、クリックします。

クリックすると、デザイン画面の上下に「レポートヘッダー」と「レポートフッター」が表示されると思います。

まず最初に、「レポートヘッダー」をクリックして選択し、プロパティを開きます。
プロパティの「イベント」タブの、「フォーマット時」に「イベントプロシージャ」を指定し、VBAエディターを開きます。

まず最初に変数を登録します。
この変数は、共通でつかうので、「General」に登録します。
要は開いた画面の先頭に登録すればよいです。
*************************
Option Explicit
Dim i, k As Integer
*************************

登録したら、フォーマットのところにも登録します。
上で登録した、「i」と「k」の変数を設定します。
*************************
i = 0
k = inputbox("開始位置")
*************************
以上のように入力します。

これでレポートを印刷するときに開始位置を入力するための 画面が表示されます。

次はデザイン画面の「詳細」を選択し、プロパティを開いてください。
「詳細」のプロパティでも「フォーマット時」に「イベントプロシージャ」を選択し、VBAエディターを起動してください。
*************************
If i < k - 1 Then
Me.MoveLayout = True
Me.NextRecord = False
Me.PrintSection = False
i = i + 1
End If
*************************
以上のように入力します。

これで設定は完了です。
印刷プレビューで画面を開くと、最初にインプットボックスが開き、開始位置を入力するように促されますので、開始したい数値入力して、「OK」を押してください。

正しく設定されていれば、指定した場所から表示されていると思います。
今回はインプットボックスから入力しましたが、フォームに項目を作成し、前もって設定しておくことも可能なので、状況に応じて利用してみてください。