ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

今、Vistaの深夜販売の時より大きな騒ぎになっているところが、秋葉原にあるらしい

2007-01-31 22:34:39 | Weblog

ここのスラッシュドットニュース
秋葉原のPC-Successに異変、31日15時に突如閉店
http://slashdot.jp/articles/07/01/31/1113235.shtml

によると(以下斜体は上記スラッシュドットニュースより引用)


Impressによると,PC-Successに異変が起きているらしい。どうやらPC-Successを運営している株式会社サクセスに連絡が取れず,本社はシャッターが降りているということ。 PC-Successといえば価格が安いことで有名だが,競合が増えたことで経営が悪化したのだろうか?ネット通販に力を入れていたので,商品代金を振り込んだのに商品が届かないということもありえるかもしれない。


だそうな。。

ちなみに、ImpressによるとっていうImpressの記事はこちら
PC-Successのサクセスが破産発表を予告、一時本社は騒然
http://www.watch.impress.co.jp/akiba/hotline/20070203/etc_success.html

ここに詳しい話がある。

なお、スラッシュドットニュースによると

本社前には取引関係者が集まり「Vistaの深夜販売の時より関係者が多い…」という騒ぎになっているとのことだ。

すげー、Vistaの深夜販売の時よりすごい騒ぎになっているのか(@_@)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

利用者の出力から業務を分析していく手順(その3:業務シートのシステム内の業務の記入)

2007-01-31 17:33:41 | 開発ネタ

 利用者の出力から分析して、DOAでも、オブジェクト指向でも、どっちにでも展開して、プログラムまで落とし込める業務をまとめたシートと、入出力についてまとめたシートを作る方法について書く、シリーズ(になってしまった)利用者の出力から業務を分析していく手順の3回目です。

まず、手順は以下のとおり
(1)利用者を体系づけて分けます
(2)今回対象の利用者について、システム利用(入出力)場面を考え、業務シート作成
(3)利用者が利用する一場面をとって、入出力を、まず出力から確認します
  (3-あ)まず、外部に対して出力になっているものを取り上げます。
  (3-い)その外部出力の具体的内容を考え、入出力のシートに書きます。
  (3-う)その外部出力を出すために必要な情報が、入力されているかどうか、確認
  (3-えお)(3-う)までで、入出力のシートはできているので、それに対応する
     業務シートがなかったら追加、完成させます。
(4)利用者からの入力を受け取ってから、利用者への出力まで、
   システム内の業務を追加します
(5)利用者への出力ごとに、シナリオをつくります
(6)利用者の範囲を広げていきます。

(ちなみに、そこから先、DOAやオブジェクト指向に持っていくにはこちら)

で、前回は(3)について書いたので、今回は(4)、利用者からの入力を受け取ってから、利用者への出力まで、システム内の業務を追加するところ(モデル部分)について書きます。



■まず、システムトップを書き加える

 前回までで、各場面ごと(場面内に画面が1つしかなければ、兼用になるが、今回、これは場面用として取り扱います)の業務シートはできました。
 そこで、このシステムのトップの業務シートを作ります。

親アクティビティはありません(自分がトップですから)
アクティビティ名は適当に付けてください。

入出力は、書くとしたら、子アクティビティの入出力全部なのですが、それをやっているとたいへんなので、エンティティ名.*で書きます。
 このエンティティ名が、システムに対する、外部入出力になります(=DFDで、外から入ってくる、外に出て行くものです)

子アクティビティは、たとえば、メニュー画面を立ち上げて起動するような場合は、
(矢印は子アクティビティを示す)
1.メニュー画面→メニュー画面(入出力)
2.以降は、ボタンが押されたとき、起動する子アクティビティを書くことになります。
 そして、メニュー画面を入出力シートに書くことになります。

 ただ、バッチ起動などなど、いろいろあると思うので、それらを書くことになります。

 でも、システムが小さい場合は、今まで書いた場面を、このトップに全部つるさげて、今まで書いた場面のシート(空欄になっていると思います)に、このトップのアクティビティ名を書いてOKかもしれませんが、大きくなると、それはそれは、たいへんなことになるので、中間層のアクティビティを生成します。




■中間のアクティビティとデータ加工を追加する

 ということで、トップから、各場面にいきなり行くと、たいへんなことになっちゃう場合は、適当にいくつかの場面をまとめて、1つの場面とし、それについて、中間層のアクティビティとします。これは、適当にとっていいです。

 実際には、ヒアリングで一連の内容を聞くとき、いくつかの画面をつかって、1つの仕事をするっていう感じになると思います。なので、この一連の仕事で1シートをつくり、その一連の仕事の中で、利用する画面のシートを子アクティビティにして書くという感じになると思います。

 なお、このシートを作ると、入出力以外で、別のタイミングで、データ加工(システム内の業務)が必要になるということがあります。たとえば、給与入力してもらった後、支払いまでの間、ある日、給与計算をしないといけないなどというケースです。

 この場合、子アクティビティとして、そのデータ加工をするシートを作成し、記入します
 そして、その子アクティビティも、コレにつなげます。

 また、入出力と同じ場面で行う場合には、場面のシートがあると思うので、その場面のシートの子アクティビティとして、このデータ加工するシートを作成・記入して、場面につなげます。
 
 で、この一連の仕事がまとまって、さらに大きな仕事になる場合もあるし、直接トップにつながる場合もあるという感じじゃないかと思います。

 



■出力から考えて、足りない部分のアクティビティがないか、確認する
 で、現在、出力の画面と、入力の画面ができましたけど、入力画面がデータベース書き出しすれば、出力できるって言う場合は、OKなんですけど、たぶん、たいていは、出力する前になにか、処理加工をしないといけないと思います。

 それについては、上記の「中間のアクティビティを生成する」の作業で、「データ加工」(システム内の業務)として、あがっているはずですけど、ここで、ちゃんと、入力データが入っていれば、処理加工して、出力まで来るか、その流れを確認します。
 そして、その流れをメモして置きます(メモすると、シナリオ作成に楽)

 足りなかったら、付け足します。




 これで、一連のシートは完成したことになります。

 あとは、シナリオについてです。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

OpenOffice Calc(表計算)で、シートを自動的にOpenして、値編集、印刷

2007-01-31 14:52:33 | OpenOffice

 前回のOpenOffice Base(データベース)のレポートはいまいちでした(>_<!)
 仕方ない。。。表計算ソフトにデータをいれて、それを出力することを考えよう!!

 ってことで、OpenOffice Calc(表計算)で、シートを自動的にひらき、値をいれて(数値と文字)、印刷するっていうところまでやってみました。




■仕様

 現時点ですでに、C:¥temp¥テスト.ods(¥は本当は半角です)に、OpenOffice Calc(表計算)で作ったシートがあります。そして、そのシートの1つに、”テスト”というシートがあります。

このとき、このテストというシートに対して、
 セルB2 に  "値を設定してみました" という文字列
 セルB3 に  12345 という数値
を設定して

印刷します




■ソース

こんなかんじです。
sub Main
	dim document   as object
	dim dispatcher as object
	dim args1(1) as new com.sun.star.beans.PropertyValue
	Dim oDoc as object

	'**** プロパティを入れるところ
         Dim pProp(1) As New com.sun.star.beans.PropertyValue 
 
 	'**** スプレッドシートを開く
         sURL = ConvertToURL("C:¥temp¥テスト.ods") 
         oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) 

 	'**** 値を設定する
	Sheet= oDoc.Sheets.getByName("テスト") 	'シートを選ぶ
	CellRange=Sheet.getCellRangeByName("B2") 	'  B2に値設定
	CellRange.setString("値を設定してみました")		
	CellRange=Sheet.getCellRangeByName("B3") 	'  B3に数値設定
	CellRange.Value = 12345

	'**** 印刷
         document = oDoc.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

	args1(0).Name = "Copies"
	args1(0).Value = 1
	args1(1).Name = "Collate"
	args1(1).Value = false

	dispatcher.executeDispatch(document, ".uno:Print", "", 0, args1())
end sub

(上記¥は、本当は半角)

というところで、今日のところはおしまい。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

“Windows Vista対応度”を診断できるツールの日本語正式版を、マイクロソフトが公開

2007-01-31 11:35:05 | Weblog

ここのニュース
MS、PCの“Windows Vista対応度”を診断できるツールの日本語正式版を公開
http://headlines.yahoo.co.jp/hl?a=20070130-00000016-imp-sci

によると(以下斜体は上記ニュースより引用)


 マイクロソフト(株)は30日、Windows XPを搭載したパソコンの“Windows Vista対応度”を診断できるソフト「Windows Vista Upgrade Advisor」の日本語正式版を無償公開した。現在、同社のWindows Vista製品サイトからダウンロードできる。

 「Windows Vista Upgrade Advisor」は、現在使っているWindows XP搭載パソコンにWindows Vistaをインストール可能かどうか診断したり、インストール後に発生する問題の解決方法をアドバイスしてくれるソフト。パソコンの各種搭載デバイスやインストールされているプログラムの情報をスキャンし、Windows Vistaの動作条件を満たしているかどうか、また周辺機器や主要なプログラムが動作するかどうかを診断する。


で、じゃあ、その診断は、どうやってやるの?というと、どうも、
まず、以下のサイト
Windows Vista Upgrade Advisor
http://www.microsoft.com/japan/windows/products/windowsvista/buyorupgrade/upgradeadvisor.mspx

にアクセスして、「Windows Vista Upgrade Advisor のダウンロード」(2段に書かれている説明の右の段の上)から、なんか、ダウンロードして、

そのソフトを起動するみたい・・・

だけど、めんどっちいのでやめた。。

だって、アップデートする見込みないもん(^^)

でも、会社などで導入検討している人にとっては、
今のパソコンで大丈夫か(メモリ、もっとつまないとだめ?)
なんかを調べるのには、いいかもお。。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

電子申告で所得税控除。。。って、こんだけなの。。。

2007-01-30 22:36:53 | Weblog

今、KINZAIのファイナンシャルプラン(FPの人がもらえる本)の2007年2月号みてたんだけど、そこの16ページに、所得税を電子申告した場合の税額控除について書いてあるんだけど(以下斜体は上記記事からの引用)


電子証明書を取得した個人が、2007年分または2008年分の所得に係る確定申告につき電子申告を行った場合で、いずれか1年分に限り、その年の所得税額から5000円(その年分の所得税額が限度)が控除されます。


あ、2007年分からですか。。。いま、2006年分ですよね。。
多分、よくわかってない。。(^^;)

それより、5000円なんですかあ。。。たった、それっぽっち。。。
うーん、それにくらべ、電子証明書とか、めんどくさそうだ。。(-_-)
どーしよーかなー。。

 あ、その後によると、電子申告の場合は、源泉徴収票とか、貼っていたのは、3年間手元に保管しておけば、数字書くだけでOKになるみたいです。
 そーだよねー、じゃなきゃ不便だもんねえ。。

 これも2007年度からなのかしら。。。

 どーしよーかなあ。。電子申告。。。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

利用者の出力から業務を分析していく手順(その2:業務シートと入出力シート記入)

2007-01-30 18:17:35 | 開発ネタ

 利用者の出力から分析して、DOAでも、オブジェクト指向でも、どっちにでも展開して、プログラムまで落とし込める業務をまとめたシートと、入出力についてまとめたシートを作る方法について書く、シリーズ(になってしまった)利用者の出力から業務を分析していく手順の2回目です。

まず、手順は以下のとおり
(1)利用者を体系づけて分けます
(2)今回対象の利用者について、システム利用(入出力)場面を考え、業務シート作成
(3)利用者が利用する一場面をとって、入出力を、まず出力から確認します
  (3-あ)まず、外部に対して出力になっているものを取り上げます。
  (3-い)その外部出力の具体的内容を考え、入出力のシートに書きます。
  (3-う)その外部出力を出すために必要な情報が、入力されているかどうか、確認
  (3-えお)(3-う)までで、入出力のシートはできているので、それに対応する
     業務シートがなかったら追加、完成させます。
(4)利用者からの入力を受け取ってから、利用者への出力まで、
   システム内の業務を追加します
(5)利用者への出力ごとに、シナリオをつくります
(6)利用者の範囲を広げていきます。

(ちなみに、そこから先、DOAやオブジェクト指向に持っていくにはこちら

で、前回は(1)、(2)について書いたので、今回は(3)、主に、シートの書き方についてです。




■(あ)まず、外部に対して出力になっているものを取り上げます

 前回の(2)で、入出力の場面と内容(画面とか帳票)とかについて考えたので、出力についてあがっていると思います。というか、要求仕様にかかわることなので、出力は、確定しましょう(ここが狂うと、あとが、どんどん狂います)。

 で、具体的に、どういう内容の帳票にするかなどを、決めます。




■(い)その外部出力の具体的内容を考え、入出力のシートに書きます。
 で、上記で決まった出力内容(画面、帳票)について、入出力をまとめたシートに記入します。

 コレは一般的な、画面名を書いて、項目名を書くという感じなので、まあ、問題なくかけると思います。なので、書き方は省略します。



■(う)その外部出力を出すために必要な情報が、入力されているかどうか、確認

 次に、入力データについて考えます。
 出力情報は、どこからか、入力されないといけません。
 前回の給与の勤務表入力の例で言うと、勤務表は、従業員が、月と日に対して、勤務時間を入れていくものです。ということは、従業員データや、月日データ(これは、2月は何日まであるか?というレベルで良いか、会社の休みまで考えて出すかは、画面の仕様による)が、どっからか、入力されているはずです。入力されているかどうか確認し、なければ入力を追加します。

 そして、追加された入力(これは、ファイルやDBの場合もあるし、画面の場合もある)についても、出力と同様に、入出力をまとめたシートに記入します。



■(えお)入出力のシートに対応する業務シートがなかったら追加します

 (2)の時点で、場面と入出力のシートは作成していますが、ここで、再度チェックし、入出力と、業務シートが対応してあるかどうかを確認します。

 まず、入出力のシート1つに対して、業務シートは1つあるようにします。
(バウンダリが必要なので、入出力に対しては1業務=クラスは必要と考えます)

 そして、場面のシートも用意するわけですが、前回の例のように、場面に画面が1つしかない場合(勤務表入力しかない)場合は、画面のシートを場面のシートとしてしまい、両方で1枚を兼用する形でもいいです。

 しかし、1場面で複数の入出力がある場合(勤務表入力とは、勤務表画面を入力したあとで、勤務表を帳票出力し、その紙を経理担当に渡すなど)、場面で1個、画面や帳票でそれぞれ1個作ります。

以下、その業務シートの書き方です。ここで、場面用と画面用に分かれます。

●画面に対応する業務シート
 画面の場合は、業務をまとめたシートは、以下の感じになります。

親アクティビティ名:
 場面と画面が一緒(1画面しかない場面)の場合空欄。
 そうでない場合は、場面名

担当者:
 その入力をする人、ないしはその出力を受け取る人

アクティビティ名:
 画面名そのもの

前のアクティビティ、あとのアクティビティ:
 画面入力、帳票出力などで、その前(または後)、かならずこの画面などの決まりが
 ある場合には、その画面名を入れるが、いつ起動してもOKなら空欄

入出力
入力または、出力(両方もあり)に 画面名.*がくる。
そのほか、画面出力に必要なデータなどがあれば、書いておく
(この辺、この段階では適当でもOK。(4)や(5)で直します)

内容:
(→は、子アクティビティに各言葉)
1.画面表示します→画面名(入出力)
2以降
  あとは、ボタンに応じて、書きます




上記の勤務表入力の例だとこんな感じ

親アクティビティ名:
担当者:社員(時給の人)
アクティビティ名:勤務表入力
前のアクティビティ:
後のアクティビティ:
入出力
入力:勤務表入力.*,社員データ.社員番号,社員データ.社員名,休日データ.*
出力:勤務表入力.*
(めんどくさかったら、この段階は全部.*でもOK(4)や(5)で直します)

内容:
1.画面表示します→勤務表入力(入出力)
2.実行ボタンを押すと勤務データ入力が起動→勤務データ入力




●場面に対応する業務シート
 場面の場合は、業務をまとめたシートは、以下の感じになります。

親アクティビティ名:
 この時点では空欄(あとの4,5で入れます)

担当者:
 その入力をする人、ないしはその出力を受け取る人

アクティビティ名:
 場面名

前のアクティビティ、あとのアクティビティ:
 この時点では空欄(あとの4,5で入れます)

入出力
子アクティビティに書かれる入出力を足してまとめます。
(この辺、この段階では適当でもOK。(4)や(5)で直します)

内容:
(→は、子アクティビティに各言葉)
それぞれの画面や帳票の出力するときについて
  書きます。
   →画面名、帳票名のアクティビティ




と、こんな感じです。次回は(4)以降になります。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

業務をまとめたシート、入出力をまとめたシートからDOAやオブジェクト指向の図を作るまとめ

2007-01-30 16:37:18 | 開発ネタ

 このまとめがなかったので、一応書いておきます。




■ヒアリングした内容をまとめるシートについて
   ・業務をまとめたシート
   ・入出力をまとめたシート

・これらをシートをまとめる手順については、こちら



■DOAの場合の図について
   ・DFD
   ・ER図




■オブジェクト指向の図について
   ・アクティビティ図
   ・ユースケース図
   ・ユースケースシナリオ
   ・クラス図(その前にフレームワークを決める話)
      ・その1
      ・その2
      ・その3



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

OpenOffice Base(データベース)でマクロから印刷

2007-01-30 14:19:42 | OpenOffice

 OpenOffice Baseを使った話で、今日は印刷。
 ただこれは、マクロを記録して出てきたやり方なので、いい方法かどうかはわかりません。
 とにかく、こうやればできるという話。



■仕様

 C:¥temp¥テスト用1.odbというOpenOffice Baseのデータベースファイルがあって、その中にある「レポート1」を開き、そのページを印刷します(なお、¥は、本当は半角です)。

 つまり、昨日、開くところまでやったので、そのあと、印刷します。




■ソース

 マクロは、以下のとおりです
Sub Main

	'**** 書き出し用
   Dim oRep As object
   Dim document   As object
   Dim dispatcher As object
   Dim args1(1) As new com.sun.star.beans.PropertyValue
 

	'**** プロパティを入れるところ
   Dim pProp(1) As New com.sun.star.beans.PropertyValue 
 	'**** データベースを開く
   sURL = ConvertToURL("C:¥temp¥テスト用1.odb") 
   oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) 


 	'**** レポートとコネクションの接続
   oForms = oDoc.getReportDocuments() 
   oAConnection = oDoc.DataSource.getConnection("","") 

 	'**** プロパティを設定 Nameが属性 Valueが値
   pProp(0).Name = "ActiveConnection" 'コネクション
   pProp(0).Value = oAConnection 
   pProp(1).Name = "OpenMode" 		' デザインで開く?入力フォーム?
   pProp(1).Value = "open"		' 入力フォーム(openDesignだとデザイン)
    
	'**** フォームを開く
   oRep = oForms.loadComponentFromURL("レポート1","_default",0,pProp()) 


	'**** フォームの印刷
    document = oRep.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    args1(0).Name = "Copies"
    args1(0).Value = 1
    args1(1).Name = "Collate"
    args1(1).Value = false

    dispatcher.executeDispatch(document, ".uno:Print", "", 0, args1())

End Sub

(上記¥ < > は、本当は半角)
上記で赤で書かれているところが、ファイル名、フォーム名など、固有のものになります
(使うときは、実際のみなさんの開きたいものが、入ります)
青字のところが、今回の印刷部分です(ほかは前回と同じ)。

なお、フォームの場合には、上記の
oDoc.getReportDocuments()

oDoc.getFormDocuments()
に変わります(印刷部分は変わりません)




ということで、印刷まで、きました


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

"GPSカーナビにウイルスが混入"だそうな

2007-01-30 11:02:16 | Weblog

ただし、オランダの話らしい

ここのニュース
GPSカーナビにウイルスが混入
http://www.itmedia.co.jp/news/articles/0701/29/news027.html

によると(以下斜体は上記ニュースより引用)、


 ウイルス入りの衛星ナビシステムが出荷されたとしてセキュリティ企業が警告を発した。

 蘭TomTomのGPSカーナビ「TomTom GO 910」の一部のHDDに「Perlovga.a」「Small.qp」の2種類のWindowsマルウェアが混入したようだとこれら企業は報告している。TomTom自身はアラートを出していない。


 ただし。。


 このデバイスはLinuxベースで、デバイス自体はこれらマルウェアに感染していない。ただし、このデバイスをUSBポート経由でWindows PCに接続すると、PCが不正なコードに感染する恐れがあるという。


ほー、デバイス自体のOSはLinuxだから、感染しないのね(^^;)
そーいうウィルスもあるのかあ。。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

任天堂「Wii」でニュース閲覧、将来的には映像も、って。。。

2007-01-30 01:35:48 | Weblog

ここのニュース
任天堂「Wii」でニュース閲覧も=AP通信、日テレ、毎日が提供☆再送
http://headlines.yahoo.co.jp/hl?a=20070129-00000171-jij-int

によると(以下斜体は上記ニュースより引用)

*【シリコンバレー時事】任天堂 <7974> は27日、新型家庭用ゲーム機「Wii(ウィー)」でニュースを無料で閲覧できるサービスを開始した。米AP通信が英語、フランス語、スペイン語、ドイツ語などの記事を提供し、日本語ニュースは日本テレビ <9404> 、毎日新聞が配信する。


えー(@_@!)
無料でニュースはいしんしちゃうんですか。。
それも


当面は記事と写真のみだが、将来的には映像などの提供も計画している。任天堂は、ニュース画面に広告を掲載する考えはないという。


えー(@_@!)
広告入れないんですか!
。。。そこまでやられてしまうと、NHKの立場は(^^;)
将来、著作権切れの映画とか流したら、
まさに、テレビですよねえ。。。

放送と通信の融合を行ったのは、
ライブドアではなく、任天堂Wiiってわけね(^^;)



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Wiiとソニーをビル・ゲイツが一刀両断

2007-01-29 19:14:50 | Weblog

ここのアメーバニュース
ビル・ゲイツがWiiとソニーを一刀両断
http://news.ameba.jp/2007/01/3086.php

によると(以下斜体は上記ニュースより引用)


マイクロソフト社の会長であるビル・ゲイツ氏(51)が、San Jose Mercury Newsで、任天堂Wiiとソニーに対する独自の見解を語った。

 ゲイツ氏は、まず任天堂のWiiについては、ゲームプレイの制約が多く、飽きやすいといった趣旨の発言を行う。そして、「オンラインの機能性を犠牲にしてしまった任天堂の決断を、注意深くもう一度見てほしい」と述べたようだ。ソニーについては、何をやろうとしているのかソニー自身が理解できていなかったと指摘した。


だそうな。。

ちなみに、この話の詳しい内容は、こちら
ビル・ゲイツ氏インタビュー ソニーや任天堂について自らの観点を語る
http://www.gamespark.jp/modules/news/index.php?p=946

で、
そのインタビュー記事(英語)の全文は、こちら
CES Interview With Bill Gates: Part I of Transcript On Video Games
http://www.gametab.com/news/789859/


だそうなんだけど。。。

うーん、でも、何を言ったとしても、現実問題、Wiiは売れているわけで、
ビルゲイツさんが、何を言っても。。。どーなんでしょーねー(^^;)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

OpenOffice Base(データベース)でマクロから「レポート」を開く方法&その前に(^^;)

2007-01-29 15:21:29 | OpenOffice

 以前、OpenOfficeのデータベースである、Baseにおいて、マクロを使って、フォームを開く方法を書いたので、今回はレポートを開く方法です。

 あ、それと、その前に、今回から、カテゴリにOpenOfficeを追加しました。




■仕様

C:¥temp¥テスト用1.odbというOpenOffice Baseのデータベースファイルがあって、その中にある「レポート1」を開きたい場合
(なお、¥は、本当は半角です)



■ソース

 マクロは、以下のとおりです
Sub Main
	'**** プロパティを入れるところ
   Dim pProp(1) As New com.sun.star.beans.PropertyValue 
 
 	'**** データベースを開く
   sURL = ConvertToURL("C:¥temp¥テスト用1.odb") 
   oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) 


 	'**** レポートとコネクションの接続
   oForms = oDoc.getReportDocuments() 
   oAConnection = oDoc.DataSource.getConnection("","") 

 	'**** プロパティを設定 Nameが属性 Valueが値
   pProp(0).Name = "ActiveConnection" 'コネクション
   pProp(0).Value = oAConnection 
   pProp(1).Name = "OpenMode" 		' デザインで開く?入力フォーム?
   pProp(1).Value = "open"		' 入力フォーム(openDesignだとデザイン)
    
	'**** フォームを開く
   oFormulario = oForms.loadComponentFromURL("レポート1","_default",0,pProp()) 

End Sub

(上記¥ < > は、本当は半角)

上記で赤で書かれているところが、ファイル名、フォーム名など、固有のものになります
(使うときは、実際のみなさんの開きたいものが、入ります)
青字のところが、フォームと違うところです。

つまり、フォームの場合は、
oDoc.getFormDocuments()
レポートの場合は
oDoc.getReportDocuments()

をつかって、対象ドキュメントを取得します。
なお、レポートのとき(つまり、今回の上記のソース)でも、その結果の受け取りをoFormsとしていますが、これは、変更点を最小にするためで、本当はoReportsなどの変数のほうがいいです(ただし、もちろん、oFormsのままでも、動作はするけど)




■しかし、その前に。。

 しかし、その前に!です。。

 そのレポートを作る話。
 OpenOfficeの2.1を使っているのですが、Baseでは、レポートをウィザードでつくるかたちになっていて、このウィザードでできるレポートが(^^;)
あの・・・

フォームから、印刷しましょうか(^^;)

ってかんじなのだ。。。。

なんか、もっと、まっとうなレポートを作る方法があるのかもしれない。。
それがみつかるまでは、フォームを印刷していたり、Writeの差込印刷のほうがいいのかなあ
(差し込み印刷使ってないので、よくわかんないけど。。)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

利用者の出力から業務を分析していく手順(その1:利用者の絞込みと場面抽出)

2007-01-29 13:03:44 | 開発ネタ

 以前書いた利用者の出力から業務を分析していく方法ってとこかな。。。というところで、利用者の出力から分析して、DOAでも、オブジェクト指向でも、どっちにでも展開して、プログラムまで落とし込める業務をまとめたシートと、入出力についてまとめたシートを作る方法について書きました。

 そこで書いた手順は、こんなかんじ
<<手順>>
(1)利用者を体系づけて分けます
(2)今回対象の利用者について、システム利用(入出力)場面を考え、業務シート作成
(3)利用者が利用する一場面をとって、入出力を、まず出力から確認します
  (3-あ)まず、外部に対して出力になっているものを取り上げます。
  (3-い)その外部出力の具体的内容を考え、入出力のシートに書きます。
  (3-う)その外部出力を出すために必要な情報が、入力されているかどうか、確認
  (3-えお)(3-う)までで、入出力のシートはできているので、それに対応する
     業務シートがなかったら追加、完成させます。
(4)利用者からの入力を受け取ってから、利用者への出力まで、
   システム内の業務を追加します
(5)利用者への出力ごとに、シナリオをつくります
(6)利用者の範囲を広げていきます。


 今日は、この(1)、(2)について書いてみたいと思います。



■手順(1)利用者を体系づけて分けます

利用者指向で業務分析する場合の手順で書いたように対象となるシステムの利用者を体系的に分類し、そのうち、今回扱うものについて書きます(他に関しては、いったん今回扱うものについてできてから、次にほかの利用者を選び、システムを修正・追加していきます。)

たとえば、給与システムの場合
・人事部の人
・総務で給与支払いする人
・勤務表を入力する社員
   ・時給の人
   ・月給の正社員(ボーナスあり)
   ・年俸制の人
などです。

 このなかから、今回考える人を選びます。まず、「勤務表を入力する社員(時給の人)」にしましょう。



■手順(2)利用者について、入出力場面を考え、業務シート作成

 ここで、利用者がシステムを利用する場面を考え、その入出力を書き出します。
 たとえば、「勤務表を入力する社員(時給の人)」が利用する場面として、勤務入力、入出力としては、業務入力画面(または記入シート)ということになります。
 なお、入力や場面はある程度適当でも大丈夫、まちがっていたら、あとで直せます((3)で修正します)。一方、出力は要求仕様のとき確定していないと困ります(このあとで修正するとなると、それなりに、影響が出ます)

 業務を記入するシートは、利用する場面で1シート、具体的な入出力画面1つにつき、1シートとなりますが、利用する場面で、入出力画面しかない場合は、それで1シートだけでOKです。

 つまり、今回の場合、場面は、勤務表入力となりますが、この場面では、これしか業務は無いので、「勤務表入力画面」1シートでOKです。
 一方、勤務表入力の場面で、勤務表入力をして、それを紙に出して、総務部に送る場合は、
 「勤務表入力」の場面で1シート、「勤務表入力画面」と、「勤務表出力」でそれぞれ1シートの合計3シートになります。

 また、「入出力についてまとめたシート」は、入出力画面、帳票で1シートになります。上記の場合、「勤務表入力画面」で1シートになります。


 


 具体的な、シートの書き方は、(3)と同じですので、次回、書きます。

 

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Flashで出来ているフリーの遠隔パソコン操作ソフト

2007-01-28 23:28:34 | Weblog

ここのGIGAZINEの記事
Flashで作ったフリーのVNCクライアント「FlashVNC」
http://gigazine.net/index.php?/news/comments/20070127_flashvnc/

によると、Flashで作ったフリーのVNC(遠隔操作するソフト)のクライアントっていうのができて、ダウンロードできるそうだ(ダウンロード先は上記記事にあります)
Flashが動けば、OSは問わないそうだ。。。

いもうとデスクトップもFlashっていう手もあるよな。。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Hello World程度のデータベース(その4:概念スキーマ(2)データとエンティティ) 。

2007-01-28 17:57:00 | 土日シリーズ

 情報処理とは何から、データベースの基本的な話(情報処理試験のデータベーススペシャリスト程度の話まで)を書く、土日のシリーズ「Hello World程度のデータベース」です。

 前回は、第三回ということで、「データ」についてでした。

データは、いろんな定義があるでしょうが、ここでは、
   あるモノや事柄(出来事)に関して、
   ある側面からみた結果を、
     数値、記号(文字による文章や画像なども含む)であらわしたもの
 と考えます。

で、ここで、

モノや事柄(出来事、抽象的なものも含みます)を、エンティティ、
ある側面からみたを、エンティティの属性としました。
(ちなみに、結果の数値等は、(属性)値となります)。

で、このエンティティと属性という考え方を利用して、名前をつけるという考え方が「OF LANGUAGE」といわれるもので、データを命名するとき、

   修飾語-主要語-分類語

のカタチで表します。修飾語がないときもあります。

で、実際には、

受注-商品-単価

のように、修飾語の部分が、エンティティ、つまり、エンティティの中にエンティティがあって、そいつが、属性を持っているというケースがあります。
(エンティティの中にエンティティがあり、さらにそのなかに。。。。。で、エンティティがあって、そいつが、属性を持っているというような、何十にもなるケースもあります)

 今回はそのケースを考えます。




■子エンティティが同じなら、属性値も同じケース、違うケース

ここで、4つのデータ項目について考えましょう。

受注番号、受注商品番号、受注商品名、受注商品単価です。

3つを、OF LANGUAGE的に書くと、

(1)受注-番号
(2)受注-商品-番号、
(3)受注-商品-名、
(4)受注-商品-単価

です。(1)~(4)まで、受注エンティティの中にありますが、(2)~(4)は、その受注エンティティの中に、商品エンティティがあって、その値についてでsy。

さてここで、同じ商品が、何件も受注された場合、受注商品番号は、同じになります。
また、同じ受注商品番号のものは、同じ受注商品名です。

 これを、エンティティで考えれば、受注エンティティのしたに商品エンティティがあり、
 それぞれのエンティティは、番号を持っていて(受注エンティティの場合は、(1)受注-番号、商品エンティティの場合は、(2)受注-商品-番号)
 その番号が同じものは同じものであり、

 受注商品名は、商品エンティティによって決まるといえます。




 一方、受注-商品-単価というのは、注文によって値が変わります。
 今日は特売日だから安くなったり、特急料金で高くなるかもしれません。
 売れ残りで、とっても安くなるかもしれません。

 つまり、同じ商品番号のものであっても、受注によって値段が変わります。

 いいかえると、 受注商品単価は、受注エンティティによって決まるといえます。




■1箇所に値をまとめるには。。。

 ということは、商品名は、商品エンティティによってきまってしまうので、いくつもの受注で、同じ商品名が何個もでてきてしまいます(同じ商品を受注した場合)。
 これは、こまります。

 データベースは、1箇所で値をもっていないといけないのです(>_<!)
 何箇所も同じ値がでてきてしまってはいけないのです。。。

 っていうことは、どうしましょう。。。

このようにエンティティごとに、決まってしまうデータをまとめておけばいいです。


 商品エンティティのデータを置いておくところに商品番号、商品名など、商品が決まってしまえば、値がきまるものをまとめておきます

 受注エンティティのデータを置いておくところに受注番号、受注商品単価など、受注がきまってしまえば、値がきまるものをまとめておきます

 受注エンティティのところに、どの商品エンティティが入っているかわかるようにします
 →実際には受注エンティティに、商品エンティティを代表する値(主キーといいます)である、商品番号を入れます。

 で、データベースに落とすときには、エンティティをテーブルにして、属性をそのテーブルの項目、属性値をそのテーブルのレコード(=実際のエンティティの実体)の項目値とします。




■では、どうするか

 では、このように、エンティティにわけて、エンティティごとに、決まってしまうデータをまとめておくには、どうしたらいいでしょうか?

 この方法は、正規化ということをすればいいのですが、それについては、次回のこのシリーズで書きます。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする