ADODB.Recordsetを使用して複数ファイルを取得時にソートしたいです。
DefinedSizeで100000を指定しましたところ、ソートがうまくできませんでした。
⇒adoR.Fields.Append "F_Name", 200, 100000
DefinedSize の上限は255ぽいです。
数百というファイルを処理するときにこれでは処理できません。
解決策を教えて頂けないでしょうか
■質問追記
⇒adoR.Fields.Append "F_Name", 201 を指定しても同様にダメでした。
⇒前提としまして、このPGMはサブPGMです。親側から複数回実行されます。
arg3は親からの引数でシーケンス番号(1,2・・)を表しています。
つまり、親で\input\シーケンス番号を作成しておいて、子でsndからファイルを
取得して\input\シーケンス番号に格納します。つまりsndでファイルを昇順で取得
することができれば、格納先のシーケンス番号にも若番が入っていきます。
※※※※ソースを張りなおします※※※※
Dim fso,filefullpath
Set fso = createObject("Scripting.FileSystemObject")
filefullpath = fso.getParentFolderName(WScript.ScriptFullName)
Dim objfso, mySH,objFolder
Set mySH = CreateObject("WScript.Shell")
Set objfso = CreateObject("Scripting.FileSystemObject")
'取得元ディレクトリ
Set objFolder = objfso.GetFolder(filefullpath & "\snd")
'格納先ディレクトリ
Dim inpass : inpass = filefullpath &"\input"& arg3 &""
Dim p: p = 0
Dim adoR
Dim FilN
'ソートの準備
Set adoR = CreateObject("ADODB.Recordset")
adoR.Fields.Append "F_Name", 201
adoR.Open
For Each FilN In objFolder.Files
adoR.AddNew
adoR.Fields(0) = FilN
adoR.Update
Next
'ファイルパスで昇順
adoR.Sort = "F_Name ASC"
adoR.MoveFirst
Do Until adoR.EOF
If p < arg1 then
objfso.MoveFile adoR.Fields(0) , inpass
p = p + 1
adoR.MoveNext
end if
Loop
adoR.Close: Set adoR = Nothing
回答2件
あなたの回答
tips
プレビュー