2014年01月31日

車検やオイル交換のお知らせ

あるお客様のパソコンで、Microsoft Accessで作られたシステムが稼動。
その既存システムを活かす形で、機能UPのご依頼を頂きました。
ご予算や、既存システムがロックされていることもあり、データMDBをそのまま活かす方法を採用。

久々にフルスクラッチで、1つシステムを作りました。
Microsoft Accessの出始めは、某上場企業で研究開発のお仕事をさせていただいていた頃です。バージョン1.0とか1.1の頃から使っており、英語版の頃からの大ベテラン。



昔から数えているわけではありませんが、Microsoft Accessのアプリだけで、おそらく100システムぐらいは作ってます。
VBAもこなれた技術ですので、特に迷うこともなくサクサクと開発。
あまりに心地よくコーディングが進んでしまい、自分でも驚くほど。
頭が覚えているというか、手が覚えてるというのか。

さて、最近は小学生や中学生が、コンピュータプログラムを学ぶワークショップが増えているそうです。

これは私の持論ですが、プログラムなんてのは、順番・繰り返し・分岐、その3つを組み合わせるパズルでしかない。

その3つをどう組み合わせるか。
日々の生活なのか、何らか業務システムなのかは別に、上手に判断し、的確に組み合わせることで、「考える力」を身に付け、結果を振り返りながら「前向きに捉えて次に活かす」姿勢を身に付けるなど、未来を作り支える子供たちが成長できる仕組みなら、ほんと大歓迎です。
  


Posted by 大樹直人 (naohito ooki) at 23:59Comments(0)Access

2013年04月24日

Access2010でインポートエラー

Access2003で作ったシステムのカスタマイズ依頼があり、
カスタマイズと共にAccess2010への載せ換え作業を行いました。

色々と内部的な仕様が変更になっており、
そのまま動く部分と、ちょっと癖だけ気を付ければ良いところ、
そして完全に手を入れないといけないところ、
色々とあることが分かります。

そんな中で、インポート処理の途中で以下のメッセージが出ました。
Execute TempImexSpec メソッドは失敗しました _WizHook オブジェクト




CSV形式のファイルをMDBの中にあるテーブルに、
インポートするという単純な仕組みのところです。

インポート処理を行う前に、フィールド上でどのように見えるか、
イメージが見られるのですが、何やら全角文字で文字化けが出ており、
始めは日本語自動にしたのですが、同じエラーが出ました。

次は厳密に以下のように、
文字コードを変えたら取り込めました。



こちらはCSVデータですが、Officeを入れ替えたこともあり、
連携するExcelのバージョンも変わっています。
根本の原因までは追いかけていませんが、
今回の場合は文字コードの認識による差異で発生していた模様。

何らかお役に立てれば幸いです。  


Posted by 大樹直人 (naohito ooki) at 06:00Comments(0)Access

2013年02月13日

Accessの入力後enterでカーソルを動かさない

Microsoft Access において、
テキストボックスに値を入力し[Enter]キーを押すと、
通常では、次のフィールドや、次のレコードにカーソルが移動します。
もちろんこれは普通な動きです。

しかし、例えばバーコードリーダーによる入力など、
固定のテキストボックスで連続した投稿を行いたい場合、
いちいちマウスでテキストボックスをクリックしなおして、
カーソルを元の位置に移動しなければならず、
この動作では非常に面倒です。

例えば、隠しオブジェクトを用意しておき、
テキストボックスの次のオブジェクトにフォーカスが移動したら、
再度テキストボックスにフォーカスを移動するなど、
細かい操作を考えるところですが、
もっとシンプルな方法があります。

Access2003では、以下になります。

メニューバーの[ツール(T)]、[オプション(O)]、
「キーボード」タグにある「Enterキー入力後の動作」にて、
移動しない(N)にチェックします。



しかし上記の方法では、
「Enterキーの入力後動作が共通」になってしまう為、
他のテキストボックスでも同様の動きになってしまいます。

そのテキストボックスにカーソルがある時だけ、
Enterキーの動作で移動させないようにし、
別の場所にカーソルがある時は、
元の状態に戻すというやり方が必要です。

もちろん理想的なのは、
このパラメータをプログラム側から操作することです。

以下がサンプルプログラムです。

Private Sub バーコードリーダ_Enter()
 'Enterキー動作・移動しない
 Application.SetOption "Move After Enter", 0
End Sub

Private Sub バーコードリーダ_Exit(Cancel As Integer)
 'Enterキー動作・次のフィールド
 Application.SetOption "Move After Enter", 1
End Sub


フォーカス取得時に、
Move After Enterフラグを0にし、
フォーカス喪失時に、
Move After Enterフラグを1に戻しています。
  


Posted by 大樹直人 (naohito ooki) at 00:00Comments(0)Access