神戸のシステム屋ブログ

神戸のソフトウェア開発会社。Access製システムの開発&メンテナンス、Webサービス構築に関する事をつづります。

IEブラウザを起動~AccessVBAでシステム開発4

2005-12-06 | システム開発

今回は、Accessのボタンで目的のURLをインターネットエクスプローラで表示する方法をご紹介する。

通常はハイパーリンクを張る事で簡単に実現できるが、動的に表示したい場合や、独立した画面で複数表示したい場合には当関数は役立つだろう。

今回も有限会社パーツの業務システム開発で実際に使用されている共用関数だ。

■U_BrouseIE インターネットエクスプローラ表示
《使用方法》URLを引数として渡し、IEで表示する。

Call U_BrouseIE("http://www.parts-soft.com")

 《関数》
Public Sub U_BrouseIE(ByVal I_URL As String)
'IE表示
  Dim objIE As Object
 
  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Navigate I_URL
  objIE.Visible = True
  Set objIE = Nothing
End Sub

カンタンな関数だが、割と重宝する関数だ。
ブラウザをIEではなくFireFoxにしたりすることで、デザイナーの方のブラウザチェック機能を作る、などの用途も可能だ。


消費税率を返す関数~AccessVBAでシステム構築3

2005-12-05 | システム開発

消費税率のアップが検討されている。
ということは、数年後には必ず消費税アップは実施される。

システムの寿命はおよそ3年~5年。
固定資産として原価償却する事も考えて、そのくらいのスパンになる。

であると将来の税率アップを見込んだシステム作りが必要となる。
税込価格の算出に、本体価格*1.05としてしまうのはお勧めしない。
仮に消費税が10%になったとして、業務終了後に税率を力技で1.10に変更したとしても、システムで1週間前の売上を再計算させることはできない。

ここは柔軟に税率を返す関数を使用することが望ましい。
今回も有限会社パーツの業務システム開発で実際に使用されている共用関数をご紹介する。

■U_GetZei 消費税率取得
《使用方法》指定日を引数として渡し、指定日時点の税率を返す。

'2005/12/5時点の消費税を取得する
wZeiritu = U_Marume(2005/12/5)

 《関数》
Function U_GetZei(ByVal I_day As Date) As Single
'消費税率取得
  Select Case I_day
    Case Is >= #4/1/1997# 'H09
      U_GetZei = 0.05
    Case Is >= #4/1/1989# 'H01
      U_GetZei = 0.03
    Case Else
      U_GetZei = 0
  End Select
End Function

過去の3%時点の計算にも対応している。

ちなみに将来の税率移行時に備えるのであれば、今から項目に税率と税額の欄を売上データ上に保持しておくのもお勧めする。



AccessVBAでシステム構築 Vol.2 桁丸め

2005-12-02 | システム開発

前回に引き続き、有限会社パーツの業務システム開発で実際に使用されている共用関数をご紹介してみようと思う。

第2回目は『桁丸めの処理』

円未満を切り捨てるのでしたら、 Int(変数)Fix(変数) といった関数が便利です。
うちでは官公庁向け財務パッケージの開発も行っているので、1億円未満を切り捨てたり、10万円単位に丸める処理をよく行います。

また、家のローンなどでよく見かける元利が一定額である「元利金等償還」方式の計算には「賦金率」という小数点第3位までの率を算出します。

このような背景から、桁のまるめ処理を関数で安全に行い、保守性を高めることにしました。

コンセプトは以下のとおりです。

 ■まるめを行う桁位置(小数点を含む)を指定できること。
 ■切捨てができること。
 ■切り上げができること。
 ■四捨五入が出来ること。

関数は以下のとおりです。

■U_Marume 桁まるめ関数

《使用方法》
引数に、まるめを行う値、丸める桁位置、丸め方を渡して呼び出す。
次の画面へ行くボタンで関数を呼び出す。

 '10万未満を切り上げる
wMarumeGankin = U_Marume(wGankin, -5, cnKiriage)

 '円未満を切り捨てる切り捨てる
wMarumeGankin = U_Marume(wGankin, 0, cnKirisute)

 '小数点第3位を四捨五入する
wMarumeGankin = U_Marume(wGankin, 3, cnKirisute)

 《関数》
'まるめ区分 Enum typeMarume cnNone = 0 '何もしない cnKirisute = 1 '切捨て cnKiriage = 2 '切上げ cnSishagonyu = 3 '四捨五入 End Enum Function U_Marume(ByVal I_Num As Variant, ByVal I_Keta As Integer, ByVal I_Shori As Byte) As Variant '桁まるめ処理 'I_Num :数字 'I_Keta :丸め位置 'I_Shori :処理(0:何もしない、1:切り捨て、2:切り上げ、3:四捨五入) Dim wKingaku As Variant Dim wshift As Variant Dim WMODE As Byte Const MARU_CUT As Byte = 0 Const MARU_45 As Byte = 5 Const MARU_UP As Byte = 9 If I_Shori = 0 Then U_Marume = CDec(I_Num) Exit Function End If Select Case I_Shori Case 1 WMODE = MARU_CUT Case 2 WMODE = MARU_UP Case 3 WMODE = MARU_45 Case Else Exit Function End Select wKingaku = CDec(I_Num) wshift = CDec(10 ^ (I_Keta + 1)) U_Marume = CDec(Fix((wKingaku * wshift + CDec(WMODE)) / 10) / CDec(wshift / 10)) End Function


 
もし使われた場合はご報告いただければ嬉しいです。
しかし、いかなる責任も負いませんのでご理解のほどを^^