C# Access(*.accdb) と接続するときの問題点

64bit化して久しいWindowsですが、
やっぱりというか、未だにとしうか、そりゃそうだな問題が出ています。

なぜかOffice製品は64bit環境でも、32bit版がデフォルトらしい。
コンパイル時に気をつけないと64bitプログラムでコンパイルされてしまい、接続できない

避けられないのでどうしようもないですが、なぜかMSはWOW64を推奨のご様子。

くわしくはこちらを。

なかなかめんどくさいですね。
ミドルウェアで吸収してくれたらいいのに。

c# 非同期

c#での非同期処理について調べているが、なんというか、カオス。
c# というか .net では、様々な非同期処理があって、ただでさえ複雑な非同期処理の習得を、余計に難しくしていると感じる。
バージョンがあがる毎に、おそらくは、より便利な使い方を追求して、違う方法で非同期を処理する方法が考案・実装されていって、しかもそれがずっと残ったまま次の方法が追加されていくので、結局使う方がどれを選択したらいいのかわからなくなってしまうという感じ。

最新は async/await という方法だが、これはその前に考案されたTaskクラスをラップ・発展させたような感じらしく、結局Taskの振る舞いとそのラップ構造を理解していないと使えないっぽい。というのが、これまでの感想。まださわりしか理解していないので、間違っているかもしれないが…

また、例にラムダ式が使われているのがなぜか多く、c#をあまり使っていない初心者としては、まずそこから理解できない。
デリゲートも、関数ポインタと言われると、まぁわからんでもないけど、これほど多用される理由がよくわからない。普通に関数で処理できる部分まで無理にデリゲートにせんでもええと思うけどなぁ。どうしてもデリゲートでないとならないなどと言う部分がそんなに多いとも思えない。ラムダ式も同様。
ポインタの悪の部分をなくすために存在しているはずなのに、デリゲートを理解するのにポインタの知識が必要などと言うところが、もはや悪いループに入り込んでいるように思えてならない。概念をよくわからずに使用するプログラマが多いのかと思うと、なんだか悲しい気持ちになる。こういうのをもてはやして”成果だ”として多用するのは、マイクロソフトの悪い癖だと思う。
「何でもできる は 何もできない と同じ」などという格言もある。無名関数ではダメなの?LINQから発展・拡張したという経緯を差し引いても(いや、そう思っているだけで違うかもしれないけれど)、C#の構文にいきなり毛色の違いすぎるラムダ式が登場する違和感について、誰も何も言わなかったのだろうか?本当にこれが登場したおかげで便利になったの??簡単な説明だけで、いきなり

 Func < int ,bool > method = (year) =>
  year < 1994 ? year % 4 == 0 : year % 4 == 2;

なんて式を例に出されても、理解できないってーの。
うるう年を解くコードなのは理解できてますよ、念のため言っておくけど。
ていうか、このコード間違ってない?
100で割れる年と400で割れる年の処理抜けてるよね??
まぁそれは、ここではどうでもいい。

コード量は少なくなったかもだけど、本当に便利になったとは思えないなぁ。特に他言語から来た場合、非常にとまどうと思う。
WPFがイマイチ普及しないのと同じ事を、ここでもやってしまっていると思うのは私だけだろうか?

やっぱり愚痴になってしまった。
勉強して、理解して、結局使うのはちょっとだけ…無駄な時間ばかり掛かって、実際のコードを組む時間に悪い影響が出るこのループ。
理解してまえば早いのかもしれないが、一度使ってまた次にc#を使う事がそんなに多いとも思えない。私の場合。

いい加減、21世紀に入ってもう長いのだから、概念も方式も実装も、もっとシンプルにして欲しいものだと、切に願う。

再転写プリンタ

仕事の関係で色々調べているのだが、カード専用プリンタというのが世の中には存在する。
クレジットカードサイズのカードに、写真とか名前とか会員番号とか、そういうのを印刷するプリンター。
業務用で、結構な値段がする。

(続きがあります。ここをクリックして続きを読む…)

access vba の処理を途中で終わる。

サブルーチンを作っていて、
呼び出し元に処理を返すのではなく、その場でプログラムを終わらせたい時、
どうすればいいのか? どういう処理が選択できるか?

なぜかVBではそういう質問をすると怒られたり、Exit Sub 使えとか言われたりするようです。
しかし、当然 Exit Sub では呼び出し元に処理が戻ります。

で、たとえば強制終了するには

End '強制終了

というコードがあります。
なぜかMS Access VBAの質問でこれを答えた人は誰もいませんでした。

もちろん、他の処理でも別にいいと思いますが、
Err.Raise を使うとか(Resume したら意味ないですが…)

やれ、「処理の内容を見ないと…」とか、「Exit Sub です…」とか、
はては 「goto を使うのは邪道」というのまで出てきて、
きっと初心者であろう質問者の本質に答えられる人は、そこにはいなかったように思われます。

いつも思うのですが、QAで「マニュアル読め」とか、「FAQを読み返せ」とか、「出直して来い」とか言う人々、
きっと技術力無いんじゃないかと思うのです。

もちろん、質問者の意図を汲み取ってすばらしい回答を答えている立派は人もいますが、どうも少数派に思えます。

幸いな事に、昔の私は良い先輩に恵まれて本当に丁寧に色々教えてもらいました。
調べ方すらしらなかった私に「そんな事ぐらい勉強してから質問したら…」みたいな事を言う人は居なかった。
どこをどう調べるのか、調べ方から教えてくれた事に、本当に感謝しています。

自分の質問が見当はずれだったり、どう質問したらいいのかわからない人もいます。
どこを調べればいいのかもわからない、なんてことは、プログラマならきっと経験した事があるはずです。

そういう人をいじめて、優越感に浸るような人間にだけは、なりたくないな。

グチも文句も多い私が言うのもなんですが、そういう風に思います。

MS ACCESS リファレンス

久しぶりにアクセスを触っていますが、
本当にひどいですね。

何がひどいって、VBAのコード上でF1押してもまともにリファレンス出てこない。
一体どうなっているのでしょうか? MSひどいな。
明らかな関数やプロパティを狙ってF1を押しても、MSDNのトップページに飛ばされる。
もう、うんざりですね。

MSのサイトより、一般の方が解説したHPの方が具体的かつ実践的なコーディングが紹介されていて実に役に立つあたり、
情けなくないのでしょうか。

もはや、こういう機能をなんとかしようとする気がないのか、人材がいないのか、捨てているのか。
そりゃ、Windows向けの汎用言語なんかでは、もっと高度な機能を求められるわけで、これでは技術者に敬遠されるのも仕方が無いと思います。
ほんと、終わってる。

PHPなんか、とても引きやすい、使いやすい、実践的なリファレンスがあるし、Javaはよく 知りませんが、Office VBA みたいにひどいことは無いでしょう。
昔より使えなくなっているとはどういう事?
Windows8といい、一体どうしたいんでしょうか?ゲイツも頭が痛いことでしょう。

そりゃ、みんなGoogleの方に向くのも当然のような気がします。
Googleがパーソナルに使えるDBフロントエンド環境を提供したら、すぐに飛びつきますね。
正直、こんなんやってられん。
超めんどくさい。
使えない。