• 検索結果がありません。

本日の内容 Access とBase の違い Base と接続可能な DB 形式 脱 Base その 1 HSQLDB の見直し 脱 Base その 2 Writer フォームを使う 脱 Base その 3 Calc をレポートに使う Access で作成されたアプリの移行 Access のクエリー

N/A
N/A
Protected

Academic year: 2021

シェア "本日の内容 Access とBase の違い Base と接続可能な DB 形式 脱 Base その 1 HSQLDB の見直し 脱 Base その 2 Writer フォームを使う 脱 Base その 3 Calc をレポートに使う Access で作成されたアプリの移行 Access のクエリー"

Copied!
28
0
0

読み込み中.... (全文を見る)

全文

(1)

Access

Access

は、まず脱

は、まず脱

Base

Base

から

から

オフィスアプリの

オフィスアプリの

OpenOffice.org

OpenOffice.org

への移行

への移行

鎌滝雅久(

鎌滝雅久(

[email protected]

[email protected]

関西

関西

OpenOffice.org

OpenOffice.org

勉強会

勉強会

オープンソースカンファレンス

オープンソースカンファレンス

2008 Kansai

2008 Kansai

2008

2008

7

7

19

19

11:15

11:15

12:00

12:00

京都コンピュータ学院 教室

京都コンピュータ学院 教室

C

C

(2)

本日の内容

本日の内容

Access

Access

Base

Base

の違い

の違い

Base

Base

と接続可能な

と接続可能な

DB

DB

形式

形式

Base

Base

その

その

1 HSQLDB

1 HSQLDB

の見直し

の見直し

Base

Base

その

その

2 Writer

2 Writer

フォームを使う

フォームを使う

Base

Base

その

その

3 Calc

3 Calc

をレポートに使う

をレポートに使う

Access

Access

で作成されたアプリの移行

で作成されたアプリの移行

Access

Access

のクエリーを

のクエリーを

Base

Base

で実現

で実現

(3)

Access

Access

Base

Base

の違い

の違い

Access

Access

– DBDBとフロントエンドが一体となったアプリケーションとフロントエンドが一体となったアプリケーション – フロントエンドとはフロントエンドとは ● クエリー、フォーム、レポートなどデータの出し入れの機能クエリー、フォーム、レポートなどデータの出し入れの機能 – mdbmdbというひとつのファイル形式に収録というひとつのファイル形式に収録

Base

Base

フロントエンドのみのアプリケーションフロントエンドのみのアプリケーション – DBDBとの接続はデータソース経由で行われるとの接続はデータソース経由で行われる – odbodbというひとつのファイル形式に収録できるのはというひとつのファイル形式に収録できるのは HSQLDB HSQLDBのみのみ

(4)

Access

Access

Base

Base

の違い

の違い

DB(テーブル) ク エ リ ー フ ォ ー ム レ ポ ー ト フロントエンド ク エ リ ー フ ォ ー ム レ ポ ー ト フロントエンド データソース DB(テーブル)

(5)

Base

Base

と接続可能な

と接続可能な

DB

DB

形式

形式

JDBC/ODBC

JDBC/ODBC

規格のドライバで接続可能な

規格のドライバで接続可能な

DB

DB

– HSQLDBHSQLDB((OpenOffice.orgOpenOffice.orgにインストール済み)にインストール済み)

– MySQLMySQL、、PostgreSQLPostgreSQL、、FirebirdFirebirdなどのなどのOSSOSSののRDBMSRDBMS – OracleOracle、、SQL ServerSQL Server、、DB2DB2などの商用などの商用RDBMSRDBMS

– 表計算ドキュメント、d表計算ドキュメント、dBaseBaseなどの簡単ななどの簡単なDBDB

Windows

Windows

のみで利用可能な

のみで利用可能な

DB

DB

– OSOSに付属のドライバで接続に付属のドライバで接続 – AccessAccess

(6)

Base

Base

その

その

1 HSQLDB

1 HSQLDB

の見直し

の見直し

標準

標準

HSQLDB

HSQLDB

の欠点

の欠点

– BaseBase起動直後のテーブルの表示に時間がかかる起動直後のテーブルの表示に時間がかかる ● ZIPZIP圧縮、展開が行われる分だけ遅くなるのも原因圧縮、展開が行われる分だけ遅くなるのも原因 – 複数人での複数人でのDBDB共有に向かない共有に向かない ● クイック起動常駐時、最初のユーザーのロックファイルが残るクイック起動常駐時、最初のユーザーのロックファイルが残る ●

HSQLDB

HSQLDB

以外の選択肢

以外の選択肢

– MySQLMySQL、、PostgreSQLPostgreSQL、、FirebirdFirebirdなどなど

HSQLDB

HSQLDB

への接続方法を見直す

への接続方法を見直す

– サーバーベースで接続サーバーベースで接続

(7)

HSQLDB

HSQLDB

へサーバーベースで接続

へサーバーベースで接続

Base

Base

での設定方法

での設定方法

– HSQLDBHSQLDBのサーバー起動のサーバー起動 java -cp "$(inst)\program\classes\hsqldb.jar" java -cp "$(inst)\program\classes\hsqldb.jar"

org.hsqldb.Server -database \Database\db

org.hsqldb.Server -database \Database\db

– データソースのデータソースのURLURL jdbc:hsqldb:hsql://localhost/;default_schema=tr jdbc:hsqldb:hsql://localhost/;default_schema=tr ue ue – JDBCJDBCドライバクラスドライバクラス org.hsqldb.jdbcDriver org.hsqldb.jdbcDriver

– OpenOffice.orgOpenOffice.orgのバージョンによってはのバージョンによってはJavaJavaの設定での設定で クラスパス登録が必要

(8)

HSQLDB

HSQLDB

へファイルベースで接続

へファイルベースで接続

Base

Base

での設定方法

での設定方法

– データソースのデータソースのURLURL jdbc:hsqldb:c:\database\db;default_schema=tr jdbc:hsqldb:c:\database\db;default_schema=tr ue ue – JDBCJDBCドライバクラスドライバクラス org.hsqldb.jdbcDriver org.hsqldb.jdbcDriver – HSQLDBHSQLDBのファイル群のファイル群 ● db.propertiesdb.properties ● db.scriptdb.script ● db.logdb.log – クエリー、フォーム、レポートを収録したクエリー、フォーム、レポートを収録したodbodbファイルファイル

(9)

DB

DB

間でテーブルのコンバート

間でテーブルのコンバート

テーブルのコピー

テーブルのコピー

&

&

貼り付け

貼り付け

– BaseBaseではテーブルカテゴリでコピーではテーブルカテゴリでコピー&&貼り付けが可能貼り付けが可能 – 「テーブルのコピー」ダイアログで設定「テーブルのコピー」ダイアログで設定

(10)

Base

Base

その

その

2 Writer

2 Writer

フォームを使う

フォームを使う

Base

Base

フォームの欠点

フォームの欠点

– AccessAccessのような「標準のフォーム」機能がないのような「標準のフォーム」機能がない – BaseBaseでマクロを実行できるのはフォームなどでマクロを実行できるのはフォームなど – GUIGUIメニューの遷移が容易ではないため、オペレーターメニューの遷移が容易ではないため、オペレーター が利用しやすいメニューの構築が難しい が利用しやすいメニューの構築が難しい

Base

Base

のフォームではなく

のフォームではなく

Writer

Writer

フォームを使おう

フォームを使おう

– WriterWriterフォームを「標準のフォーム」にすればよいフォームを「標準のフォーム」にすればよい – WriterWriterのマクロ機能が利用できるのマクロ機能が利用できる

(11)

フォームを

フォームを

Writer

Writer

に移植する

に移植する

Base

Base

のフォームから

のフォームから

Writer

Writer

に移植する

に移植する

– フォームウィザードで作成フォームウィザードで作成

– [ファイル]-[コピーに名前を付けて保存][ファイル]-[コピーに名前を付けて保存]

– WriterWriterドキュメントとして保存ドキュメントとして保存

(12)

Writer

(13)

Base

Base

その

その

3 Calc

3 Calc

をレポートに使う

をレポートに使う

Base

Base

レポートの欠点

レポートの欠点

– データの加工が容易なデータの加工が容易なCalcCalcではないではないWriterWriter形式のド形式のド キュメント

キュメント

– 小計などの集計欄の設定が容易ではない小計などの集計欄の設定が容易ではない

– 作成されたレポートのカスタマイズが難しい作成されたレポートのカスタマイズが難しい

レポートには

レポートには

Calc

Calc

形式ドキュメントを使おう

形式ドキュメントを使おう

– BasicBasicででCalcCalcのテンプレートファイルに出力のテンプレートファイルに出力 – BasicBasicにクエリーを埋め込み可能にクエリーを埋め込み可能

(14)

Basic

Basic

による

による

Calc

Calc

レポート出力

レポート出力

Basic

Basic

の基本構文

の基本構文

● DBDBとの接続部分との接続部分 DatabaseContext=createUnoService("com.sun.star.sdb.DatabaseContext") DatabaseContext=createUnoService("com.sun.star.sdb.DatabaseContext") DataSource=DatabaseContext.getByName("business_sample") DataSource=DatabaseContext.getByName("business_sample") ● SQLSQLのセットのセット Connection = DataSource.GetConnection("","") Connection = DataSource.GetConnection("","") Statement = Connection.createStatement() Statement = Connection.createStatement()

ResultSet= Statement.executeQuery(“SELECT * FROM T_

ResultSet= Statement.executeQuery(“SELECT * FROM T_売上”売上”))

● CalcCalcファイルとシートの指定ファイルとシートの指定 sURL = ConvertToURL("C:\report.ods")

sURL = ConvertToURL("C:\report.ods")

oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) heet= oDoc.Sheets.getByName("

oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) heet= oDoc.Sheets.getByName("表表

1")

1")

● 出力出力

While ResultSet.next ' x

While ResultSet.next ' xががcolcol方向、方向、yyががrowrow方向の座標値方向の座標値

x = 0x = 0 n = 1

n = 1

While n <= COLUMNS ' COLUMNS

While n <= COLUMNS ' COLUMNSははSQLSQLでセットされたフィールド数でセットされたフィールド数

Cell =Sheet.getCellByPosition(x,y)Cell =Sheet.getCellByPosition(x,y) Cell.setString(ResultSet.getString(n)) Cell.setString(ResultSet.getString(n)) n = n +1n = n +1 x = x +1x = x +1 Wend Wend

(15)

データパイロットを利用したレポート

データパイロットを利用したレポート

Access

Access

のクロス集計クエリー

のクロス集計クエリー

– ウィザード形式で設定が可能ウィザード形式で設定が可能

Calc

Calc

のデータパイロット機能を利用する

のデータパイロット機能を利用する

– [データ]-[データパイロット]-[呼び出す][データ]-[データパイロット]-[呼び出す]

(16)

Access

Access

で作成されたアプリの移行

で作成されたアプリの移行

Access

Access

VBA

VBA

を用いたオフィスアプリケーション

を用いたオフィスアプリケーション

– 現行のアプリケーションの仕様を再検討現行のアプリケーションの仕様を再検討

– グループウェアなど次世代型のオフィスアプリも選択肢グループウェアなど次世代型のオフィスアプリも選択肢

OpenOffice.org Basic

OpenOffice.org Basic

への移行

への移行

– StarSuiteStarSuiteなどのコンバートツールはあてにしないなどのコンバートツールはあてにしない ● マクロ移行ウィザードマクロ移行ウィザード http://docs.sun.com/app/docs/doc/819-1360? http://docs.sun.com/app/docs/doc/819-1360? l=ja&q=starsuite+8 l=ja&q=starsuite+8 – コンバートではなく書き換えコンバートではなく書き換え

(17)

コンボボックスによる絞込み

コンボボックスによる絞込み

フォームにコンボボックスを追加

フォームにコンボボックスを追加

– コンボボックスウィザードで設定が行えるコンボボックスウィザードで設定が行える – イベント「テキストを変更した時」に以下のマクロを設定イベント「テキストを変更した時」に以下のマクロを設定 Sub NewTitleSelected(oEvent) Sub NewTitleSelected(oEvent) Dim oForm Dim oForm oForm = oEvent.Source.getModel().getParent() oForm = oEvent.Source.getModel().getParent() oForm.Filter = """

oForm.Filter = """店名店名""='" & oEvent.Source.getText() & "'"""='" & oEvent.Source.getText() & "'" oForm.ApplyFilter = True oForm.ApplyFilter = True oForm.reload() oForm.reload() End Sub End Sub

(18)

入力フォームによる検索

入力フォームによる検索

Access

Access

[forms]![

[forms]![

フォーム名

フォーム名

]![

]![

コントロール名

コントロール名

]

]

– 非連結コントロールを使った検索フォーム非連結コントロールを使った検索フォーム

– クエリーに埋め込み可能クエリーに埋め込み可能

フォームにテキストボックス、検索ボタンを設置

フォームにテキストボックス、検索ボタンを設置

– テキストボックスから値を取得テキストボックスから値を取得

(19)

Access

Access

のクエリーを

のクエリーを

Base

Base

で実現

で実現

Access

Access

のクエリーで

のクエリーで

Base

Base

のメニューにないもの

のメニューにないもの

– 更新クエリー更新クエリー – 削除クエリー削除クエリー ● 上記上記22つはつはSQLSQLコマンドを直接実行するコマンドを直接実行する ● [ツール]-[[ツール]-[SQLSQL]] – ユニオンクエリーユニオンクエリー – 追加クエリー追加クエリー – 重複クエリー重複クエリー – 不一致クエリー不一致クエリー ● 上記上記44つはクエリーデザインで実現可能つはクエリーデザインで実現可能

(20)

更新クエリー

更新クエリー

クエリーデザインで雛形を作成する

クエリーデザインで雛形を作成する

SQL

SQL

コマンドに変換

コマンドに変換

– 「デザインビューのオン「デザインビューのオン//オフ 切り換え」ボタンオフ 切り換え」ボタン SELECT "

SELECT "カード送付カード送付", 0 FROM "T_", 0 FROM "T_顧客顧客" WHERE "" WHERE "カード送付カード送付" = 1" = 1

– 更新クエリーに書き換える更新クエリーに書き換える

UPDATE "T_

UPDATE "T_顧客顧客" SET "" SET "カード送付カード送付" = 0 WHERE "" = 0 WHERE "カード送付カード送付" = 1" = 1

(21)

削除クエリー

削除クエリー

クエリーデザインで雛形を作成する

クエリーデザインで雛形を作成する

SQL

SQL

コマンドに変換

コマンドに変換

– 「デザインビューのオン「デザインビューのオン//オフ 切り換え」ボタンオフ 切り換え」ボタン SELECT "

SELECT "カード送付カード送付" FROM "T_" FROM "T_顧客顧客" WHERE "" WHERE "カード送付カード送付" = 1" = 1

– 削除クエリーに書き換える削除クエリーに書き換える

DELETE FROM "T_

DELETE FROM "T_顧客顧客" WHERE "" WHERE "カード送付カード送付" = 1" = 1

(22)

ユニオンクエリー

ユニオンクエリー

クエリーデザインで雛形を作成する

クエリーデザインで雛形を作成する

2

2

つのクエリーを

つのクエリーを

UNION

UNION

演算子で結合する

演算子で結合する

SELECT "

SELECT "学年学年", "", "組組", "", "性別性別", AVG( "", AVG( "国語国語" ) AS "" ) AS "国語国語", AVG( "", AVG( "算数算数" ) AS "" ) AS "算数算数", AVG( "", AVG( "理科理科" ) AS "" ) AS "理科理科", AVG( "", AVG( "社会社会" ) AS "" ) AS "社会社会" " FROM "

FROM "成績表成績表" GROUP BY "" GROUP BY "学年学年", "", "組組", "", "性別性別"" UNION

UNION

SELECT NULL AS "

SELECT NULL AS "学年学年", 99 AS "", 99 AS "組組", '", '学年平均学年平均' AS "' AS "性別性別", AVG( "", AVG( "国語国語" ) AS "" ) AS "国語国語", AVG( "", AVG( "算数算数" ) AS "" ) AS "算数算数", AVG( "", AVG( "理科理科" ) AS " ) AS

"

"理科理科", AVG( "", AVG( "社会社会" ) AS "" ) AS "社会社会" FROM "" FROM "成績表成績表" GROUP BY "" GROUP BY "学年学年" ORDER BY "" ORDER BY "組組", "", "性別性別""

SQL

SQL

コマンドを直接実行」ボタンをオンに

コマンドを直接実行」ボタンをオンに

フィールドの数をそろえる必要あり

フィールドの数をそろえる必要あり

(23)

追加クエリー

追加クエリー

ユニオンクエリーと「テーブルのコピー」機能を利用

ユニオンクエリーと「テーブルのコピー」機能を利用

する

する

– 追加したいデータをクエリーで抽出追加したいデータをクエリーで抽出 – 追加先テーブルと結合ユニオンクエリーを作成追加先テーブルと結合ユニオンクエリーを作成 – 同クエリーをコピーしテーブルカテゴリで貼り付け同クエリーをコピーしテーブルカテゴリで貼り付け – 「テーブルのコピー」ダイアログでテーブル作成「テーブルのコピー」ダイアログでテーブル作成 – テーブルカテゴリに新規テーブルとして追加されるテーブルカテゴリに新規テーブルとして追加される

(24)

重複クエリー

重複クエリー

考え方

考え方

– 重複チェックをするフィールドで重複チェックをするフィールドで22つ以上のデータが重複つ以上のデータが重複 するレコードを抽出するクエリーを作成する するレコードを抽出するクエリーを作成する これを「重複条件」という名前で保存する これを「重複条件」という名前で保存する – 上記クエリーの結果をもとに、上記クエリーの結果をもとに、ININ演算子を使って重複条演算子を使って重複条 件が真となるレコードを抽出する 件が真となるレコードを抽出する 重複をチェックするフィールドの条件欄は 重複をチェックするフィールドの条件欄は IN ( SELECT * FROM [ IN ( SELECT * FROM [重複条件重複条件] ) ] )

(25)

不一致クエリー

不一致クエリー

考え方

考え方

– 不一致とするキーワードを含むレコードを抽出するクエ不一致とするキーワードを含むレコードを抽出するクエ リーを作成する リーを作成する これを「不一致条件」という名前で保存する これを「不一致条件」という名前で保存する – 上記クエリーの結果をもとに、上記クエリーの結果をもとに、NOT INNOT IN演算子を使って演算子を使って 不一致条件が真となるレコードを抽出する 不一致条件が真となるレコードを抽出する 不一致をチェックするフィールドの条件欄は 不一致をチェックするフィールドの条件欄は

NOT IN ( SELECT [ID] FROM [

(26)

まとめ

まとめ

Access

Access

でできることは

でできることは

Base

Base

にもできる

にもできる

– 大きな期待は禁物大きな期待は禁物

– 改善要望が実現するのは改善要望が実現するのは3.13.1以降以降

オフィスアプリの開発には

オフィスアプリの開発には

Basic

Basic

は不可欠

は不可欠

– AccessAccessでもでもVBAVBAは不可欠は不可欠

Base

Base

での開発は、

での開発は、

Visual Studio

Visual Studio

DB

DB

アプリを作

アプリを作

成する気持ちで取り組もう

成する気持ちで取り組もう

Basic

Basic

などの開発環境に関する情報

などの開発環境に関する情報

– 本資料の「参考」をご覧ください本資料の「参考」をご覧ください

本日はありがとうございました

本日はありがとうございました

(27)

参考

参考

OpenOffice.org Q&A

OpenOffice.org Q&A

● http://oooug.jp/faq/http://oooug.jp/faq/

Base

Base、、BasicBasicに関する情報も数多く登録されていますに関する情報も数多く登録されています

StarSuite8

StarSuite8

日本語ドキュメント

日本語ドキュメント

● http://docs.sun.com/app/docs/coll/1268.1?http://docs.sun.com/app/docs/coll/1268.1? l=ja&q=starsuite+8 l=ja&q=starsuite+8 ●

グラス片手にフォーム設計

グラス片手にフォーム設計

● http://openoffice- http://openoffice-docj.sourceforge.jp/wiki/images/HowToForm2.pdf docj.sourceforge.jp/wiki/images/HowToForm2.pdf ●

OpenOffice.org

OpenOffice.org

の開発言語に関するサイト

の開発言語に関するサイト

(28)

参考 その

参考 その

2

2

短期連載「

短期連載「

OpenOffice.org

OpenOffice.org

操縦術」

操縦術」

(

(

日経

日経

Linux)

Linux)

● http://bd.tank.jp/nikkei/http://bd.tank.jp/nikkei/

Andrew Pitonyak

Andrew Pitonyak

氏の

氏の

Basic

Basic

解説書

解説書

● http://www.pitonyak.org/http://www.pitonyak.org/

● データベースとデータベースとBasicBasicについて書かれたについて書かれたAndrewBaseAndrewBase

● http://www.pitonyak.org/database/AndrewBase.pdfhttp://www.pitonyak.org/database/AndrewBase.pdf

本資料の公開(予定)

本資料の公開(予定)

参照

関連したドキュメント

 第一の方法は、不安の原因を特定した上で、それを制御しようとするもので

大正デモクラシーの洗礼をうけた青年たち の,1920年代状況への対応を示して」おり,「そ

(*) OPJTAG 自動設定機能:デバイスのデバッグ時の接続インタフェース種別は、オプションバイトレジスタの

本手順書は複数拠点をアグレッシブモードの IPsec-VPN を用いて FortiGate を VPN

適合 ・ 不適合 適 合:設置する 不適合:設置しない. 措置の方法:接続箱

   遠くに住んでいる、家に入られることに抵抗感があるなどの 療養中の子どもへの直接支援の難しさを、 IT という手段を使えば

セキュリティパッチ未適用の端末に対し猶予期間を宣告し、超過した際にはネットワークへの接続を自動で

その 2-1(方法A) 原則の方法 A