つれづれ報春【出張版】
仕事で学んだことをつらつら。。。 お勉強したこともつらつら。。。 いわゆる備忘録。





Nz関数
バリアント型の変数がNull値である場合、0、長さ0の文字列(とどのつまり、空白よな)、または別の特定の値を返す。
・・・ところで、「えぬぜっと」関数って読むの?「ぬるぜろ」関数??・・・さすがに「んず」関数ではないとは思うんやけど。
バリアント型
どんな値でも(つまりは数値でもデータでも)格納できるスゴイやつ。
なぜこんなこと調べるかってーと、
私が一生懸命修正したクエリが、上手く動いてくれてないことが判明したから。
情報量の多いシステム。
修正部分がぱっと見分からん。
・・・修正したレコードだけ表示出来たら、
確認らくだよね?
うん。私でもそう思う。
で、
SQL部分だけ取り出して、Accessクエリで動かしたら、
求めてたものが返ってこなかった。。。
というか、求めてたものどころか、なぁんにも表示されなかった。
本来なら、前回と違うレコードが返ってくるはずなのに・・・
原因としては、フィールド内にnull値が入ってた。・・・らしい。
iif(null = null,0,1)
結果は"1"
iif(null <> null,0,1)
これも結果は"1"
つまり、null値が入ってると正確な答えが返ってこないのです。(先輩談)
・・・・・・そんなこと言われても、分からんのですが・・・
とりあえず、ダメってことは、分かった。
で、ここで登場するのが前述のNz関数。
Null値を"長さ0の文字列"に変えてもらって・・・
いざ、クエリ。
・・・・・・お、でけたでけた☆
にしても、いまいち分からんなー
ぬる。


Accessで作ったmdbファイルがあります。
その中の、あるテーブルのデータを取得する必要があって、、、
先輩が言うには、Accessで作って欲しかったらしいんやけど・・・
しかし!
しがない見習いSEにVBAなんて分かる訳もなく。
すぐに方向転換。
一番最初の配属先で頑張ったWSH(VBS)で!
やってみることに。
・・・・・・わかんねw
そこで伝家の宝刀、ぐぅぐるを使用。
あー・・・
SQLなんて使うのねー・・・
まあDBなんだから当然か。
(↑SQL苦手意識満載)
似たようなことしている人多数。
公開されているスクリプトを、
これまた伝家の宝刀、コピペする。
とりあえず形にはなった。
しかし・・・
接続できません
とくらぁ!
実は、mdbファイルにパスワード付けてたんですよ。
当然といえば当然。
このご時勢、1にセキュリティ、2にセキュリティ、3・4もセキュリティですから。
で、ぶち当たったのが「接続文字列」
(前置き長っ!)
なんか色々種類があって、
OLEDBプロバイダ
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<パス>;User Id=<ユーザID>;Password=<パスワード>
ODBCドライバ
Driver={Microsoft Access Driver (*.mdb)};DBQ=<パス>;Uid=<ユーザID>;Pwd=<パスワード>
大同小異、ここに極まる。ってくらい、書き方が使用者によってびみょーに違う。
'const StrCon = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=<パス>; _
Jet OLEDB:Database Password='<パスワード>';"
'const StrCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<パス>; _
User Id=<ユーザID>;Jet OLEDB:Database Password='<パスワード>'"
'const strCon = "ODBC;DATABASE=<パス>;UID=<ユーザID>;PWD=<パスワード>;"
'const strCon = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & myMDB & "; _
Jet OLEDB:Database Password=<ユーザID>;<パスワード>"
'conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=<パス>;Persist Security Info=true; _
Jet OLEDB:Database Password='<パスワード>';"
'conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<パス>;User Id=<ユーザID>; _
Jet OLEDB:Database Password='<パスワード>'"
'conn.ConnectionString := "'" & "Provider=Microsoft.Jet.OLEDB.4.0; _
Data Source=" & "'" & "<パス>" & "'" & "'" & "; _
Jet OLEDB:Database Password=<パスワード>" & "';"
などなど。
上記は全部駄目だった。
で、結局
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<パス>; _
User Id=<ユーザID>;Jet OLEDB:Database Password='<パスワード>'"
で接続出来たけど・・・
接続出来るまで、5日くらいかかった。。。
その間に、先輩がAccessで作っちゃったし。
ぅぅぅ…要修行。
しかも、
'ファイル選択ダイアログ
WScript.Echo "出力対象ファイルを選択してください"
objDialog.InitialDir = "C:\" 'デフォルト表示場所
intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit(8)
Else
myPath = objDialog.FileName 'mdbファイルフルパス取得
End If
この処理入れてて、先輩に見せたら。。。
「僕さ、こうやって選ぶの嫌いなんだよねー」
て言われるし・・・っ
いいんだもん。
仕事しながら勉強するんだもん。
だから新しいものには飛びついてみるもん。
接続文字列。
DBに接続するために必要な条件が書かれた文字列。
でも・・・
実際つながるようにするためには・・・・・・
かなりの時間を要する。(まったくもって要修行)
ところで、VBAとVBSって・・・
実はあんまし変わんないんだよね。
元はVisualBasic言語だし。
でも、VBAはあくまで取り組む気になれない。。。不思議。
めもめも。。。
お世話になりましたっ
【pueblo del script】
http://maglog.jp/pueblo-del-script/
作者さまは、猫アレルギー持ちの猫好きさん。
勝手に親近感持ってみたり。。。


05 | 2025/06 | 07 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |










されど猫アレルギー歴早10年。。。
つれづれ出張版では、基本的には仕事で学んだことを忘れないためにつらつら書き綴ります。
つれづれ本店よりは、真面目度アップ?




