バッチ・スクリプトの最近のブログ記事

探してもなかなかみつからなかったので、覚書。

Set myDB = CurrentDb
' 他のDBなら: Set mydb = OpenDatabase("C:\VB\BIBLIO.MDB")

'QueryDef 編集用に開く
Set myQuery = myDB.QueryDefs("クエリ名")

' SQLを取得
strSQL = myQuery.SQL
'SQLを設定
myQuery.SQL = "select * from テーブル名;"

'close 処理
myQuery.Close
myDB.Close
set myQuery = Nothing
set myDB = Nothing

| コメント(0) | トラックバック(0) | カテゴリ [ Windows : バッチ・スクリプト ]

VBScriptの備忘録2。

未使用の変数は、型(値)が Empty になる。
Dim work
wscript.echo "VarType? " & VarType(work) '0
wscript.echo "TypeName?" & TypeName(work) 'Empty
wscript.echo "isEmpty?" & isEmpty(work) 'True

VarTypeは0、TypeNameはEmpty。

Emptyは暗黙の型変換で、数字 0 とも文字列 "" とも一致してしまう。
'---test3.vbs---
if (wk = 0) and (wk = "") then
wscript.echo "True" 'これが表示される
else
wscript.echo "False"
end if
'----
助かるような、困るような。
ちなみに、isEmpty()で明示的な確認が可能。
変数を明示的にEmptyにするにはそのまんま代入。
work = Empty

ちなみに,EmptyとNullは異なる。Null は 0や "" とは一致しない。
VarTypeは1、TypeNameはNull。
isNull()関数あり。 work = Null で代入可能。

| コメント(0) | トラックバック(0) | カテゴリ [ Windows : バッチ・スクリプト ]

備忘録。VBScript の落とし穴。
on error resume next を使うときは要注意。

下記を実行するとわかるが、(wk <> 0) AND (wk = 0) が成り立つように見えてしまう。

'---- test1.vbs
on error resume next
wk = ""
if (wk <> 0) and (wk = 0) then
wscript.echo "True??" 'here
else
wscript.echo "False"
end if
wscript.echo " error:" & err.Number '13
wscript.echo " " & err.Description '型が一致しません。
'-----

VBScript暗黙の型変換でも「長さ0の文字列」は 数字(Integer)に変換できない
ためにエラーとなるが、
if 文の条件内でのエラーは [on error resume next]のために成り立ったとして
進んでしまう模様。

類似のトラブルは、とにかく if文の条件 がエラーとなるとき。
関数が(スペルミスで)存在しないとか、オブジェクトが取得できないまま使っているとか。
on error resume next
if 0 = hogefail() then
  ' hogefail()が存在しないとエラー→Trueとなってしまう
if 0 = objectfail.count then
  ' objectfail の取得に失敗しているとエラー→Trueとなってしまう

ちなみに、[続き] に記載した test2.vbs や test3.vbs ならば"False"が表示される。
Integer の0は暗黙の型変換で文字列0に変換できるため。

| コメント(0) | トラックバック(0) | カテゴリ [ Windows : バッチ・スクリプト ]

'覚書。

配列 wk()に配列を作るのと、多次元配列 wk(x,y)を作る両方とも可能。

操作がそれぞれ違う(当然。。)

Dim wk(100)
 wk(0) = array("a","b","c")
 wk(1) = array("A","B","C")
 wk(2) = array("X","Y","Z")

ret = "wk()():"
for i=0 to 2
  for x=0 to 2
    ret = ret &vbCrLf & "("&i&")("&x&")=" & wk(i)(x)
  next
next
 
Dim wk2(100,2)
 wk2(0,0) = "a"
 wk2(0,1) = "b"
 wk2(0,2) = "c"
 wk2(1,0) = "A"
 wk2(1,1) = "B"
 wk2(1,2) = "C"
 wk2(2,0) = "X"
 wk2(2,1) = "Y"
 wk2(2,2) = "Z"

ret = ret & vbCrLf & "wk2(,):"
for i=0 to 2
  for x=0 to 2
    ret = ret &vbCrLf & "("&i&","&x&")=" &wk2(i,x)
  next
next
wscript.echo ret

| コメント(0) | トラックバック(0) | カテゴリ [ バッチ・スクリプト ]

VBScriptでファイルのダウンロードサンプル。
getHTTPasync() にURLを指定すれば可能。

MSXML2.ServerXMLHTTP.6.0 を使っているが、失敗したらMSXML2.ServerXMLHTTP やMSXML2.XMLHTTPに切り替えて再度試みている。

アーカイブ

ウェブページ

Get Firefox

Get Firefox Get Thunderbird
Powered by Movable Type 4.261

このアーカイブについて

このページには、過去に書かれたブログ記事のうちバッチ・スクリプトカテゴリに属しているものが含まれています。