ある日のAccessによるプログラム開発 単体テストにて。
どうしても机上でわからないバグが発生。
===========================
Public Sub test()
Dim intNum As Integer
intNum = 999 / 10
Debug.Print intNum
End Sub
===========================
ステップ実行してみて驚愕の事実。。
下のプログラムを実行すると、当然 99のはずだと思った。
JavaやC言語ならば、 999 / 10 は 恐らく doubleなど包含するデータ型に変換されて計算され、最後に左辺に代入されるときに、然るべきデータ型(今回はinteger)にキャストされるはず。。
しかし、Accessが返した答えは なんと 「100」。
Accessのバグだぁ!!と思って調べてみると、例によって仕様らしい。
http://office.microsoft.com/ja-jp/access-help/HA001229018.aspx
超抜粋
【データ型変換関数】
CInt 整数型 (Integer) -32,768 ~ 32,767。小数点以下は四捨五入されます。
integer型へのキャスト処理は四捨五入するのが仕様だということらしい。
恐ろしい。
で、対処としては、これでいいらしい。
intNum = int(999 / 10)
気を付けようと、ものすごく思った。
2012年5月31日木曜日
2012年5月29日火曜日
VB.netで、現在の年月日時分秒(ミリ秒まで)を取得する方法
イメージとしては、こんな感じで取得したかった。
「2012/05/17 16:03:36.086」
少し調べればわかることですが、少し試行錯誤したので、メモメモ。
ログを出力するときとか、定型書式になりそうです。
Dim dtNow As DateTime = DateTime.Now
Dim strOutString As String = dtNow.ToString("yyyy/MM/dd HH:mm:ss") & "." & dtNow.Millisecond.ToString.PadLeft(3, "0"c)
「2012/05/17 16:03:36.086」
少し調べればわかることですが、少し試行錯誤したので、メモメモ。
ログを出力するときとか、定型書式になりそうです。
Dim dtNow As DateTime = DateTime.Now
Dim strOutString As String = dtNow.ToString("yyyy/MM/dd HH:mm:ss") & "." & dtNow.Millisecond.ToString.PadLeft(3, "0"c)
2012年5月28日月曜日
複数のODPをインストールした環境において、特定のバージョンのODPを使用したいときの設定
VB.netを使用して、Oracleにアクセスする場合、ODPを使用することが多いと思われます。
複数のODPをインストールした環境において、特定のバージョンのODPを使用したいときの設定について記載します。
ODP.NET
(Oracle Data Provider for .NET Microsoft .NET環境からOracleデータベースへネイティブに接続可能なミドルウェア)
結論から書くと、以下の2点を対処すれば解決します。
①パスの設定を目的のバージョンのODPに修正して、
②VB.netで参照するライブラリの参照設定を①と同じにする。
具体的には、
②は文字通りなので、割愛。
①については、少々手作業が発生するので説明。
パスの現在の設定を以下の方法で確認します。
Pathを設定する
http://blog.cnu.jp/2009/11/06/windows-7-path/
【確認結果の例】
C:\app\username\product\11.2.0\client_1\bin;C:\app\username\product\11.1.0\client_1\bin;C:\Program Files\Common Files\Microsoft Shared\Windows Live;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\W~(以下略)
上記の場合、以下の2つのバージョンのODPがインストールされていることになります。
「C:\app\username\product\11.2.0\client_1\bin;」
「C:\app\username\product\11.1.0\client_1\bin;」
そして、パスの設定は、前が優先なので、常に11.2.0を使用することになります。
(よくあるパターンとしては、VB.netでは11.1.0のライブラリを参照しているのに、実行時はエラーが出る!という事象)
もし、 11.1.0のODPを使用したいのであれば、
「C:\app\username\product\11.1.0\client_1\bin;」を前に持ってくるか、
「C:\app\username\product\11.2.0\client_1\bin;」を削除すれば解決です。
Windows7くらいになると、Pathの設定もわかりやすくGUI設定できるとよいのでしょうが、確かにそれは難しいのかもしれませんね。
複数のODPをインストールした環境において、特定のバージョンのODPを使用したいときの設定について記載します。
ODP.NET
(Oracle Data Provider for .NET Microsoft .NET環境からOracleデータベースへネイティブに接続可能なミドルウェア)
結論から書くと、以下の2点を対処すれば解決します。
①パスの設定を目的のバージョンのODPに修正して、
②VB.netで参照するライブラリの参照設定を①と同じにする。
具体的には、
②は文字通りなので、割愛。
①については、少々手作業が発生するので説明。
パスの現在の設定を以下の方法で確認します。
Pathを設定する
http://blog.cnu.jp/2009/11/06/windows-7-path/
【確認結果の例】
C:\app\username\product\11.2.0\client_1\bin;C:\app\username\product\11.1.0\client_1\bin;C:\Program Files\Common Files\Microsoft Shared\Windows Live;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\W~(以下略)
上記の場合、以下の2つのバージョンのODPがインストールされていることになります。
「C:\app\username\product\11.2.0\client_1\bin;」
「C:\app\username\product\11.1.0\client_1\bin;」
そして、パスの設定は、前が優先なので、常に11.2.0を使用することになります。
(よくあるパターンとしては、VB.netでは11.1.0のライブラリを参照しているのに、実行時はエラーが出る!という事象)
もし、 11.1.0のODPを使用したいのであれば、
「C:\app\username\product\11.1.0\client_1\bin;」を前に持ってくるか、
「C:\app\username\product\11.2.0\client_1\bin;」を削除すれば解決です。
Windows7くらいになると、Pathの設定もわかりやすくGUI設定できるとよいのでしょうが、確かにそれは難しいのかもしれませんね。
2012年5月13日日曜日
逮捕された友達のその後
突然、電話が来た。平日の昼間。仕事中で、私が電話に出られない可能性が高いことはわかっているはずなのに。
で、後でコールバックして話を聴いてみた。
次の仕事が決まりそうで、口頭では内定がもらえていたらしい。
けれど、最終の最終くらいで、逮捕のことを言われて、決まらなかったらしい。
よほど悔しかったらしい。
それはそうだろう。
今回の逮捕のことは、履歴書の賞罰に記載の義務はないため、書かなかったらしいけれど、
今の時代はインターネットがある。
名前で検索してチェックされた結果、判明したらしい。
インターネットって、便利な反面、やっぱり恐ろしいなと思った。
個人情報保護って最近騒がれるようになったけれど、これって、ひとえにインターネットがあるから保護が必要になったと言っても過言ではないだろうな。
知る権利・知らせる権利、 いろいろあると思うけれど、行過ぎた発展の代償は思わぬところで予想もしない形で受けることになるのかもしれないと思った。
で、後でコールバックして話を聴いてみた。
次の仕事が決まりそうで、口頭では内定がもらえていたらしい。
けれど、最終の最終くらいで、逮捕のことを言われて、決まらなかったらしい。
よほど悔しかったらしい。
それはそうだろう。
今回の逮捕のことは、履歴書の賞罰に記載の義務はないため、書かなかったらしいけれど、
今の時代はインターネットがある。
名前で検索してチェックされた結果、判明したらしい。
インターネットって、便利な反面、やっぱり恐ろしいなと思った。
個人情報保護って最近騒がれるようになったけれど、これって、ひとえにインターネットがあるから保護が必要になったと言っても過言ではないだろうな。
知る権利・知らせる権利、 いろいろあると思うけれど、行過ぎた発展の代償は思わぬところで予想もしない形で受けることになるのかもしれないと思った。
2012年3月20日火曜日
まるちゃんのこと
まるちゃんとは、「ちびまるこちゃん」の話に出てくる「たまちゃん」によく似た女の子。
まるちゃんだけど、たまちゃん。ちょっと紛らわしいけれど、そういうこと。
彼女は、生まれて初めて私が告白した女の子。
そして、生まれて初めてつきあってくれた女の子。
そして、生まれて初めて抱きしめることを許してくれた女の子であり、多分お互いにファーストキスだった女の子。
両思いであることの幸せを教えてくれた女の子。
そして、生まれて初めて私が振った女の子であり、
生まれて初めて振られた女の子。
とにかくいろいろなことを教えてもらった。
はじめはただのクラスメイト。
まるちゃんは席が近かったこともあり、いろいろなお話をするようになり、軽口をたたきあうようになって、徐々にひかれていった。
告白したのは彼女の誕生日。
お互いに受験勉強に忙しかった時期なので、迷惑かもしれないと思いつつ、「ぼのぼの」のぬいぐるみをプレゼントに告白。
彼女も私のことが好きだったと告白してくれた。
嬉しかった。
今でもそのときの状況が思い出せるほど。
そういえば、後になって「ぬいぐるみは、あらいぐまくんの方が良かった」と言われた。
けれど、一度つきあい始めると、今度はいろいろなことを求めてしまう。でも、彼女の方はいたって冷静。であるように私には見えた。
そして、いろいろなことがあって、彼女の気持ちがなくなってしまっているように感じてしまい、私はいわゆる「駆け引き」に出てしまう。
そして電話でこの言葉を言ってしまった。
「もう終わりにしようか」
イヤだと言うに違いないと思っていた。
でも、そのまま話が進んでしまった。彼女の性格をわかっていなかった。そして、もう後には引けない。
「先に言った者勝ちだよね」
少し笑いながら言った彼女の言葉が耳に痛く残る。彼女は全然平気そうだった。少なくともそのとき私にはそうきこえた。
やっぱり彼女の心に私はもういないのだと思い、悲しかった。
そして、私は都心の大学に進み、まるちゃんは地元の短大に進んだ。
きっとすぐに忘れられる。
そう思ったのが大間違いだった。
結局その後も連絡は取るようになった。
その後も彼女は友達として話をしたり会ったりしてくれた。
そして半年くらいたった後、もう一度告白した。今度は手紙で。やりなおそうと。
「考えたい、後悔したくないから。」と返事がきた。
そして、その後、振られた。
そして、私は駆け引きしてもいいことはないということを学んだ。
しばらくして、まるちゃんは私の知らない人と結婚した。
相手はやさしくていい人、という印象。
よかったな、と素直に思えた。
そして私も結婚した。
そして、思ったことは、まるちゃんとは、結婚しなくてよかったかもしれないということ。負け惜しみではなく。
今、冷静に考えると、ずっと一緒にいると、きっと喧嘩が絶えなかっただろうな・・と。
でも、少し距離をおいた友達としてであれば、最高の友達。時々メールするくらいだけれど。
いつまでもこの距離を保てたらいいなと思った。
まるちゃんだけど、たまちゃん。ちょっと紛らわしいけれど、そういうこと。
彼女は、生まれて初めて私が告白した女の子。
そして、生まれて初めてつきあってくれた女の子。
そして、生まれて初めて抱きしめることを許してくれた女の子であり、多分お互いにファーストキスだった女の子。
両思いであることの幸せを教えてくれた女の子。
そして、生まれて初めて私が振った女の子であり、
生まれて初めて振られた女の子。
とにかくいろいろなことを教えてもらった。
はじめはただのクラスメイト。
まるちゃんは席が近かったこともあり、いろいろなお話をするようになり、軽口をたたきあうようになって、徐々にひかれていった。
告白したのは彼女の誕生日。
お互いに受験勉強に忙しかった時期なので、迷惑かもしれないと思いつつ、「ぼのぼの」のぬいぐるみをプレゼントに告白。
彼女も私のことが好きだったと告白してくれた。
嬉しかった。
今でもそのときの状況が思い出せるほど。
そういえば、後になって「ぬいぐるみは、あらいぐまくんの方が良かった」と言われた。
けれど、一度つきあい始めると、今度はいろいろなことを求めてしまう。でも、彼女の方はいたって冷静。であるように私には見えた。
そして、いろいろなことがあって、彼女の気持ちがなくなってしまっているように感じてしまい、私はいわゆる「駆け引き」に出てしまう。
そして電話でこの言葉を言ってしまった。
「もう終わりにしようか」
イヤだと言うに違いないと思っていた。
でも、そのまま話が進んでしまった。彼女の性格をわかっていなかった。そして、もう後には引けない。
「先に言った者勝ちだよね」
少し笑いながら言った彼女の言葉が耳に痛く残る。彼女は全然平気そうだった。少なくともそのとき私にはそうきこえた。
やっぱり彼女の心に私はもういないのだと思い、悲しかった。
そして、私は都心の大学に進み、まるちゃんは地元の短大に進んだ。
きっとすぐに忘れられる。
そう思ったのが大間違いだった。
結局その後も連絡は取るようになった。
その後も彼女は友達として話をしたり会ったりしてくれた。
そして半年くらいたった後、もう一度告白した。今度は手紙で。やりなおそうと。
「考えたい、後悔したくないから。」と返事がきた。
そして、その後、振られた。
そして、私は駆け引きしてもいいことはないということを学んだ。
しばらくして、まるちゃんは私の知らない人と結婚した。
相手はやさしくていい人、という印象。
よかったな、と素直に思えた。
そして私も結婚した。
そして、思ったことは、まるちゃんとは、結婚しなくてよかったかもしれないということ。負け惜しみではなく。
今、冷静に考えると、ずっと一緒にいると、きっと喧嘩が絶えなかっただろうな・・と。
でも、少し距離をおいた友達としてであれば、最高の友達。時々メールするくらいだけれど。
いつまでもこの距離を保てたらいいなと思った。
先輩の転職
私が今の会社に転職するきっかけをくれた先輩が、転職することになった。
全くの他業種。給与も下がるらしい。
いろいろな事情があってのことだろうと思うのだけれど、やっぱり残念。
そういえば、私が同じように全くの他業種に移ったときもあった。
あのときは、まわりの人たちに同じように思われたのだろう。今ならその気持ちが分かる。
だから
応援しようと心から思える。
今まで、いろいろお世話になったことに感謝しつつ。
先輩が成功するように。
先輩が幸せであるように。
全くの他業種。給与も下がるらしい。
いろいろな事情があってのことだろうと思うのだけれど、やっぱり残念。
そういえば、私が同じように全くの他業種に移ったときもあった。
あのときは、まわりの人たちに同じように思われたのだろう。今ならその気持ちが分かる。
だから
応援しようと心から思える。
今まで、いろいろお世話になったことに感謝しつつ。
先輩が成功するように。
先輩が幸せであるように。
登録:
投稿 (Atom)