カテゴリ
最近の記事
管理人
kappa-s.jpg
名前:nyatto
twitter:http://twitter.com/nyattoh
Facebook:http://www.facebook.com/nyattoh
FBレター:http://fb-letter.com/100002151358967.html
一言:

持ち前の中途半端さが全面に出ています。
あんまり突っ込まれるとぐぅの根も出ませんが、
何かあったらお気軽に書き込んでください。

コメントはスパム対策で一部ですが承認制にしてある記事があります。ご了承下さい。
ツイッター始めました。
Facebookの情報をメールでお届けします

内藤
過去ログ
リンク集
□個人的リンク
VabooLog2011
異邦人の食卓
アラフォー男子のウチのゴハン
アートルーム ヘアビジョン
Look at me.
本と文化の街 スーパー源氏
(古本・書籍検索ポータル)


■相互リンク
・「eguegu-Photo
・「詠う鯨
・「電脳生活で健康維持
・「やくにたたない?PCブログ
・「ジャパネットたかたの通販ガイド

■メーカ
NEC
SHARP
ソニースタイル
TOSHIBA
富士通
Panasonic
日立
エプソンダイレクト
Lenovo
日本hp
Dell
ソーテック
オンキヨー
ASUS Shop

■BTO・パーツ屋
グットウィル
韋駄天PC Online Shopping
エーチャージ
クレバリー
サイコム
TWOTOP
ドスパラ
ハーキュリーズ
パソコン工房
T・ZONE
VSPEC
フェイス
BLESS
フロンティア
マウスコンピューター

■中古
ソフマップ中古販売
ソフマップ・ドットコム 買取りサイト

■ショッピングモール
Amazon
楽天
【Yahoo!ショッピング】おすすめ情報
ライブドアデパート

タグクラウド
TOP  >  プログラミング  > 

2010年10月01日

Access VBA、十進型に気をつけろ!

このエントリーをはてなブックマークに追加
//
なんてこった。
AccessXP(2002)にて、VBAから十進型のパラメータをクエリに渡せない。
というか、渡しても正常なレコードセットが取得できないのだった。

結論から言うと、パラメータクエリのWHERE条件の部分というか何というか、とにかく、
WHERE CInt(カラム名)=[パラメータ]

になるようにして、
パラメータは整数型にする

※CIntはIntでも可。
(そのあたり、Accessの仕様がよくわからんです。)

んでもって、
Querydef.Parameters("パラメータ") = Integer型の変数

とやってあげる。

最初は別のアプローチでした。
パラメータを十進型にして、VBAの変数はVariant、パラメータ渡す際にCDecでDecimalに変換して渡すコードを書いてみたわけです。
ところが、これが全然ダメ。

そもそも、
1.SQL Server2000へのリンクテーブルにて、十進型のカラムがあり。
※SQL Server側のテーブルでNUMERIC[2]で定義されているものが、Accessだと十進型の精度2となる。勝手に。
2.上記テーブルを元に、数値型のパラメータを設定したクエリがあり。
3.上期(かみき)のデータ取得はそれでOKだったのに、下期になったらクエリそのものも正常に動かない
という状況があったのでありました。

というわけで色々試してみると、
1.どうやら2桁になるとダメっぽい
(つまり、9月までは正常に取得していた。10月になってダメになった)
2.下1桁だけで比較されているっぽい
というわけで、データ型を見直すと・・・

そして、クエリのパラメータ設定は「数値型」。
そこでパラメータの設定を「十進型」に変更。
クエリをGUIから実行する(パラメータを手動で入力する)と上手くいくわけです。

これでOKと思い、喜び勇んでVBAからCDec(Variant型変数)を渡すと、ダメ。

で、結局・・・最初に書いたようにして無理矢理動かしたというお話。

Access内部で、変数をどうやってキャストしているのか不明。
全然わかりません。不勉強ですみません。

動けばいいみたいなことしたくないんですが、
お金と時間の関係で、どこでもこういうことは起きているような気がします。

仕事でC++を書かなくなって久しく、こういう「えいやっ」でできてしまうVBAのようなものに親しんでしまったら、もうメモリ管理の概念なんてどっかに行ってしまう感じがして怖いです。
Accessのプロになったらまた違うんでしょうけど。

にほんブログ村 PC家電ブログ パソコン・周辺機器へ
タグ: VBA access
posted at 21:17 | このブログの読者になる -| 更新情報をチェックする | Comment(0) | TrackBack(0) | プログラミング
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/164356518

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。