2014年6月22日日曜日

OpenOffice.org Basicからデータベースにアクセスする


 こちらのサイトを参考にしてサンプルコードをコピペして名称を変更して実行してみた。
http://itref.fc2web.com/openoffice/basic/base.html

Dim DatabaseContext As Object
Dim DataSource As Object
Dim Connection As Object
Dim Statement As Object
Dim ResultSet As Object

DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("DataBaseFile")
Connection = DataSource.getConnection("", "")

Statement = Connection.createStatement()
ResultSet = Statement.executeQuery("select * from Table")

If IsNull(ResultSet) Then
  MsgBox "検索されたレコード件数が0件"
Else
  While ResultSet.next
    sValue1 = ResultSet.getString(1)
    sValue2 = ResultSet.getLong(2)
  Wend
End If

Statement.Close()
Connection.Close()
Connection.Dispose()


 案の定エラーが発生。


 エラーメッセージはステートメントにあるテーブルが見つからないとのこと。
 テーブルが見つからないということは登録してあるデータベースへのアクセスはできているようだ。
 なら登録してあるデータベースを Base を起動して確認してみると該当のテーブルは作成済みである。
 んー。
 もしやと思いテーブル名称 Table を TestTable へ変更した。もちろん Basic 側も変更した。
 そして実行すると先ほどのエラーメッセージではなくて違うエラーメッセージが表示された。

 今度のエラーはテーブルから取得したデータは文字列だけどステートメントは整数になっているから data type が違うって言ってる。
 なので sValue2 = ResultSet.getString(2) にしてあげれば解決。

 あっけないくらいに Basic からデータベースへアクセスできるようになった。
 OpenOffice のオプションからデータベースの登録作業は必要ではあるがドライバのインストールが不要なのは良いことだ。

 次はテーブルから取得したデータを指定したセルへ入れたり次のレコードを読んだり出来るようにしてみよう。

 そういえばデータベースファイルはローカルを指定しているがネットワークドライブ越しのデータベースファイルを指定することは可能なのだろうか。
 気になる気になる。

Windows8 のコマンドプロンプト (管理者)

 すべてのプログラムから探してみたけど見つからなかったので調べてみたらそんなところにあるのかと思い知らされる。

 「Windows」キーを押しながら「X」キー

 やりたかったことはタッチキーボードが何度も何度も復活してくるのでトドメを刺したかった。
 物理キーボードがあるんだからタッチキーボードなんぞはいらん。
 新しい機能をつけるのはいいがこういうところに気がまわらないのはマイクルソフトらしい。

C:\Windows\system32>net stop TabletInputService
Touch Keyboard and Handwriting Panel Service サービスは開始されていません。

NET HELPMSG 3521 と入力すると、より詳しい説明が得られます。


C:\Windows\system32>sc config TabletInputService start= disabled
[SC] ChangeServiceConfig SUCCESS

C:\Windows\system32>

 さてこれでトドメになったのだろうか。
 次の再起動後が楽しみである。

 まあメッセージを読む限り今の状況と変わっていないと思うが。

2014年6月21日土曜日

OpenOffice Base へコピペするときの日付に注意。

 Excel で作ったデータを Base へコピペしてみたんだけど次のウインドウが出てきてコピペができなかった。


 Excel 形式が問題なのかなと思って Calc 形式にして見たけれど結果は予想通り出来なかった。

 ぐぐってみると次のページが見つかった。
OpenOffice 3.4.1、普段よく使わないデータベースソフト、「Base」のメモ書き
http://ameblo.jp/i-yumekibun/entry-11521866111.html

 ここに書いてあった日付の書式を YYYY/MM/DD にしてみてコピペしたらできた。
 でもなんで日付の書式を変えたら出来るようになったんだろうか。

 さっきのページにはデータ入力をフォームを使って出来るようにしていたのでやってみよっと。

 コピペしたデータを確認したらテーブルに入っていたデータがおかしくなっていた。
 全部のデータが入っていないだけではなく同じレコードが重複して入っていたりして使えないテーブルでした。
 なのでざっくり削除した。

 そしたら Calc と Base が起動しなくなってしまった。
 アクセスランプは点滅するから読み込みはしているんだろうけど。
 再起動してダメだったら OpenOffice を再インストールか。

2014年6月16日月曜日

OpenOffice Calc のデータを Base にコピペする。

 テーブルを選択してコピペっていうのがわからなかったけれどゴチャゴチャとしているうちにできた。


 コピペする Calc のデータとテーブル名称とプライマリキーの設定を間違えた。
 ほとんど間違えたと言ってもいいだろう。
 でもコピペのやり方がわかったからよしとしよう。

Apache OpenOffice 4.0.1 - Calc のプルダウンメニューは

 どうにも見つからなかったので出来る方法で解決することにした。

 まずは「仕入先コード」のレイアウトを変更した。
 当初は vlookup で「仕入先」を検索してその左にある「仕入先コード」を取得する予定であったが vlookup の仕様で一番左の列を検索するためその左にある列を拾うことができない。
 なので拾いたい列を右へ移動させた。



 さて次は「部品リスト」で一工夫をする。
 見栄えよくしたかったが目的を達成できなければ意味がないので先へ進むのだ。
 選択させたい「仕入先選択」を欄外へ移動させてそこで入力させる。
 そして「仕入先コード」の列へ数式「=VLOOKUP(H2;仕入先コード.A1:D99;4;0)」を入れて完了。


 やはり見栄えは気になるができたので良しとする。

初夏の Skype クレジット増額プレゼント キャンペーン

http://blogs.skype.com/2014/05/22/ja-circleksunkus_2014_summer/

 こんなキャンペーンをやっていたのか。
 Skype クレジットを追加に行かなければ全く知らないままだったな。

 三千円分を購入したらプリペイド番号が三千円と五百円の二つが印字されていた。
 来年の五月まで有効だから五百円分は残しておこうっと。


2014年6月15日日曜日

Apache OpenOffice 4.0.1 - Calc のプルダウンメニュー

 Calc で部品リストの仕入先コードをプルダウンメニューから選択して数値を入力したい。





 上の画像のように単に仕入先コードの数値だけをリストにして選択することはできた。
 それだと仕入先と対応する仕入先コードを知っていることが前提になっているので選択する意味がない。
 プルダウンメニューから仕入先を選択して仕入先コードを入力したいのだがどうやってやるんだろうか。
 もう少し調べてみよう。

 なおテストデータなのでデータ自体はあちらこちらからのコピペである。

MELSECNET/HのリモートI/O局経由のMODBUS(R)通信について

http://fa-faq.mitsubishielectric.co.jp/faq/show/13661  別ネットワークの先にぶら下げるってどういうことだろう。