2011年12月29日木曜日

生命保険金(入院・手術特約)

JA保険に入っていたので、先日 保険金が振り込まれてました。

入院保険の方は、予想の通りの額。

手術特約の方は・・・

ICD埋め込み前、心臓に血栓があるので除去手術をしたのですが

開胸して、心臓内の血栓を取る直前(開胸済み)に
足に血栓が飛んでしまったようです。
で、足の血栓を除去する為に足の付け根からカテーテルで除去したそうです。
(当然、全身麻酔の為に状況は医師から聞きました)

で、手術特約はカテーテルになっているようです。
ん?開胸もしたのに?

どうも納得いかないのでJAに連絡して再査定をお願いしました。
(医師に状況を聞いてくれるように依頼しました)

査定が変わるかわかりませんが、納得すればそれで良いですw

2011年12月20日火曜日

ICD定期検査 & 障害厚生年金の手続きへ その3

ICDを埋め込み退院してから1ヶ月。
定期検査をしました。

起動回数0回で問題ないようです。

市役所に戸籍謄本、住民票、妻の所得証明を申請に行き
書いてもらった診断書と共に社会保険事務所へ提出。

これで、障害厚生年金受給の手続きは完了。

何級になるかは分かりません。

半年後ぐらいには結果がわかるそうですが…

まあ、年明けからのんびりと仕事再開です。

車の移動が出来ないのでバスor自転車と電車での通勤になりそう。
(自転車はしんどいだろうから多分バスかな)

数回お世話になった方が名指しで指名してくださっているので
開発のお手伝いですw

2011年12月12日月曜日

雑談 12月12日

MS-ACCESSを使用した小規模システムの構築ってもう定番化しつつあるのかな?
もちろんDB自体はサーバにSQL-SERVER等で。

たしかにACCESSってDBを簡易操作するには便利なツールではあるし
簡単なシステムなら十分期待に副えるんだけど…

ユーザが勝手に改変できないようにロック掛けたり
ACCESS標準の機能を止めたりと面倒なんだよね。

中途半端にACCESS知ってるユーザが敢えて変更できるようにしてくれとか…

以前、短期に運用を頼まれたシステムで
データが消去される事があって
原因を調べたらテーブルを開いた後で
表示した内容をユーザが勝手に消してたw
単に必要なデータを印刷させたい為だったそうだが…
もちろん、最初からスナップショットなりで変更できなくすれば良いんだけど
前任者が即席で作らされたシステムらしい。

簡単に何も考えずそれなりの物が出来ちゃうけど
それなりの落とし穴もある訳で…

2011年12月6日火曜日

障害厚生年金の手続きへ その2

昔の健康診断結果、初診をした病院医師の診断書もそろったので
社会保険事務所に。

で、前回の手続きの続き。

いろいろな書類に名前、住所の記述。
どうしてこんなに書類が必要?ってぐらい記述。

病歴・就労状況等申立書 こいつが難題。
書込み箇所も多いし。
その場で書きましたが(^^ゞ
まあ、ネット上での予備知識がありましたので
書く内容はほぼ決めてましたが。

後日、現在の診断書等を持ってきてくれとの事。
月単位での請求になるから今月中がベストらしい。

2011年12月3日土曜日

雑談 12月3日

退院してから半月。
何とか体も慣れてきて、どうにか普通に歩く事もできるように。
(まあ、長距離だけ息切れしますが・・・)

お見舞いを頂いた方に一通りお礼は済ませたし
あとは仕事復帰だな。

とりあえず今月は軽作業(店番等)をするとして
年明けから開発作業を受注開始したいな。

オファーはあるんだけどね。

ただ、直前になって案件自体が消滅なんて事もよくあるし。
(オイラの周りだけかな^_^;)

車の運転が出来ないから作業場所が限られちゃうのが難点。
家で開発だけでも出来れば良いけど そうもいかない。
セキュリティの面を考えると当然なんだろうけどね。

2011年11月28日月曜日

死後の世界?

友人・知人に心肺停止した事を話すと
ほぼ全員が
「三途の川は見えたか?」等 聞いてきます。

残念ながら見てません。
見たとしてもそんな記憶がありません。
そもそも生還してる訳で、その時点で「死後」では無いですし^_^;

突然だったので恐怖心も無かったですし
いきなり意識が飛んだ訳で。

で、結局「死後の世界」はわかりません。

どうせ 誰でも知る事になるんだしね。
楽しみに待ってみるのも一興かと。

2011年11月22日火曜日

障害厚生年金の手続きへ

退院後、社会保険事務所へ障害厚生年金の手続きへ。
入院中にソーシャルワーカーより「めんどくさいよ」と言われてたが・・・
ほんと、めんどくさい。

オイラの場合。
1)数年前、会社の健康診断で異常が発覚
   (母親が心臓肥大だったからそうだと思ってたけどね)
2)近くの総合病院を受診。カテーテル検査等で薬を処方。
  年に数回、検査の為に受診。
3)会社退社
4)家業の店(有限会社)に入社^_^;
5)帰宅時に倒れICDを装着。(掛かり付けの病院では無い)

ってわけで、なんでも初診の日付等が必要との事。
昔の健康診断結果なんて取ってないし・・・
以前の会社に健康診断結果が保存されてるらしいので
取りに行かないといけないし。
初診をした病院医師の診断書もいるらしいし・・・・

で、上記を見て審査後に
ICD装着した病院の診断書がいるらしい。

めんどくさいぃぃぃ

2011年11月21日月曜日

心肺停止 その5

開胸の回復を待つ為
2週間退屈な期間でした。

まあ、最初の内は深呼吸が苦しいし
セキなど出たりすると胸に響きます。

開胸一週間後ぐらいには何とか動ける事が出来るようになりました。

で、ICDの埋め込みです。

まず、点滴をするのですが・・・
私、血管が判り辛くかつ、細い為に
太い点滴用の針が血管にヒットしません(T_T)
で、数回指しても駄目で結局、針を入れるのに30分ほど掛かりました。
(まあ、慣れっこですが・・・採血もなかなか一発で入る事はないですw)

ICDの埋め込みは局部麻酔の為、器械が入ってゆく感覚
(押し込まれる感覚)は判ります。
痛みはありません。

術後は埋め込んだ胸(左胸)と上腕(左腕)が固定されます。
次の日には固定が解かれるのですが、肩がコリます。

数日後からリハビリを始めましたが
3週間ほどベットの上での生活(若干歩く事はありますが・・・)なので
筋肉は落ちてます。体重も10キロ近く落ちました。
20分ほど歩くだけでフクラハギはパンパンになり
息も切れます。
それでも数回リハビリをする事で
かなりその後の生活は楽になるようです。

ICD埋め込み後1週間で退院する事ができました。

退院後、数日が経ちますが依然として違和感はあります。
左腕は大きく内側に曲げる事が出来ません。
(ICDに当たってなんか曲げるのが怖いw)

車の運転も6ヶ月は出来ないようです。

社会保険事務所で障害者年金の手続きもしないといけないし
1ヶ月後には病院での検査もあります。

実質、仕事を再開できるのは来年からかなぁ・・・
などと思っています。

2011年11月20日日曜日

心肺停止 その4

胸部を開く為、全身麻酔です。
予定の開始時刻が来ても呼ばれません。
1時間ほど遅れての開始でした。

意識が戻ったのは翌日だったかな。
かなりあやふやです。

後から聞きましたが、開胸後心臓にはすでに血栓が無かったそうです。
おそらく直前に心臓から出て行ったのでしょう。
左足の付け根付近で詰まっているのを発見し、除去したそうです。
嫁や父は血栓を見せてもらったそうですが、私は見る気がしませんでした。

足に飛んだのは運が良いのでしょう。

術後の体には管がいっぱい付いていました。
一番苦しかったのは呼吸用の管。
かなり苦しかったです。

手術翌日にはほとんどの管を取る事が出来ましたが
当然ベットから離れる事は出来ませんし、寝たままです。

数日後、一般病棟に移る事ができ、ICDの受けこみは2週間後に予定されました。

心肺停止 その3

医師から現状では埋め込みは危険らしいとの説明。

心臓内に3センチ程度の浮遊している血栓が見つかりました。
コレが頭にでも飛ぶと即死らしいです。

急遽、翌日の埋め込み手術が血栓除去の手術に変更となりました。
胸部を開き血栓を除去するそうです。
それまで、血栓が飛ばない事を祈るしかありません。

まあ、大丈夫かと思いましたが、長女にはもしもの事があれば
宜しく頼むと伝えておきました。少しは頼りになる娘です。

で、手術当日を迎えました。

心肺停止 その2

意識が戻った当日、2週間後にICD(埋め込み型除細動器)を付ける旨の
説明がありました。

まあ、仕方ないです。心肺停止には当分なりたくないですし。
ただ車の運転が当分(何も無ければ術後半年)は法律で出来ないようです。
仕事がかなり制約されます。

入院してから、3日ほどはICUでベットから離れる事すら出来ませんでした。

一般病棟に移ったのは4日目ぐらいだったかと思います。

で、各種検査をして翌日に埋め込み手術が迫る夕刻に医師からの説明を受けました・・・

心肺停止

2011年10月18日、帰宅途中の駅ホームにて急激に気分が悪くなり
倒れてしまいました。
見ず知らずの女性が「大丈夫ですか?」の声掛けに「駄目かも」と答えた気がします^_^;
そして目の前が真っ暗になり意識はブラックアウトしました。

で、気がつけば病院。
どうやら30分ほど意識が無くなっていたようで
その間、心臓マッサージやAEDの救命を行ってくださっていたようです。

ほんとうにありがとうございました。

AEDの記録から、心肺停止後4回目の電気ショックで心臓が動き出したそうです。
まず自分の手・足などの麻痺が心配になり自分なりに確かめました(^^ゞ

連絡を受けて駆けつけた嫁の顔を見た時に気分が落ち着いたのを覚えています。

心臓マッサージで肋骨が折れる場合も有るのですが
幸いに折れてはいなかったのですが、腹筋等が痛く息苦しい思いがしました。

まあ、助かっただけ儲け物です。

2011年10月15日土曜日

ACCESSでのアドイン作成

前にACCESSでのソース管理について雑記したけど
その時にアドインも作成したので
その方法を。
他にもアドイン作成方法はあると思うけど未調査^_^;

なを、元ネタはACCESS2000で作成時の記録

-----------------------------------------------------------------
手順1.アドイン用MDBの作成
           通常のMDB作成と同じ

手順2.定義用テーブルの作成
           テーブル名:USysRegInfo
                      フィールド名                属性
                          Subkey                 テキスト型  255文字
                          Type                     長整数型
                          ValName              テキスト型  255文字
                          Value                    テキスト型  255文字
手順3.アドイン機能の作成
             呼出モジュール(Function)の作成
             戻り値指定は不要
                     ex:   Public Function adin_Main()
                                   :
                            End Function
             ※)このモジュール等はアドイン外からも参照可能なので
                 名称が重ならないように配慮するべし。

定義4.定義テーブルのレコード作成
             手順2で作成したテーブルに3レコード追加

USysRegInfo
SubkeyTypeValNameValue
HKEY_CURRENT_ACCESS_PROFILE\Menu Add-Ins\%アドイン名%0

HKEY_CURRENT_ACCESS_PROFILE\Menu Add-Ins\%アドイン名%1Expression=%手順3で作成したFunction名%
HKEY_CURRENT_ACCESS_PROFILE\Menu Add-Ins\%アドイン名%1Library|ACCDIR\%アドイン実体名%

                          %アドイン実体名% は ○○.mda って奴ね

定義5.ファイルの拡張子を変更(MDB->MDA)

-----------------------------------------------------------------

これでACCESS用アドインは完成。
後は実行用PCにコピーしてACCESSのメニューから登録すればOKかな。

そうそう、UsysRegInfoってシステムオブジェクト扱いなんで通常は見えません。
オプションを変更すれば見えるよ。

        

2011年10月8日土曜日

MS-ACCESSのソース管理

それほど大きくないシステムでMS-ACCESSを利用して構築する案件は
予想外に多かったりする。
(オイラのまわりだけかもw)

で、単独での開発なら良いけど複数人での開発となると
ちょっと厄介。
どうしてもデグレが発生しやすい。

VBAのソースだけなら良いけど、フォーム等のプロパティもあるし。

ただ、各オブジェクトをテキストとして出力もできるんだよね。
ヘルプ等では公開されてないようだけど。
SaveAsText ってやつね。

で以下のモジュールをつくってみた。
'-----------------------------------------------
'モジュール一括出力
'-----------------------------------------------
Public Sub Addin_subOutModule(strFolder As String)
    Dim aObj As Object
    Dim FName As String
    On Error GoTo Err_Addin_subOutModule
    '全モジュール出力
    For Each aObj In CurrentProject.AllModules
        FName = strFolder & "module_" & aObj.Name & ".txt"
        Application.SaveAsText acModule, aObj.Name, FName
    Next
   
    '全フォーム出力
    For Each aObj In CurrentProject.AllForms
        FName = strFolder & "form_" & aObj.Name & ".txt"
        Application.SaveAsText acForm, aObj.Name, FName
    Next
   
    '全レポート出力
    For Each aObj In CurrentProject.AllReports
        FName = strFolder & "report_" & aObj.Name & ".txt"
        Application.SaveAsText acReport, aObj.Name, FName
    Next
   
    '全マクロ出力
    For Each aObj In CurrentProject.AllMacros
        FName = strFolder & "macro_" & aObj.Name & ".txt"
        Application.SaveAsText acMacro, aObj.Name, FName
    Next
   
    '全クエリ出力
    For Each aObj In CurrentData.AllQueries
        FName = strFolder & "querydef_" & aObj.Name & ".txt"
        Application.SaveAsText acQuery, aObj.Name, FName
    Next

    Set aObj = Nothing
   
    Exit Sub
   
Err_Addin_subOutModule:
   
    MsgBox Err.Description
    Resume Next
End Sub
-------------------------------------------
strFolder に出力先フォルダ名(最終文字に¥付き)を指定してコールするだけ。
ただオブジェクト名に"/"等があると駄目だけど^_^;

出力ファイルで差分を取れば変更箇所が判定できる。
(編集しなくても変わる項目もあるけど…)
以前アドインとして公開してるソースから引用してます。
VBAStepCounterForAccess2000 ってやつね(^^ゞ

ACCESS2000 ~ 2007までは出来るはず。2010は知らんw

2011年10月3日月曜日

テスト環境がぁ

現在、某システムの連携テストをしてるのだが・・・
テスト関係(コンパイルも含め)ドキュメントが無い。
と、言うより
ドキュメントが整理できてなくて探せない(無いかもしれない^_^;)

うみゅう。。。。な訳で試行錯誤中www

自分用に作成しているけど、開発用ドキュメントとして共有すべきだよなぁ。。。
(若干意識して作成中w)

2011年9月24日土曜日

AD(ActiveDirectory)サーバにユーザ確認

AD(ActiveDirectory)サーバ上のユーザを利用したユーザ認証
(単にユーザ・パスワードが有効なのかチェックするだけw)をVB.NETでって案件。

ADサーバをLDAPサーバ扱いすれば可能なようなので。

----------------------------------------------------------------------------
        Dim aName As String
        Dim aSn As String
        Dim aGivenName As String
        Dim aDescription As String

        Try
            Dim searcher As New System.DirectoryServices.DirectorySearcher()
            'サーバーが結果を返すまでのクライアント待機時間
            searcher.ClientTimeout = New TimeSpan(500)
            'サーバーが検索するための制限時間
            searcher.ServerTimeLimit = New TimeSpan(500)
            'サーバーが結果のページを検索するための時間
            searcher.ServerPageTimeLimit = New TimeSpan(500)
            '検索を開始する Active Directory 階層のノード
            searcher.SearchRoot = New System.DirectoryServices.DirectoryEntry(%サーバ名%, _
                                                        %ユーザ名% & "@" & %ドメイン名%, %パスワード%)
            searcher.Filter = "(sAMAccountName=" & %ユーザ名%  & ")"
            searcher.SearchScope = System.DirectoryServices.SearchScope.Subtree
            searcher.PageSize = 512
            '姓(漢字姓),名(漢字名),部署名(説明),ユーザID
            searcher.PropertiesToLoad.AddRange(New String() {"name", _
                                                        "sn", _
                                                        "givenName", _
                                                        "description", _
                                                        "sAMAccountName"})
            Dim results As System.DirectoryServices.SearchResult = searcher.FindOne
            'name
            If results.Properties("name").Count > 0 Then
                aName = results.Properties("name").Item(0).ToString
            End If
            'sn
            If results.Properties("sn").Count > 0 Then
                aSn = results.Properties("sn").Item(0).ToString
            End If
            'GivenName
            If results.Properties("givenName").Count > 0 Then
                aGivenName = results.Properties("givenName").Item(0).ToString
            End If
            'Description
            If results.Properties("description").Count > 0 Then
                aDescription = results.Properties("description").Item(0).ToString
            End If
        Catch ex As System.DirectoryServices.DirectoryServicesCOMException
            MsgBox(ex.Message)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

2011年9月23日金曜日

ACCESSとVB.NETの色指定

以前、ACCESS(2003)とVB2008を使用したシステム構築の案件があったんだけど
当然、ACCESS側とVB.NETでのインターフェイス(見た目w)を統一したいと。
フォーム上の色はINIファイルから設定したいと。

で、ACCESSの色(RGB)とVB2008(ARGB)の色は形式が異なる訳で変換が必要。
例)
ACCESS-----------------------------
   me.詳細.BackColor = %指定色%

VB2008------------------------------
  Dim cl As New Color
  cl = ColorTranslator.FromWin32(%指定色%)
  me.BackColor = cl

2011年9月21日水曜日

案件がぁ

11月中旬から予定していた案件が潰れたぁ。

また、案件を探さないと。
受注先を増やさんと駄目かな・・・・

ほとんどサラリーマン時代の繋がりだからなぁ

2011年9月20日火曜日

VB.NETからCD-Rにデータ書込み

先日、PGのリプレースを依頼された。
PGは単純なんだけど、現状FDに出力するファイルをCD-Rに出力して欲しいと。

結構めんどくさいw
単純にCD-RドライブにCOPYって訳にもいかないようだし。

で、定番 ググってみた。
IMAPI2 なるAPIがあるようだ。(対象がWin7でVB2010だったから)

ただほとんどの情報は英語。まあ仕方ない。
無い頭を無理やり使って意訳w

で、出来たのが次のソース。
かなり簡略化してコメントもアバウト。
エラー処理などほぼ無視w
--------------------------------------------------------
参照  COM
  IMAPI2
  IMAPI2FS
--------------------------------------------------------
'CD-R書込み関連参照設定
Imports IMAPI2
Imports IMAPI2FS
Imports System.Runtime.InteropServices
Module modX
    Public Function fncBURNdata() As Boolean
        Dim bRet As Boolean = False
        Dim sRecorderId As String = String.Empty            'RecorderID
        Dim objDiscMaster As IMAPI2.MsftDiscMaster2 = Nothing   'DiscMaster2 Object connects
        Dim objRecorder As IMAPI2.MsftDiscRecorder2 = Nothing   'Recorder for BURNing device
        Dim DataWriter As IMAPI2.MsftDiscFormat2Data = Nothing  '
        Dim BurnRet As IMAPI2FS.FileSystemImageResult = Nothing '
        Dim Image As IMAPI2FS.MsftFileSystemImage = Nothing     '
        Dim ImageStreem As IMAPI2.IStream = Nothing             '
        'CD-R書込み
        Try
            'デバイス検索
            objDiscMaster = New IMAPI2.MsftDiscMaster2
            sRecorderId = ""
            For Each sDev As String In objDiscMaster
                Dim objDev As New IMAPI2.MsftDiscRecorder2
                Try
                    objDev.InitializeDiscRecorder(sDev)
                    If Trim(objDev.ProductId) = %デバイス名% Then
                        sRecorderId = sDev
                        Exit For
                    End If
                Catch ex As Exception
                    Throw ex
                Finally
                    MarshalObject(objDev)
                End Try
            Next
            'デバイス決定
            objRecorder = New IMAPI2.MsftDiscRecorder2
            objRecorder.InitializeDiscRecorder(sRecorderId)
            'メディア初期化
            Dim bRetErase As Boolean = fncEraseDisc(objRecorder)
            'ISOイメージ種別指定(Longファイル名使用可能)
            Image = New IMAPI2FS.MsftFileSystemImage
            Image.FileSystemsToCreate = (FsiFileSystems.FsiFileSystemISO9660 Or
                                          FsiFileSystems.FsiFileSystemJoliet)
            'CD-Rボリューム名設定
            Image.VolumeName = %ボリューム名%
            'ISO作成元フォルダ指定
            Image.Root.AddTree(%作成元フォルダパス%, False)
            'ISOイメージ作成
            DataWriter = New IMAPI2.MsftDiscFormat2Data
            DataWriter.Recorder = objRecorder
            DataWriter.ClientName = %本PG名%
            DataWriter.ForceMediaToBeClosed = True
            BurnRet = Image.CreateResultImage()
            'ISOイメージ書込み
            ImageStreem = DirectCast(BurnRet.ImageStream, IMAPI2.IStream)
            DataWriter.Write(ImageStreem)
            'メディア取り出し
            objRecorder.EjectMedia()
        Catch ex As System.Runtime.InteropServices.COMException
            '書込みエラー
            MsgBox(ex.Message ,
                   MsgBoxStyle.OkOnly Or MsgBoxStyle.Exclamation,
                   "エラー")
            bRet = False
        Catch ex As Exception
            '書込みエラー
            MsgBox(ex.Message ,
                   MsgBoxStyle.OkOnly Or MsgBoxStyle.Exclamation,
                   "エラー")
            bRet = False
        Finally
            '各COMオブジェクト開放
            MarshalObject(ImageStreem)
            MarshalObject(BurnRet)
            MarshalObject(DataWriter)
            MarshalObject(Image)
            MarshalObject(objRecorder)
            MarshalObject(objDiscMaster)
        End Try
        Return bRet
    End Function
    Private Sub MarshalObject(ByVal obj As Object)
        Try
            If (Not obj Is Nothing) AndAlso (Marshal.IsComObject(obj)) Then
                Marshal.ReleaseComObject(obj)
            End If
        Catch ex As Exception
        Finally
            obj = Nothing
        End Try
    End Sub

    Public Function fncEraseDisc(ByVal Recorder As IMAPI2.MsftDiscRecorder2) As Boolean
        Dim Format As New IMAPI2.MsftDiscFormat2Erase
        Try
            Format.Recorder = Recorder
            If Not Format.IsCurrentMediaSupported(Recorder) Then
                Return False
            End If
            Format.ClientName = %本PG名%
            Format.EraseMedia()
        Catch ex As Exception
            'ここでのエラーはひとまず無視
        Finally
            'COMオブジェクト開放
            MarshalObject(Format)
        End Try
        Return True
    End Function
End Module
--------------------------------------------------------
そうそうXP等で動かす時はIMAPI2をインストールする必要がある。
Win7は何も必要ないけど
XPだとIMAPI2をMSからダウンロードしてインストールしてね。
%~%は各環境に合わせれば良いと思います^^;

2011年9月19日月曜日

SqlServer2005 インストール時チェックエラー

以前、SqlServer2005で開発環境作成時にシステム構成チェッカーで再起動しろとのメッセージ。
何度再起動掛けてもエラー…

で、SqlServer2000で同様の記事をMSで発見(アドレスは忘れたw)
どうやらレジストリにゴミが残っていて、再起動後実行ファイル?の指定が削除不可能の状態らしい。

解決策は
 レジストリエディタで
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
    PendingFileRenameOperations
 を削除すれば良いらしい。
 (必要ならばControlSet001,ControlSet002も同様に確認)

 けっこう情報が無くて半日は悩んだ記憶が・・・・

技術情報を思いつくまま書き込みw

基本的には自分のメモ代わりなんで… USO800 はごめん。