vbscript - VB script ADODB.Stream creating infinite while loop -
i have vbs file. fetch records sql server 2000 database. using while loop, extract data column record set using steam object, create file & write content of zip file getting infinite loop.
please find db records sample
file_id file_name file_content(blob datatype)
23127376 file_1 afdfasdf253asdf6asdf52asd45fasf
23127377 file_2 afdfasdf253asdf6asdf52asd45fasf
23127378 file_3 afdfasdf253asdf6asdf52asd45fasf
23127379 file_4 afdfasdf253asdf6asdf52asd45fasf
23127380 file_5 afdfasdf253asdf6asdf52asd45fasf
23127381 file_6 afdfasdf253asdf6asdf52asd45fasf
23127382 file_7 afdfasdf253asdf6asdf52asd45fasf
23127383 file_8 afdfasdf253asdf6asdf52asd45fasf
23127384 file_9 afdfasdf253asdf6asdf52asd45fasf
23127385 file_10 afdfasdf253asdf6asdf52asd45fasf
23127386 file_11 afdfasdf253asdf6asdf52asd45fasf
23127387 file_12 afdfasdf253asdf6asdf52asd45fasf
23127388 file_13 afdfasdf253asdf6asdf52asd45fasf
23127389 file_14 afdfasdf253asdf6asdf52asd45fasf
23127390 file_15 afdfasdf253asdf6asdf52asd45fasf
23127391 file_16 afdfasdf253asdf6asdf52asd45fasf
please view code below
do set lobjstream = createobject("adodb.stream") lobjstream.mode = 3 ' admodereadwrite 3 read/write. lobjstream.type = 1 ' adtypebinary 1 binary data lobjstream.open sdfmb02_file_id_k = objrs("sdfmb02_file_id_k") logmessage = "[record] file id (sdfmb02_file_id_k) :: " & sdfmb02_file_id_k logfilte.writeline (logmessage) lobjstream.write objrs("dfmb02_file_blob_i").value lobjstream.savetofile zippath & objrs("dfmb02_file_n").value, 2 zipfile = zippath & objrs("dfmb02_file_n").value zipfldpath = left(objrs("dfmb02_file_n").value, len(objrs("dfmb02_file_n").value) - 4) objrs.movenext set lobjstream = nothing loop while objrs.eof = false
after sometime, infinite loop. please find log code.
[record] file id (sdfmb02_file_id_k) :: 23127376 [record] file id (sdfmb02_file_id_k) :: 23127377 [record] file id (sdfmb02_file_id_k) :: 23127378 [record] file id (sdfmb02_file_id_k) :: 23127379 [record] file id (sdfmb02_file_id_k) :: 23127380 [record] file id (sdfmb02_file_id_k) :: 23127381 [record] file id (sdfmb02_file_id_k) :: 23127382 [record] file id (sdfmb02_file_id_k) :: 23127383 [record] file id (sdfmb02_file_id_k) :: 23127384 [record] file id (sdfmb02_file_id_k) :: 23127385 [record] file id (sdfmb02_file_id_k) :: 23127385 [record] file id (sdfmb02_file_id_k) :: 23127385 [record] file id (sdfmb02_file_id_k) :: 23127385 [record] file id (sdfmb02_file_id_k) :: 23127385 [record] file id (sdfmb02_file_id_k) :: 23127385 [record] file id (sdfmb02_file_id_k) :: 23127385
could please assist on issue
you should handle checking eof in statement rather while statement. , can break loop checking last saved value.
dim lastsaved : lastsaved = "" while not objrs.eof set lobjstream = createobject("adodb.stream") lobjstream.mode = 3 ' admodereadwrite 3 read/write. lobjstream.type = 1 ' adtypebinary 1 binary data lobjstream.open dim check : check = objrs("sdfmb02_file_id_k") if lastsaved = check exit else lastsaved = check sdfmb02_file_id_k = check end if logmessage = "[record] file id (sdfmb02_file_id_k) :: " & sdfmb02_file_id_k logfilte.writeline (logmessage) lobjstream.write objrs("dfmb02_file_blob_i").value lobjstream.savetofile zippath & objrs("dfmb02_file_n").value, 2 zipfile = zippath & objrs("dfmb02_file_n").value zipfldpath = left(objrs("dfmb02_file_n").value, len(objrs("dfmb02_file_n").value) - 4) objrs.movenext set lobjstream = nothing loop
Comments
Post a Comment